ZeroMQ 入门介绍和基本通信模型

      最后更新:2022-07-04 08:41:40 手机定位技术交流文章

      1 ZMQ是什么?

      ZeroMQ是一个基于消息队列的多线性网络库,它抽象了接口类型、连接处理、帧和甚至路由器的基本细节,提供了多个传输协议的接口,并支持多个通信环境(在进程中、跨进程、跨主机)。

      ZMQ更关心沟通双方的责任,这个消息的内容是一个消息,使用时不要担心具体的细节,开发者不再需要绑定/听/接受来安装服务器。ZMQ已经在Socket API上设置了一个封装层,抽象网络通信 、 过程通信和线程通信成为统一的API接口.

      ZMQ官网

      ZMQ维基百科

      2ZMQ基本通信模型

      ZeroMQ将消息通信分成三个模式,这些是请求-答复模型、发布-订阅模型和推销-推销模型。这些三种模型概述了一般网络通信模型.在实践中,根据应用需要,结合两个或多个模型来形成自己的解决方案。

      2.1请求-答复模型

      客户端发起的请求(ZMQ_REQ),然后等待服务器(ZMQ_REP)响应请求。请求结束时发送一个简单的“你好”,服务端响应一个“世界”。请求端和服务端都可以是1:N模型。通常1被认为是服务器,N被视为客户。扩展1:N到N:M需要添加几个路由节点。如图1所示:
      在这里插入图片描述

      图1:请求-答复模型

      说明:

      无论谁首先启动服务端和客户端,效果都是相同的,这与 Socket 不同。

      在服务端收到信息并等待客户端连接之前,程序被封锁。

      3. 在REQ - REP模式中,遵循客户端连接,然后向服务器发送消息,然后服务器 rev 响应客户端的单问单答模式。如果服务器首先发送,客户端首先修改程序将报告错误。

      2.2发布-订阅模式

      PUB-SUB模型是一种数据分配方法,服务器(ZMQ_PUB)发送数据给一系列客户端(ZMQ_SUB),客户端需要设置订阅来接收消息,如图2所示。

      在这里插入图片描述

      图2发布-订阅模型

      说明:

      客户端需要设置订阅,否则不会收到消息。

      PUB接口不能调用zmq_recv函数来接收消息。

      客户端可以连接到多个服务器。

      4. 如果 客户端 在 中间 退出, 服务器 会 连续 广播, 并 不会 影响 广播 的 继续 。 当 客户端 重新 连接 时, 它 会 收到 以后 发送 的 新 信息 。

      2.3PipeLine模型

      在管道模型中, PUSH-to-PULL-to-terminal单向数据流传输。通风器将消息发送到工人节点,在工作节点上使用ZMQ_PULL来从顶部接收任务,并使用ZMQ_PUSH将结果汇集到水槽中.如图3所示:

      在这里插入图片描述

      图3管道线模型

      说明:

      1, Ventilator的 PUSH插座负荷平衡发送信息到工人节点。

      Sink所听的PULL插座也是来自Worker节点的接收消息。

      通信协议

      ZMQ提供四个通信协议:内处理、内处理、宿主至宿主和广播。通信协议的配置非常简单,您可以指定类似于URL格式的字符串,格式分别是inproc://、ipc://、tcp://和pgm://。ZMQ根据指定的字符串自动分析协议、地址、端口号码等。

      4、ZMQ特性总结

      4.1使用简单

      1,只提供24个API接口, 类似于BSD Socket的风格.

      处理网络异常, 包括连接异常中断 、 重新连接等.

      3.改变TCP接收数据的方式,通过MSG单元发送数据,结合协议缓冲器,可以完全屏蔽网络通信层与应用程序层。

      没有服务器端和客户端启动的顺序.

      4.2灵活

      1.支持多种通信协议,可灵活地适应多种通信环境,包括在进程中、过程间、主机间、广播。

      支持多个消息模型, 这些模型可以结合起来形成一个特定的解决方案.

      4.3跨平台

      它支持Linux、Windows和OS X。

      4.4多语言支持

      你可以绑定C、C++、Java等NET、Python和其他30多个开发语言。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/29169.html

          热门文章

          文章分类