gpt4 book ai didi

node.js - 如何在 Heroku 上使用 Node.js 通信 Web 和 Worker dynos?

转载 作者:IT老高 更新时间:2023-10-28 21:57:08 25 4
gpt4 key购买 nike

Web Dynos 可以处理 HTTP 请求

Web Dynos 可以处理它们,Worker Dynos 可以通过它处理工作。

但我不知道如何让 Web DynosWorker Dynos 相互通信。

例如,我想接收 Web Dynos

的 HTTP 请求

,发送给 Worker Dynos

,处理作业并将结果发送回Web Dynos

,在网络上显示结果。

这在 Node.js 中可行吗? (使用 RabbitMQ 或 Kue 等)?

我在 Heroku Documentation 中找不到示例

或者我应该在 Web Dynos 中实现所有代码并仅缩放 Web Dynos

最佳答案

作为 background jobs and queuing 上的高级文章建议,您的网络测功机将需要通过中间机制(通常是队列)与您的工作人员测功机进行通信。

要完成听起来您希望做的事情,请遵循以下一般方法:

  • Web dyno 接收到 Web 请求
  • Web dyno 将作业添加到队列中
  • Worker dyno 从队列中接收作业
  • Worker dyno 执行作业,将增量进度写入共享组件
  • 浏览器端轮询请求来自网络测功机的作业状态
    • Web dyno 查询共享组件以获取后台作业的进度并将状态发送回浏览器
  • Worker dyno 完成作业的执行并在共享组件中将其标记为完成
  • 浏览器端轮询请求来自网络测功机的作业状态
    • Web dyno 查询共享组件以获取后台作业的进度并将完成状态发送回浏览器

就实际实现而言,我对 Node.js 中最好的库不太熟悉,但是将这个过程粘合在一起的组件可以在 Heroku 上以 add-ons 的形式获得。 .

队列:AMQP 是一个得到很好支持的队列协议(protocol),CloudAMQP插件可以作为您的网络和工作人员 dynos 之间的消息队列。

共享状态:您可以使用 Postgres 之一用于共享正在处理的作业状态或更高性能的附加组件,例如 MemcacheRedis .

因此,总而言之,您必须使用中间附加组件在 Heroku 上的 dyno 之间进行通信。虽然这种方法涉及更多的工程设计,但其结果是一个适当解耦和可扩展的架构。

关于node.js - 如何在 Heroku 上使用 Node.js 通信 Web 和 Worker dynos?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11429774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com