node.js - 使用流式 JSON 连接两个 Node/Express 应用程序

标签 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”模型。任何可以提供的 sample 都会很棒。

最佳答案

这是消息队列的最佳用例之一。您基本上创建一个用于由翻译服务翻译的数据的队列,以及一个已翻译并准备发送回用户的数据的队列。您的 REST 层和翻译层发布并订阅适用的队列,并且可以处理传入的数据。这具有解耦 REST 和翻译层的额外好处,这意味着稍后添加多个翻译层来处理额外的数据变得微不足道。如有必要,请加载。

看看RabbitMQ ,但有plenty of other options也是如此。

关于node.js - 使用流式 JSON 连接两个 Node/Express 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27489124/

相关文章:

node.js - 重复的 http post 请求被延迟

javascript - Object.defineProperty 有时会抛出异常

javascript - 如何从数组中获取索引 - graphql?

node.js - 我应该使用 REST API 还是 Socket.io 作为地理定位应用程序?

java - 为什么 Jackson 序列化时省略了小数点为零的 Double?

Java 字符串与流

Php 套接字与流

javascript - forEach 循环有序

node.js - 发送 postman 数组中的对象数组始终为空

java - 带有嵌入式 Jetty 服务器的 REST 资源