概述
信封机制在 ROUTER 中的工作原理:
- 从 ROUTER 中读取一条消息时, ØMQ 会包上一层信封,上面注明了消息的来源。
- 向 ROUTER 写入一条消息时(包含信封), ØMQ 会将信封拆开,并将消息递送给相应的对象。
以下将详述我们在请求-应答模式中使用到的四种套接字类型:
- DEALER 是一种负载均衡,它会将消息分发给已连接的节点,并使用公平队列的机制处理接受到的消息。 DEALER 的作用就像是 PUSH 和 PULL 的结合。
- REQ 发送消息时会在消息顶部插入一个空帧,接受时会将空帧移去。其实 REQ 是建立在 DEALER 之上的,但 REQ 只有当消息发送并接受到回应后才能继续运行。
- ROUTER 在收到消息时会在顶部添加一个信封,标记消息来源。发送时会通过该信封决定哪个节点可以获取到该条消息。
- REP 在收到消息时会将第一个空帧之前的所有信息保存起来,将原始信息传送给应用程序。在发送消息时, REP 会用刚才保存的信息包裹应答消息。 REP 其实是建立在 ROUTER 之上的,但和 REQ 一样,必须完成接受和发送这两个动作后才能继续。
注意:REP 要求消息中的信封由一个空帧结束,所以如果你没有用 REQ 发送消息,则
需要自己在消息中添加这个空帧。
以上是抄自ZMQ中文手册
REQ-REP模式
下图是我对应答分发过程的原理的理解
总结
- REQ模式的套接字在发送消息时,ZMQ内部会自动在数据帧头部增加一个空帧,用以标识信封和内容;
- REP模式的套接字接收的消息必须包含信封,也就是消息帧前面的空帧;
- ROUTER模式的套接字,在读取消息时会在空帧前增加一个地址帧,这个地址就是发送者的套接字标识;在发送时需要指定一个地址帧,ROUTER使用这个地址帧找到内部的套接字发送消息;发送消息时ROUTER会将自己保存的地址帧移除;
- DEALER模式的套接字,不对消息进行任何加工,但是会公平分发消息,如果有2个Client连接到DEALER,则使用DEALER发送2条消息后,2个客户端分别得到一条消息;
通过以上总结在面对各种各样的套接字拓步会变得容易理解消息的传递过程
最后
以上就是怡然发带为你收集整理的ZMQ 请求应答模式理解总结的全部内容,希望文章能够帮你解决ZMQ 请求应答模式理解总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复