【发布时间】:2012-03-24 14:43:35
【问题描述】:
我有一个使用 python 和 zeromq 的工作应用程序,我想对其进行优化。
简单地说,一个主节点向所有工作人员(大约 200 个)发送相同的请求,然后收集答案。根据答案,它会向一个节点发送回消息,该节点会回复。
现在我实现了一个非常简单的模式。每个工作人员都有一个 REP 套接字,服务器有一个 REQ 套接字列表。服务器遍历所有发送一般消息的套接字,然后遍历所有套接字以收集答案。最后,根据回答,服务器选择一名工人,向其发送消息并等待答复。
当然,这很慢。最慢的部分是发送 200 次相同的消息。收集也很慢。我发现分配任务和收集答案的解决方案可以实现负载平衡,这不是我需要的。我需要每个工作人员都收到消息并做出响应。
针对这种情况推荐的模式是什么?
谢谢
【问题讨论】:
-
什么是“针对这种情况推荐的模式是什么?”
-
例如,如果您必须处理独立的任务,您可以使用呼吸机模式来分配任务,如下所述taotetek.wordpress.com/2011/02/02/…
-
我知道什么是模式。您实际上还没有解释您在做什么、需要当前解决方案的哪些部分,甚至没有解释为什么分发您的消息很慢。 “分发东西很慢”的经典解决方案是不分发东西,或者少做。
-
感谢您再次尝试帮助我思考问题,但请给予一些信任。我需要分发,因为工作人员需要访问不适合一个节点的 RAM 的信息(并且访问磁盘很慢)。分发消息比到每个节点的往返行程要长两个数量级。这是有道理的,因为我做了 200 次。该往返包括通过网络堆栈的所有开销。我想知道是否有一个模式批处理所有这些调用。
标签: python distributed zeromq