微服务 文件服务器,在微服务之间共享文件

我开始研究Seneca.js,特别是它的seneca-mesh模块 . 将图像处理(裁剪,调整大小等)移动到微服务中似乎是最明智的第一步,因为它现在大大减慢了我的应用程序 .

当应用程序是单片时,将某些文件传递到文件操作逻辑没有问题 - 只需从本地存储磁盘读取它 . 但是,对于微服务,如果我们牢记可扩展性,那就变得更加困难 . 当然,我可以构建一个图像处理微服务,在同一台主机内扩展它,并在它之间共享我需要的目录,因此它们也可以从本地磁盘读取 .

如果我想要一个真正可扩展的微服务,可以在不同的机器上运行和扩展,而不同的IP地址不共享相同的文件系统,该怎么办?我想也许我可以利用Node的流API并通过HTTP或TCP或套接字来回发送这些文件,或者你命名它 .

据我所知,Seneca.js不能以正确的方式做到这一点 . 当然,我可以通过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.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'))

但这意味着要重新构建微服务通信框架 . 总而言之,我要求就分布式微服务和可能的框架之间的文件共享提出建议 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值