【问题标题】:Connecting two Node/Express apps with streaming JSON使用流式 JSON 连接两个 Node/Express 应用程序
【发布时间】:2015-02-13 20:22:20
【问题描述】:

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

一个是我的 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”模型。任何可以提供的样品都会很棒。

【问题讨论】:

  • 您可以执行常规的流式 HTTP 请求。

标签: node.js rest stream microservices


【解决方案1】:

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

看看RabbitMQ,也有plenty of other options

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 2017-12-31
    • 1970-01-01
    相关资源
    最近更新 更多