ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-如何在具有多个IP的计算机上控制ZeroMQ数据包的源IP地址?

2019-11-10 23:00:35  阅读:225  来源: 互联网

标签:zeromq linux python


Python标准库的socket.create_connection()方法具有一个源地址选项,用于控制连接使用哪个源IP.

给定一台具有多个地址的机器,如何使用Python ZeroMQ套接字执行相同的操作?

在这种情况下,我一直在使用Linux的iproute2 ip addr add创建地址和ZeroMQ PUB / SUB套接字原型.

解决方法:

好吧,将ZeroMQ读为套接字-“对手”有点棘手(不是)

为什么?

古典套接字是一种免费资源.

ZeroMQ是行为和行为原理(更好的分布式行为)的相当复杂的层次结构,可帮助设计智能分布式计算系统,而无需涉及控制风暴中实际事件流的底层(ZeroMQ精心抽象)的细节.在恶劣的条件下,所有分布式计算系统都必须面对(并且必须相应地在低层进行处理,如果要实现ZeroMQ承诺保留的高层抽象,并且使设计师的思想更加专注于/她的核心应用程序部分,不是重新设计轮子(带有所有的试验和错误),以在操作系统资源上拉线,并摇动系统服务以仅收集一些低挂的水果).

由于这些原因,最好直接忘记ZeroMQ是“类似插座的东西”

在不到五秒钟的时间内实现ZeroMQ层次结构

1:
ZeroMQ承诺可以轻松地重用一些琐碎的可伸缩形式化通信模式原型,这些原型可提供特定的分布式行为{PUB / SUB |推/拉|对/对| XPUB / XSUB | … | REQ / REP}.

2:
除了仅使用无设备的inproc://传输类的情况外,在所有其他情况下,ZeroMQ需要一个或多个可调“引擎”的实例-Context(nIOthreads = N),N> = 1 .

3:
有了这个,任何(未来的socket)访问点都可以实例化,自诞生之日起就具有行为原型:

aSubscribeCHANNEL = aLocalCONTEXT.socket( zmq.SUB )      # this is NOT a <SOCKET>
#                                 ^^^^^^__________________ even it was typed in

4:
在本地“引擎”内部准备好“访问点”实例后,可以使用一个或多个(是的,更多…哇!)将其实现物锁定在外部现实中,这意味着会有更多传入的拉线进入/从单个访问点“行为节点”(behaviour-node)发出的哨声)调用以下方法之一:
.bind(< transport-class>://< a-class-specific-address>)
要么
.connect(< transport-class>://< a-class-specific-address>)

5:
当且仅当具有任何匹配行为配对的第一个实时.connect()-RTO就绪访问点B允许.bind()-RTO的访问点A“被访问”时,ZeroMQ消息/信令原型才会获得现场直播(命名它也是一个套接字,可能是出于历史原因,以简化说明)

 (出于明显的原因,PUB / PUB永远不适合,而PUB / SUB和许多其他行为-原型对将并且做得很好,并且形成相互“兼容”的行为,这些行为最终将继续存在并保持如此)

那么,在具有多个地址的机器上,如何使用Python ZeroMQ套接字执行相同的操作?

只需在调用中使用完全合格的规范即可
.bind(“ {tcp | pgm | epgm}://< ip>:< port#>”)方法,操作就完成了.

这么简单

不错,不是吗?

在性能调整,延迟减少和安全性调整的掩盖下,还有许多令人惊喜的惊喜.

标签:zeromq,linux,python
来源: https://codeday.me/bug/20191110/2015879.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有