Jor*_*meu 6 architecture scheduler heroku worker node.js
我正在开发一种服务,需要每五分钟为不同的用户分析来自社交媒体网络的数据.我正在node.js中开发它,我将在Heroku上实现它.
根据Heroku网站上的这篇文章,最好的方法是将调度程序的逻辑与工作者的逻辑分开.事实上,我们的想法是让一个dyno致力于安排任务以避免重复.这个dyno指示一个工人农场(根据需要n dynos)来完成任务.
这是这个架构的proc文件:
web: node web.js
worker: node worker.js
clock: node clock.js
Run Code Online (Sandbox Code Playgroud)
问题是如何在node.js中实现它.我用Google搜索,建议使用消息队列系统(如IronMQ,RabbitMQ或CloudAMQP).但我正在尝试设置我的代码和应用程序简单,并且需要附加组件.
问题是:有没有办法直接从我的调度程序(时钟)与工作人员dynos进行通信?
谢谢你的回答.
如果我理解正确的话,您想将时钟作为一个应用程序旋转,然后将工作人员作为单独的应用程序旋转?当然,有一个直接的方法。您打开从时钟应用程序到工作人员应用程序的连接。
例如,让每个工作人员打开与时钟的客户端套接字连接。然后时钟可以与它们通信并转发命令。
或者使用WebRTC。这样,工人们就能与时钟对话,但他们也可以互相对话。
或者在工作线程上创建一个(经过身份验证的)HTTP(s) REST 端点,它将在其中接收任务。就像,POST /tasks将在工作人员上创建一个任务。如果任务很短,它可以立即回复,以便时钟知道工作已完成。或者,如果这是一个较长的任务,它可以确认它,但稍后调用时钟上的端点来表示它已完成,类似于PUT /tasks/32.
或者更直接地,打开与时钟的直接网络连接,例如在工作程序启动时(反之亦然)。dgram在工作器和时钟之间使用和发送 UDP 消息。
无论如何,我也相信建议像 RabbitMQ 这样的 MQ 的人更好地推动作业/任务。然后,它可以根据需要分配任务,并根据unacked作业队列的计数,在需要时启动更多工作线程。
但你的问题很广泛,所以为了获得更多细节,你可以提供更多细节。
| 归档时间: |
|
| 查看次数: |
2051 次 |
| 最近记录: |