프로젝트를 현재 모 놀리 식 상태에서 마이크로 서비스 아키텍처로 이동하려고합니다. 프로젝트는 Node.js에 있으므로 모듈을 사용하여 Seneca.js을 조사하기 시작했습니다. 마이크로 서비스에 이미지 조작 (자르기, 크기 조정 등)이 가장 현명한 첫 단계로 보였습니다. 이제는 응용 프로그램의 속도를 크게 떨어 뜨리기 때문입니다.마이크로 서비스 간 파일 공유
응용 프로그램이 모 놀리 식 일 때 특정 파일을 파일 조작 논리로 전달하는 데 문제가 없습니다. 단지 로컬 저장 디스크에서 파일을 읽는 것뿐입니다. 그러나 마이크로 장치를 사용하면 확장 성을 기억하면 더 어려워집니다. 물론, 이미지 조작 마이크로 서비스를 구축하고 동일한 호스트 컴퓨터 내에서 까지 확장하고 내가 필요로하는 디렉토리를 공유 할 수 있으므로 로컬 디스크에서도 읽을 수 있습니다.
내가 다른과 다른 시스템에서 실행하고 확장 할 수있는 진정한 확장 성 microservice, 원하는 경우 가 동일한 파일 시스템를 공유하지 않는 IP를-adresses 무엇? 아마도 노드의 스트리밍 API를 활용하여 HTTP 또는 TCP 또는 소켓을 통해 이러한 파일을주고받을 수 있다고 생각했습니다.
내가 배운 한, Seneca.js는 올바른 방법으로 을 할 수 없습니다.
fs.createReadStream('/files/hello.jpg')
.on('data', function(data) {
seneca.act({ role: 'file', cmd: 'chunk', data: data }, cb);
})
.on('end', function(err) {
seneca.act({ role: 'file', cmd: 'end' });
})
.on('error', function(err) {
seneca.act({ role: 'test', cmd: 'error' });
});
을 그리고 덩어리에 나타납니다 : 물론, 난과 같이 Seneca.js를 통해 이미지 조작의 서비스에 주요 응용 프로그램에서 파일을 보낼 수
seneca.add({ role: 'file', cmd: 'chunk' }, writeToFileCb);
seneca.add({ role: 'file', cmd: 'end' }, endFileWriteCb);
을하지만이 방법은 추한 및 휠 보인다 - 예방.
또 다른 방법과 같이, 일부 HTTP 서버에 와서 multipart/form-data
또는 application/octet-stream
로 파일을 전송하는 것입니다 :
fs.createReadStream('file.json')
.pipe(request.post('http://image-manipulator'))
하지만이 microservice 통신을위한 프레임 워크를 개혁 의미한다. 전체적으로 분산 마이크로 서비스와 가능한 프레임 워크 간의 파일 공유에 대한 자문을 구합니다.
멋진 형용사 - * wheel-reinventive *. 나는 그것을 기억할 것이다. –