ZMQ 请求应答模式理解

信封机制在 ROUTER 中的工作原理:
 

  1. 从 ROUTER 中读取一条消息时, ØMQ 会包上一层信封,上面注明了消息的来源。
  2. 向 ROUTER 写入一条消息时(包含信封), ØMQ 会将信封拆开,并将消息递送给相应的对象。

以下将详述我们在请求-应答模式中使用到的四种套接字类型:

  •  DEALER 是一种负载均衡,它会将消息分发给已连接的节点,并使用公平队列的机制处理接受到的消息。 DEALER 的作用就像是 PUSH 和 PULL 的结合。
  •  REQ 发送消息时会在消息顶部插入一个空帧,接受时会将空帧移去。其实 REQ 是建立在 DEALER 之上的,但 REQ 只有当消息发送并接受到回应后才能继续运行。
  • ROUTER 在收到消息时会在顶部添加一个信封,标记消息来源发送时会通过该信封决定哪个节点可以获取到该条消息。
  • REP 在收到消息时会将第一个空帧之前的所有信息保存起来,将原始信息传送给应用程序。在发送消息时, REP 会用刚才保存的信息包裹应答消息。 REP 其实是建立在 ROUTER 之上的,但和 REQ 一样,必须完成接受和发送这两个动作后才能继续。

注意:REP 要求消息中的信封由一个空帧结束,所以如果你没有用 REQ 发送消息,则
需要自己在消息中添加这个空帧。

以上是抄自ZMQ中文手册

REQ-REP模式

 下图是我对应答分发过程的原理的理解

总结

  1. REQ模式的套接字在发送消息时,ZMQ内部会自动在数据帧头部增加一个空帧,用以标识信封和内容;
  2. REP模式的套接字接收的消息必须包含信封,也就是消息帧前面的空帧;
  3. ROUTER模式的套接字,在读取消息时会在空帧前增加一个地址帧,这个地址就是发送者的套接字标识;在发送时需要指定一个地址帧,ROUTER使用这个地址帧找到内部的套接字发送消息;发送消息时ROUTER会将自己保存的地址帧移除;
  4. DEALER模式的套接字,不对消息进行任何加工,但是会公平分发消息,如果有2个Client连接到DEALER,则使用DEALER发送2条消息后,2个客户端分别得到一条消息;

通过以上总结在面对各种各样的套接字拓步会变得容易理解消息的传递过程 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值