1 回答
TA贡献1873条经验 获得超9个赞
琐碎的原型
ZeroMQ“ 套接字 ”听起来像是一个面向套接字的设备,但是仔细看,这个智能库增加了一种形式化的通信模式(该模式使用了真正的套接字),该模式具有分层的设计以内部解决诸如内部弹性缓冲之类的细节。 ,内部1:N公平队列发送/轮询,内部ioThread负载平衡,仅举几例。
在这些内部智能子系统之上,又是基本的形式化通信模式-尽可能接近地命名,以类似于人类的行为-像(一个)- PUB
拼写+(其他)-- SUB
抄写-ZeroMQ 建立了“基础最强大的消息传递方案的最低层”。
作为一个好帮手,而不是说一PUB
- 插槽,一个可以选择想象SUB
,XPUB
或者DEALER
是相当的实体-与- “ 行为 ”,坐在电话线的一端,谁具有一定的硬连线的习惯,它可以在电话中使用。
因此,一些实体可以讲一个到另一个,都PUB
可以说给一个或多个SUB
(S) -不知道有多少/如果有的话(是)连接到他的,好了,到任何他的电话线(是的,PUB
可以有很多传出的电话线-有关详细信息,请检查可用的ZeroMQ传输类,这些类PUB
可以“暴露来电”或以其他方式部署-(哦,是的,甚至PUB
可以“摘他的一条电话线”并拨打( .connect()朝向选定的SUB
或XSUB
对手方!酷...(是的,因为许多内置的ZeroMQ功能))-所有这些都是并行的。
SUB
可以根据自己的判断来决定并订阅过滤器,从传入的电话线上听到或听到不听到的内容。自然地,其他一些人根本不具备预接线的能力,无法相互通电话并有意义地进行可行的对话,但可以与“友好”(行为兼容)的交易对手(a PAIR
,例如,有一个唯一的机会去PAIR
打电话+与另一个人说话- 伙伴)。
为了更深入地了解这些构建基块(包括XPUB
/ XSUB
动机),为什么他们必须扩展普通PUB
/ SUB
原始,最好的建议方法是阅读Pieter Hintjens的书“ Code Connected,Volume 1”(可下载pdf)。
(恕我直言,这是一本必读的书,不仅涉及ZeroMQ本身的智能特性,而且还涉及思维方式和其他启发性思想的转变)。
ROUTER
/ DEALER
&DEALER
/ROUTER
这些形式的交流模式在图37中得到了很好的说明,并在该书中进行了讨论。值得一读,而不是在这里说几句话。
一ROUTER
到DEALER
示例(1对N的用例),其中一次服务器会谈异步多个工人可以打开“倒挂”得到一个非常有用的N对1的架构,其中各种客户交谈,一台服务器,并做这是异步的。因此,确切的用例由您的设计需求给出。
XPUB
/ XSUB
用例
一旦进入ZeroMQ基本元素之间的“ 中间媒介 ”连接模式,XPUB
/ XSUB
代理“设备”将提供一项附加服务,而不仅仅是作为.bind()
&的代理.connect()
。它还“interpretes”的消息内容(检查传入zmq.SUBSCRIBE
-s及接送“时间朝向真实PUB
经由代理自己-lisher侧XSUB
通过读取)XPUB
插座side.This是主要使用情况XSUB
和XPUB
这样,逐个掌握ZMQ武库本身并不是目标。它是一种乐高风格的构建模块套件,用于设计特定于项目的分布式消息传递模式,可以根据更复杂的需求进行协作-在单节点故障,性能可伸缩性,自适应重配置和许多其他功能之后进行自我修复其他。
复杂系统
典型的现实世界应用程序不仅要重用基本的PAIR
/ PAIR
,XREQ
/ XREP
,...基元,还需要走得更远,在这些基元中适当地适合您的高层设计需求,并在上面添加行为策略,在您的全局设计控制下使用这些较低级别的原型。
为了安排代码,值得首先花时间在本书上,而不是相反。
这将为您节省很多Aha!片刻之后。
- 1 回答
- 0 关注
- 577 浏览
添加回答
举报