我有一个具有全面通信模式的应用程序。我认为在每个N个进程上都有一个PULL
套接字和一个PUSH
套接字是有意义的,并且所有PUSH
个套接字都连接到所有PULL
个套接字。但是,我不是以循环方式选择接收器,而是根据具体情况选择性地发送给特定的接收器。例如,如果我想从进程的PUSH
套接字 - i
向进程的PULL
套接字发送消息 - {{1你知道怎么做吗?
关注1:
我能想到的一个解决方案是在每个进程上创建一个j
套接字,每个ROUTER
套接字将连接到其他进程的所有ROUTER
套接字(全部 - 全部连接)。那会有用吗?
关注2:
我能想到的另一个解决方案是使用ROUTER
和ROUTER
套接字。也许我可以让每个进程创建一个DEALER
套接字来连接到每个其他进程的DEALER
套接字(多个一对一连接)。这是一个很好的解决方案吗?
答案 0 :(得分:0)
如果确实是完全(内部)网状星型拓扑结构的朋友,那么带有TOPIC过滤器的PUB/SUB
可能会很好地适用于您的场景。
所有SUB
- s .connect()
到PUB
- s,.bind()
,反向.bind()/.connect()
- s也是可行的。较新的版本进行PUB端TOPIC过滤,因此在一些合理大小的 N
-s中,该方案就足够了。 .setsockopt()
调整显而易见且需要。
由于没有提到延迟,攻击或消息大小,因此很难将全网状星形拓扑结构的缺点和优点与针对"软控制的旋转传递或其他进行比较低资源消耗方法。
(我仍在使用 ZeroMQ 2.1.11 并喜欢这样做)
也许还喜欢this new, custom-made scalable formal communication pattern design example - 对于Martin SUSTRIK的nanomsg可爱引擎来说,这是一个有趣的方法,如果需要超过~10k +代理商的话。