[英]another reliable way to do PULL-PUSH sync in ZeroMQ
如果使用的是PUSH套接字,则会发现第一个连接的PULL套接字将捕获不公平的消息共享。 仅当所有PULL套接字都成功连接后,消息的准确轮换才会发生,这可能需要几毫秒的时间。 作为较低的数据速率的推/拉的替代方法,请考虑使用ROUTER / DEALER和负载平衡模式。
因此,在PUSH / PULL中进行同步的一种方法是使用负载平衡模式。
对于下面的这种特定情况,我想知道是否还有另一种同步方法:
我可以将worker中的PULL端点设置为阻塞,直到成功建立连接为止,然后通过worker的PULL端点向“接收器”发送一条特殊消息。 在“接收器”收到#worker的特殊消息后,“接收器”将带有REQ-REP的消息发送到“通风机”,以通知所有工作人员已准备就绪。 “通风机”开始将工作分配给工人。 它可靠吗?
图片是从这里
是的,只要Sink
知道要告诉Ventilator
开始发送消息的Ventilator
之前要等待的Workers
数量。 存在一个问题,即如果Workers
在Sink
连接之前启动,它们是否会通过特殊消息-但是您可以通过让他们继续发送特殊消息,直到他们开始从Ventilator
获取数据来解决这些问题。 如果这样做, Sink
当然会忽略接收到的所有重复项。
当然,这与Workers
与Ventilator
存在实时有效的连接并不完全相同,但是它本身可能会发出Workers
收到的特殊的不做任何信息。 当他们收到其中一个时,便可以开始向Sink
发送特殊消息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.