首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于ZeroMQ的分布式任务处理

基于ZeroMQ的分布式任务处理
EN

Stack Overflow用户
提问于 2015-07-06 14:34:39
回答 1查看 2.6K关注 0票数 0

我试图使用ZMQ推拉来构建一个分布式任务处理系统。这是在Java中通过队列和侦听器使用JMS实现的;空闲的侦听器可以接收队列的消息并执行it.Once --队列是跨节点分布的,这就像负载平衡器一样。

使用ZMQ (使用Python -不想现在使用芹菜),我正在尝试推拉。有不同的处理时间的工人。然而,即使是当一个工人是自由的,任务是严格循环的方式。这就是说,不管工人是否自由,任务都是以循环的方式进行的。

有什么方法可以用ZMQ模式来模拟分布式队列吗?这样,我就可以在每个节点中有一个工人‘轮询’队列,并将消息从队列中取出并处理。

EN

回答 1

Stack Overflow用户

发布于 2016-01-20 09:12:10

正如0MQ创始人彼得·辛詹斯这个答案中指出的那样,推挽机制不是一个负载均衡器,而是一个简单的循环分配器。这是docs 还在那里中的一个错误。

尽管如此,对于负载平衡模式,您需要在体系结构的中间添加一个broker。正如杰森在评论中指出的那样,这一点在官方指南中得到了很好的解释。Python中也有一些例子。

主要的想法是让工人在他们自由地获得更多的工作时,向经纪人发送一个小的“就绪”消息。代理轮流保存“指针”以释放队列中的工作人员。当他从客户端接收到一个新的作业请求时,他也会将该请求传播到队列中的第一个空闲工作人员,这将从队列中弹出。正如您在上面的图片中所看到的,代理利用路由器套接字来避免阻塞行为并获得适当的负载平衡。一个小的附加细节是,如果队列中没有空闲的工作人员,代理不会轮询客户端。

这是我所知道的用ZeroMQ实现负载平衡模式的最简单方法。这与队列中新作业的“轮询”并不完全一样,但我认为这正是您所需要的。另外,请注意这是--实际上是--最简单的方式,即它根本不可靠,而且不像现在这样扩展得很好。如果您也需要可靠性,我建议您彻底阅读官方指南第四章

顺便提一句,也许你应该认真考虑芹菜来完成这项任务。我真的爱上了ZeroMQ,然而这正是芹菜非常擅长的东西,在我看来,学起来并不像有人可能会认为那样难。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31248615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档