ZeroMQ

2024-08-29 08:52
文章标签 zeromq

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

ZeroMQ官方网站

ZMQ

ZMQ三种模型实例

管道模型
发布订阅模型
请求应答模型

ZMQ下载

sudo apt install libzmq3-dev

查看是否安装成功
在这里插入图片描述
查看是否有libzmq这个库文件
在这里插入图片描述

ZMQ通信类型

请求应答模型Request - Reply

请求端发起请求:客户端通过REQ模式的套接字发送一个同步请求到REP模式的服务端。
服务端处理请求:REP模式的服务端接收到请求后进行处理,并通过REQ模式的套接字返回响应。
在这里插入图片描述

发布订阅模型Publisher - Subscriber

核心思想是将消息的发送者(发布者)和消息的接收者(订阅者)解耦,使它们无需直接联系,这种模式通常用于需要一对多通信的场景。
在这里插入图片描述

Publish端单向分发数据,且不关心是否把全部信息发送给Subscribe端。如果Publish端开始发布信息时,Subscribe端尚未连接进来,则这些信息会被直接丢弃。Subscribe端只能接收,不能反馈,且在Subscribe端消费速度慢于Publish端的情况下,会在Subscribe端堆积数据。

一对一结对模型Exclusive-pair

一对一结对模型(Exclusive-Pair)是一种网络通信模型,它将两个套接字一对一地连接起来,类似于一个TCP连接,但TCP服务器只能接受一个连接。在这种模型中,数据可以双向流动。

管道模型Push - Pull

从 PUSH 端单向的向 PULL 端单向的推送数据流。如果有多个PULL端同时连接到PUSH端,则PUSH端会在内部做一个负载均衡,采用平均分配的算法,将所有消息均衡发布到PULL端上。与发布订阅模型相比,管道模型在没有消费者的情况下,发布的消息不会被消耗掉;在消费者能力不够的情况下,能够提供多消费者并行消费解决方案。该模型主要用于多任务并行。
这种模型的特点是数据传输是单向的,即数据只能从PUSH端流向PULL端,而不能反向流动。

localhost和*

在后续的代码中,你会频繁地使用下面地两个函数connect()和bind(),那么他们分别是什么意思呢。

socket_push.connect("tcp://localhost:8889");
socket_pull.bind("tcp://*:8889");

localhost

localhost 是一个特殊的主机名,用于指向当前设备的本地地址。当你在代码中使用 localhost 时,你实际上是在引用运行该代码的计算机本身。

*的意义

tcp://:8889 中的星号()是一个通配符,表示绑定到所有可用的网络接口,而不仅仅是 localhost。

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



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

相关文章

C++编程:ZeroMQ进程间(订阅-发布)通信配置优化

文章目录 0. 概述1. 发布者同步发送(pub)与订阅者异步接收(sub)示例代码可能的副作用: 2. 适度增加缓存和队列示例代码副作用: 3. 动态的IPC通道管理示例代码副作用: 4. 接收消息的超时设置示例代码副作用: 5. 增加I/O线程数量示例代码副作用: 6. 异步消息发送(使用`dontwait`标志)示例代码副作用: 7. 其他可以考虑的优化项7.1 立即发送(ZMQ_IM

ZeroMQ(java)之Requerst/Response模式

自己最开始是在cloud foundry中接触过消息服务器(nats),或者说是消息中间件,也算是初步知道了一个消息服务器对于分布式的网络系统的重要性,后来自己也曾想过在一些项目中使用它,尤其是在一些分布式的环境下,可以极大的方便整个系统的实现。。。。 例如如下的形式: 在中间通过一个消息中间件,可以很方便的将各个woker的数据发送到最终的统计服务器来做数据的统计,从而

常用MQ消息中间件Kafka、ZeroMQ和RabbitMQ对比及RabbitMQ详解

1、概述   在现代的分布式系统和实时数据处理领域,消息中间件扮演着关键的角色,用于解决应用程序之间的通信和数据传递的挑战。在众多的消息中间件解决方案中,Kafka、ZeroMQ和RabbitMQ 是备受关注和广泛应用的代表性系统。它们各自具有独特的特点和优势,适用于不同的应用场景和需求。   Kafka 是一个高性能、可扩展的分布式消息队列系统,被设计用于处理大规模的数据流和实时数据传输。它

zeromq的安装,部署(号称最快的消息队列,消息中间件)

zeromq的安装,部署(号称最快的消息队列,消息中间件) 1:Storm作为一个实时处理的框架,产生的消息需要快速的进行处理,比如存在消息队列ZeroMQ里面。 由于消息队列ZeroMQ是C++写的,而我们的程序是运行在JVM虚拟机里面的。所以需要jzmq这个桥梁来黏合C++程序接口和Java程序接口。 ZeroMQ的官方网址:http://zeromq.org/ 1:MetaQ(

zeromq应用学习(1)——编译zeromq的示例程序

前段时间和crazyhadoop聊天中,他推荐了zeromq这个开源库。所以今天开始学习一下。看了一下zeromq的在线文档,感觉确实不错,准备学习一下。 我的目的是阅读zeromq的源代码,那么首先要学会去用zeromq,所以刚开始是zeromq的应用学习,然后再开始阅读其源代码。另外,为了重新拾起以前的C++,所以在学习zeromq的过程中,主要使用C++。

发布-订阅(ZeroMQ) C++实现

1、目的 自从发了《发布-订阅(Publish-Subscribe)C++实现》博文,收到不少反馈:主要的问题就是无法跨主机使用。 本次实现主要解决: 简化ZeroMQ的开发过程;尽可能简化发布订阅的API调用;订阅者消息处理采用守护线程模式;支撑跨主机的发布订阅(By ZeroMQ) 下载地址:【免费】PublishSubscribe-ZMQ发布订阅C++实现资源-CSDN文库 2、Z

ZeroMQ - 三种模型的python实现

ZeroMQ是一个消息队列网络库,实现网络常用技术封装。在C/S中实现了三种模式,这段时间用python简单实现了一下,感觉python虽然灵活。但是数据处理不如C++自由灵活。   1.Request-Reply模式: 客户端在请求后,服务端必须回响应 server: 1 #!/usr/bin/python 2 #-*-coding:utf-8-*- 3 impor

02_c/c++开源库ZeroMQ

1.安装 C库 libzmq sudo apt install libzmq3-dev 实例: https://zeromq.org/get-started/?language=c&library=libzmq# 编译依赖: pkg-config --cflags --libs libzmq or cat /usr/lib/x86_64-linux-gnu/pkgconfig/libzmq

ZeroMQ各模式总结

ZeroMQ基本的模式有三种:请求-应答、订阅-分发、管道      请求应答模式中,应答端必须先启动,不然请求端无法连接到应答端,(rep-req)      这两个套接字的非阻塞版本,叫做XREQ和XREP.这些“扩展的请求/应答”套接字允许你通过中间件扩展请求-应答模型     订阅-分发模式,无先后启动问题,      pub-sub模式,sub端(接收端)再连接到服务器后,

ROS2 王牌升级:Fast-DDS 性能直接碾压 zeroMQ 「下」

以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/aU1l3HV3a9YnwNtC1mTiOA 性能比较 下面就以官网的测试数据为准,让我们一起来看看它们的性能差别到底怎样。 本次比较仅针对 Fast RTPS 和 ZeroMQ 的数据收发延迟和吞吐量两方面,传输模式都采用发布订阅制,而且会统一使用 Fas