为了账号安全,请及时绑定邮箱和手机立即绑定

了解高级ZeroMQ套接字类型

了解高级ZeroMQ套接字类型

芜湖不芜 2019-12-06 09:35:45
我已经阅读了0MQ指南,并且了解了基本的套接字类型:PUSH/ PULL,REQ/ REP和PUB/ SUB。我对ROUTER/ DEALER和X-套接字(例如XSUB/ XPUB,XREQ/ XREP)感到非常困惑。这些套接字类型的用例是什么?
查看完整描述

1 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

琐碎的原型

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

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

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

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

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

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

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

ROUTERDEALERDEALER/ROUTER

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

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

XPUBXSUB用例

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

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


复杂系统

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

为了安排代码,值得首先花时间在本书上,而不是相反。

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


查看完整回答
反对 回复 2019-12-06
  • 1 回答
  • 0 关注
  • 518 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信