2013-12-18 30 views
3

我看着ZMQ PUSH/PULL套接字,尽管我非常喜欢简单性(特别是与通过UDP套接字在系统上实现的自定义分段/确认相比),我想有自定义负载平衡,而不是ZMQ PUSH/PULL套接字使用的天真循环(我相信)。ZMQ套接字与自定义负载平衡

我是ZQM的新手,不确定如何使用ZMQ套接字来实现它,如果甚至可能的话。我理想的是,服务PUSH套接字(或其他套接字类型)决定(根据消息等)发送消息的机器。

所以我的问题是:

  1. 这可能吗?
  2. 如果是这样,那么ZMQ模式最适合它吗?
  3. 如何使用这些插座?

回答

3

如果您想要自定义路由,您必须使用ROUTER套接字,然后使用基于IDENTITY的路由。 有一个example in the Guide说明如何使用ROUTER套接字构建简单的LRU路由(即行为与PUSH相同)。你只需要编写自己的逻辑来决定哪个工作者IDENTITY获取每条消息。

+0

因此,假设我有一个“主”向多个工作节点发送工作......我将ROUTER和“客户端”REQ套接字都放在同一个节点上吗?负载平衡器会选择合适的工作节点? – mtahmed

+0

@mtahmed不,服务器是ROUTER,工作者(客户端)是REQ,或最好是异步DEALER,它们驻留在单独的节点上,而不是同一个节点上。 – raffian

+1

zmq不在乎,你可以让它们在最适合你的地方使用。如果您的工作人员位于多个节点上,则负载平衡器不能与所有工作人员位于同一节点上。 – minrk