Sockets 如何使用ZeroMQ有效地建立点对点通道?

Sockets 如何使用ZeroMQ有效地建立点对点通道?,sockets,zeromq,messaging,distributed-system,Sockets,Zeromq,Messaging,Distributed System,我在使用ZeroMQ建立异步点对点通道时遇到问题 我构建点对点通道的方法是,它生成尽可能多的ZMQ\u PAIRsocket,最多生成网络中对等方的数量。因为ZMQ\u PAIRsocket确保了两个对等点之间的独占连接,所以它需要相同数量的对等点。我的第一次尝试如下图所示,表示两个对等点之间的配对连接 但上述方法的问题在于,每个配对套接字都需要一个不同的绑定地址。例如,如果网络中有四个对等点,则每个对等点应至少有三个(TCP)地址来绑定其余对等点,这是非常不现实和低效的。 (我假设对等方在其

我在使用ZeroMQ建立异步点对点通道时遇到问题

我构建点对点通道的方法是,它生成尽可能多的
ZMQ\u PAIR
socket,最多生成网络中对等方的数量。因为
ZMQ\u PAIR
socket确保了两个对等点之间的独占连接,所以它需要相同数量的对等点。我的第一次尝试如下图所示,表示两个对等点之间的配对连接

但上述方法的问题在于,每个配对套接字都需要一个不同的绑定地址。例如,如果网络中有四个对等点,则每个对等点应至少有三个(TCP)地址来绑定其余对等点,这是非常不现实和低效的。
(我假设对等方在其他地址中只有一个唯一的地址。例如,
tcp://*:5555

似乎除了使用包含一些消息代理集的不同模式之外没有其他方法,例如
XREQ/XREP

(我有意避免使用基于代理的方法,因为我的应用程序将在对等方之间大量交换消息,这通常会导致代理进程的性能瓶颈。)

但我想知道是否有人使用
ZMQ\u PAIR
socket有效地构建点对点通道?或者有没有一种方法可以绕过为多个要绑定的
ZMQ\u对
套接字提供不同的主机IP地址?

Q:如何有效地建立。。。好, 鉴于上述叙述,关于“如何有效……”的故事(关于什么和如何实际衡量所需有效性的指标可能在稍后得到进一步澄清)变成了另一个问题-“我们能否重新考虑ZeroMQ信令/消息传递基础架构,以便在不使用
tcp://
基于传输类的拓扑实际需要的IP地址(端口)的情况下工作?

在明确表示的每个主机/节点不超过一个
IP:PORT#
的限制下(如果不是最昂贵的资源,那么架构/设计就是最昂贵的资源),我们必须克服很多困难

值得注意的是,任何这样的尝试都将付出额外的代价。不会有任何魔杖“绕过”上述的本金限制。因此,请准备好支付成本

这让我想起了电信公司的一个项目,在该项目中,a以类似的方式运行,具有类似的原始动机。每个节点都有一个
ssh/sshd
服务设置,其中本地端口转发允许只公开一个可公开访问的IP:port#access point,其余的都在“内部”实现“通过ssh隧道的所有拓扑链接的网格不仅是因为加密服务,而且是因为能够保持所有本地端口向特定远程端口的转发,作为如何在所有服务节点之间设置和操作此类专用对等链接的一种手段,但是只有一个公共访问IP:每个节点有一个端口

如果没有其他可行的方法
PUB/SUB
被逐出,因为在较旧的ZeroMQ/API版本中,实际流向每个终端节点的流量,主题过滤得到处理,但在
SUB
端,这是安全和网络部门都不愿意支持的,或者是因为
PUB-端,在较新的ZeroMQ/API版本中,主题过滤器在发送方进行处理。地址处理、动态网络对等(重新)发现、维护、资源规划、故障恢复……是的,似乎没有任何简单的捷径接近于上述“石器时代”
ssh/sshd
-使用ZeroMQ进行端口转发,仅针对此类本地端口运行,可以节省您的时间。

无论如何,祝你狩猎好运