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。

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值