最后更新:2022-07-04 08:41:40 手机定位技术交流文章
ZeroMQ是一个基于消息队列的多线性网络库,它抽象了接口类型、连接处理、帧和甚至路由器的基本细节,提供了多个传输协议的接口,并支持多个通信环境(在进程中、跨进程、跨主机)。
ZMQ更关心沟通双方的责任,这个消息的内容是一个消息,使用时不要担心具体的细节,开发者不再需要绑定/听/接受来安装服务器。ZMQ已经在Socket API上设置了一个封装层,抽象网络通信 、 过程通信和线程通信成为统一的API接口.
ZMQ官网
ZMQ维基百科
ZeroMQ将消息通信分成三个模式,这些是请求-答复模型、发布-订阅模型和推销-推销模型。这些三种模型概述了一般网络通信模型.在实践中,根据应用需要,结合两个或多个模型来形成自己的解决方案。
客户端发起的请求(ZMQ_REQ),然后等待服务器(ZMQ_REP)响应请求。请求结束时发送一个简单的“你好”,服务端响应一个“世界”。请求端和服务端都可以是1:N模型。通常1被认为是服务器,N被视为客户。扩展1:N到N:M需要添加几个路由节点。如图1所示:
图1:请求-答复模型
说明:
无论谁首先启动服务端和客户端,效果都是相同的,这与 Socket 不同。
在服务端收到信息并等待客户端连接之前,程序被封锁。
3. 在REQ - REP模式中,遵循客户端连接,然后向服务器发送消息,然后服务器 rev 响应客户端的单问单答模式。如果服务器首先发送,客户端首先修改程序将报告错误。
PUB-SUB模型是一种数据分配方法,服务器(ZMQ_PUB)发送数据给一系列客户端(ZMQ_SUB),客户端需要设置订阅来接收消息,如图2所示。

图2发布-订阅模型
说明:
客户端需要设置订阅,否则不会收到消息。
PUB接口不能调用zmq_recv函数来接收消息。
客户端可以连接到多个服务器。
4. 如果 客户端 在 中间 退出, 服务器 会 连续 广播, 并 不会 影响 广播 的 继续 。 当 客户端 重新 连接 时, 它 会 收到 以后 发送 的 新 信息 。
在管道模型中, PUSH-to-PULL-to-terminal单向数据流传输。通风器将消息发送到工人节点,在工作节点上使用ZMQ_PULL来从顶部接收任务,并使用ZMQ_PUSH将结果汇集到水槽中.如图3所示:

图3管道线模型
说明:
1, Ventilator的 PUSH插座负荷平衡发送信息到工人节点。
Sink所听的PULL插座也是来自Worker节点的接收消息。
ZMQ提供四个通信协议:内处理、内处理、宿主至宿主和广播。通信协议的配置非常简单,您可以指定类似于URL格式的字符串,格式分别是inproc://、ipc://、tcp://和pgm://。ZMQ根据指定的字符串自动分析协议、地址、端口号码等。
1,只提供24个API接口, 类似于BSD Socket的风格.
处理网络异常, 包括连接异常中断 、 重新连接等.
3.改变TCP接收数据的方式,通过MSG单元发送数据,结合协议缓冲器,可以完全屏蔽网络通信层与应用程序层。
没有服务器端和客户端启动的顺序.
1.支持多种通信协议,可灵活地适应多种通信环境,包括在进程中、过程间、主机间、广播。
支持多个消息模型, 这些模型可以结合起来形成一个特定的解决方案.
它支持Linux、Windows和OS X。
你可以绑定C、C++、Java等NET、Python和其他30多个开发语言。
本文由 在线网速测试 整理编辑,转载请注明出处。