使用流式JSON连接两个Node / Express应用程序

时间:2014-12-15 16:58:01

标签: node.js rest stream microservices

我目前有两个正在运行的应用...

一个是我的REST API层,它为前端提供了许多服务。 另一个是翻译应用程序,它可以被提供一个JSON对象(通过http POST调用),对该对象执行一些数据转换和映射并将其返回到REST层

我的情况是我想为大量对象做这件事。我想要的流程是:

用户以特定格式请求100,000个对象 - > REST层从数据库中检索 - >将每个JSON数据对象传递给 翻译服务以执行格式化 - >将每一个传递给  REST层 - > REST层将新对象返回给用户。

我不想做的是在100,000个不同的呼叫上调用tranlate.example.com/translate,或者通过1个巨大的POST请求传递兆字节的数据。

所以显而易见的答案是将数据流式传输到翻译应用程序,然后再将数据流传回。

似乎有很多解决方案来跨应用程序传输数据:打开websocket(socket.io),打开两者之间的原始TCP连接,或者因为Node的HTTP请求和响应数据实际上是一个流我可以利用它然后在成功翻译后发出JSON对象

我的问题是,这里有最佳实践来在两个应用之间传输数据吗?似乎我应该使用http(req,res)流并保持一个长期连接打开以保留“REST' REST”。模型。任何可以提供的样品都会很棒。

1 个答案:

答案 0 :(得分:4)

这是消息队列的最佳用例之一。您基本上为翻译服务翻译的数据创建一个队列,并为已经翻译并准备好发送回用户的数据队列创建一个队列。您的REST层和转换层可以发布和订阅适用的队列,并可以在数据进入时对其进行处理。这样可以实现解耦REST和转换层的额外好处,这意味着稍后添加多个转换层以处理其他内容变得微不足道。必要时加载。

查看RabbitMQ,但也有plenty of other options