ZMQ面面观

2024-02-03 21:48
文章标签 面面观 zmq

本文主要是介绍ZMQ面面观,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ZMQ是什么?
这是个类似于Socket的一系列接口,他跟Socket的区别是 :普通的socket是端到端的(1:1的关系),而ZMQ却是可以N:M 的关系,人们对BSD套接字的了解较多的是点对点的连接,点对点连接需要显式地建立连接、销毁连接、选择协议(TCP/UDP)和处理错误等,而 ZMQ屏蔽了这些细节,让你的网络编程更为简单。ZMQ用于node与node间的通信, node可以是主机或者是进程
引用官方的说法: “ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。是一个 消息处理队列多线程网络库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ的明确目标是“成为标准网络协议栈的一部分,之后进入Linux内核”。现在还未看到它们的成功。但是,它无疑是极具前景的、并且是人们更加需要的“传统”BSD套接字之上的一 层封装。ZMQ让编写高性能网络应用程序极为简单和有趣

好文:

ZMQ可以基于TCP协议,也可以不基于TCP协议.

https://www.cnblogs.com/zengzy/p/5122634.html

在ZeroMQ中并没有绝对的服务端与客户端之分,所有的数据接收与发送都是以连接为单位的,只区分ZeroMQ定义的类型,例如Response与Request,Publisher与Subscriber,Push与Pull等。。。

https://blog.csdn.net/fjslovejhl/article/details/16862817

函数zmq_socket()根据context参数创建一个ZMQ套接字(socket),并且以一个不透明指针的形式返回这新创建的socket。type参数指明了要创建的socket的类型,这个类型决定了在进行传输时在此socket上执行的语义。

新创建的socket初始值是未绑定的,并且未和任何终结点相联系。为了能够在一个socket上建立消息,必须先要使用zmq_connect(3)连接上一个终结点,或者至少有使用zmq_bind(3)函数绑定一个终结点来接收传入的消息。

https://www.cnblogs.com/fengbohello/p/4354989.html

# Zeromq的几种模式比较

* **REQ-REP:**  请求-应答型,同步,TCP,1对n(服务器),n对1(服务器).

* **PUB-SUB:** 发布-订阅,经典模式适用于单向的数据发布,更新流既没有起点也没有终点,类似于广播,异步,UDP,1对n(服务器)

* **PULL-PUSH:** 推拉模式,TCP,异步,1对n(服务器) (bind端绑定ip和port, 另一端去连接这个ip和port)

* **ROUTER-REQ-DEALER:** 请求应答型,同步,tcp,添加代理可以n(client)对m(server),分配身份。
原文:https://blog.csdn.net/qq_30264689/article/details/80999025

这种模式与pub/sub模式一样都是单向的,区别有两点:
1,该模式下在没有消费者的情况下,发布者的信息是不会消耗的(由发布者进程维护)
2,多个消费者消费的是同一列信息,假设A得到了一条信息,则B将不再得到
这种模式主要针对在消费者能力不够的情况下,提供的多消费者并行消费解决方案(也算是之前的pub/sub模式的那个"堵塞问题"的一个解决策略吧)

https://blog.csdn.net/iteye_14316/article/details/82037243

这篇关于ZMQ面面观的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/675514

相关文章

Windows下使用MinGW编译安装zmq的步骤

背景: 在开发过程中,需要使用zmq库进行数据交互,因此需要编译zmq库。 安装步骤 软件下载 https://github.com/zeromq/libzmq.git 下载,将代码切换到git checkout 4c6cff6391分支 软件编译 cd .\libzmq\mkdir buildcd .\build\cmake -G "MinGW Makefiles" -DCMA

ZMQ管道模型

案例一 生产者Producer #include <zmq.hpp>#include <iostream>#include <string>#include<chrono>#include<thread>using namespace std;using namespace zmq;int main() {context_t context(1);// 创建 PUSH 套接字,用于发

ZMQ发布订阅模型

案例一 发布者Publisher(server) // server.cpp#include <zmq.hpp>#include <string>#include <iostream>#include <chrono>#include <thread>using namespace std;using namespace zmq;int main() {context_t co

ZMQ请求应答模型

案例一 这个案例的出处是ZMQ的官网。请求段发送Hello,应答端回复World。 ZMQ Request(client) #include <string>#include <iostream>#include <zmq.hpp>using namespace std;using namespace zmq; // 使用 zmq 命名空间int main(){// initiali

IAST面面观 | 将IAST工具引入DevSecOps,让开发安全提速

随着数字化发展的不断深入,软件应用的迭代要求越来越高,既要保持产品的快速交付,又要持续保障交付物的安全与质量,在此需求下,DevSecOps的重要性日益凸显。在开发(Dev)、安全(Sec)和运维(Ops)的每个阶段都融入安全实践,是确保软件全生命周期安全的关键策略。 在DevSecOps理念中,“安全”已不再是开发流程的附属品,而是与开发、测试、部署等环节并驾齐驱,形成了一条无缝衔接的安

小马哥------高仿OPPO N1 移植测试完美版miui界面系统卡刷包 卡刷界面与开机界面面面观

高仿OPPO N1定制版   6582芯片   移植测试机 屏幕有点问题 有细线 拍照不清楚

前端核心代码保护技术面面观

前端核心代码保护技术面面观   1、 前言 Web的开放与便捷带来了极高速的发展,但同时也带来了相当多的隐患,特别是针对于核心代码保护上,自作者从事Web前端相关开发的相关工作以来,并未听闻到太多相关于此的方案,『前端代码无秘密』这句话好似一个业界共识一般在前端领域传播。但在日常的开发过程中,我们又会涉及以及需要相当强度的前端核心代码的加密,特别是在于与后端的数据通信上面(包括HTTP、HT

VFP 5.0远程视图使用面面观

武汉交通科技大学计算机系 吴业福 袁小玲   摘要:远程视图是Visual Foxpro 5.0 中开发Client/Server 应用系统的基础,本文首先介绍了远程视图有关参数的放置技巧,然后介绍如何去设计、使用远程视图,最后讨论了使用远程视图的四个实际问题。   关键词:远程视图;远程数据;连接;锁定;缓冲。 一、绪论   VFP 是一种较好的客户/ 服务器应用系统开发工具,用VFP 开发C/

【ZMQ PUB模式指南】深入探究ZeroMQ的PUB-SUB模式:C++编程实践、底层原理与最佳实践

目录标题 1. 引言1.1 什么是ZeroMQ1.2 PUB-SUB模式的应用场景1.2.1 数据分发1.2.2 事件通知1.2.3 负载均衡 2. ZeroMQ基础2.1 什么是ZeroMQ2.2 安装与配置2.3 ZeroMQ的基本概念2.3.1 上下文(Context)2.3.2 套接字(Socket)2.3.3 消息(Message) 2.4 示例代码 3. PUB-SUB模式简介

ZMQ的介绍与应用

文章目录 一、ZMQ是什么二、ZMQ的特点三、ZMQ的优缺点优点:缺点 四、ZMQ的应用场景 一、ZMQ是什么 zmq是ZeroMQ的简称,它是一个传输层的socket库,旨在使Socket编程更加简单、简洁和高效。它是一个消息处理队列库,可以在多个线程、内核和主机之间弹性伸缩。ZeroMQ的目标是成为标准网络协议栈的一部分,并进入Linux内核。它是对传统BSD套接字的一层