了解高级ZeroMQ套接字类型

托马斯·约翰逊

我已经阅读了0MQ指南,并且了解了基本的套接字类型:PUSH/ PULLREQ/REPPUB/ SUB

我对ROUTER/DEALERX-套接字(例如XSUB/ XPUBXREQ/ XREP感到非常困惑

这些套接字类型的用例是什么?

用户名

琐碎的原型

ZeroMQ“套接字”听起来像是一个面向套接字的设备,但是仔细看,这个智能库增加了一种形式化的通信模式(该模式使用了真正的套接字),该模式具有分层的设计以内部处理诸如内部弹性缓冲之类的细节。 ,内部1:N Fair-Queue-Send / Polling,内部ioThread负载平衡,仅举几例。

在这些内部智能子系统之上,又是基本的形式化通信模式-尽可能接近地命名,以类似于人类的行为-像(一个)-PUB拼写+(其他)--SUB抄写-ZeroMQ建立了“基础最强大的消息传递方案的最低层”。

作为一个好帮手,而不是说一PUB-插槽,一个可以选择想象SUBXPUB或者DEALER是相当的实体-与- “行为坐在电话线的一端,谁具有一定的硬连线的习惯,它可以在电话中使用。

因此,一些实体可以讲一个到另一个,都PUB可以说给一个或多个SUB(S) -不知道有多少/如果有的话(是)连接到他的,好了,到任何他的电话线(是的,PUB可以有很多传出的电话线-有关详细信息,请检查可用的ZeroMQ传输类,这些类PUB可以“暴露来电”或以其他方式部署-(哦,是的,甚至PUB可以“摘他的一条电话线”并拨打( .connect()朝向选定的SUBXSUB对手方!酷...(是的,因为许多ZeroMQ内置功能))-所有这些都是并行的。

SUB可以根据自己的判断来决定并订阅过滤器,从传入的电话线上听到或听到不听到的内容。自然地,其他一些人根本不具备预接线的能力,无法相互通电话并有意义地进行可行的对话,但可以与“友好”(行为兼容)的交易对手(a PAIR,例如,有一个唯一的机会去PAIR打电话+与另一个人说话-伙伴)。

为了更深入地理解这些构建基块(包括XPUB/XSUB动机),为什么他们必须扩展普通的PUB/SUB原始的,最好的建议方法是阅读Pieter Hintjens的书“ Code Connected,Volume 1”(可从pdf下载)

(恕我直言,这是一本必读的书,不仅涉及ZeroMQ本身的智能特性,而且还涉及思维方式和其他启发性思想的转变)。

ROUTER/ DEALERDEALER/ROUTER

这些形式的交流模式在图37中得到了很好的说明,并在该书中进行了讨论。值得一读,而不是在这里说几句话。

ROUTERDEALER示例(1对N的用例),其中一次服务器会谈异步多个工人可以打开“倒挂”得到一个非常有用的N对1的架构,其中各种客户交谈,一台服务器,并做这是异步的。因此,确切的用例由您的设计需求给出。

XPUB/XSUB用例

一旦进入ZeroMQ基本元素之间的“中间媒介”连接模式,XPUB/XSUB代理“设备”将提供一项附加服务,而不仅仅是作为.bind()的代理.connect()它还“interpretes”的消息内容(检查传入zmq.SUBSCRIBE-s及接送“时间朝向真实PUB经由代理自己-lisher侧XSUB通过读取)XPUB插座side.This是主要使用情况XSUBXPUB

这样,逐个掌握ZMQ武库本身并不是目标。它是一种乐高风格的构建模块套件,用于设计特定于项目的分布式消息传递模式,可以根据更复杂的需求进行协作-在单节点故障,性能可伸缩性,自适应重配置和许多其他功能之后进行自我修复其他。

图60只是一张图片:

在此处输入图片说明

复杂系统

典型的现实世界应用程序不仅要重用基本的PAIR/ PAIRXREQ/ XREP,...基元,还需要走得更远,这些基元适当地适合您的较高级设计需求,并在其上添加行为策略,在您的全局设计控制下使用这些较低级别的原型。

为了安排代码,值得首先花时间在本书上,反之亦然。

这将为您节省很多Aha!片刻之后。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章