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

我目前有两个应用程序运行…

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

我的情况是我想为大量的对象做这个。 我想要的stream程是:

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

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

所以很明显的答案是将数据stream式传输到翻译应用程序,然后将数据stream式传回。

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

我的问题是在这里有两个应用程序之间stream数据的最佳做法吗? 看来我应该使用http(req,res)stream,并保持一个长期的连接打开,以保留“REST”模型。 任何可以提供的样本都会很好。

这是消息队列的最佳用例之一。 你基本上为翻译服务翻译的数据创build一个队列,并且为已经翻译并准备好发回给用户的数据创build一个队列。 您的REST层和翻译层发布和订阅适用的队列,并且可以在数据进入时对其进行处理。这还具有解耦REST和翻译层的益处,这意味着稍后添加多个翻译层以处理额外的如有必要加载。

看看RabbitMQ ,但也有很多其他的select 。