zeromq 笔记

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

  • 从ROUTER中读取一条消息时(recv_multipart()),ØMQ会包上一层信封,上面注明了消息的来源。
  • 让ROUTER发送一条消息时(包含信封)send_multipart([ident, msg]),ØMQ会将信封拆开,并将消息递送给相应的对象。

2.当你用REQ套接字去连接ROUTER套接字,并发送一条请求消息,你会从ROUTER中获得一条如下所示的消息:

1

  • 第三帧是应用程序发送给REQ套接字的消息;
  • 第二帧的空信息是REQ套接字在发送消息给ROUTER之前添加的;
  • 第一帧即信封,是由ROUTER套接字添加的,记录了消息的来源。

3.REQ发送消息时会在消息顶部插入一个空帧,接受时会将空帧移去。其实REQ是建立在DEALER之上的,但REQ只有当消息发送并接受到回应后才能继续运行。

4.ROUTER在收到消息时会在顶部添加一个信封,其实就是添加了一个reply address,标记消息来源。发送时会通过该信封决定哪个节点可以获取到该条消息。

5.REP在收到消息时会将第一个空帧之前的所有信息保存起来,将原始信息传送给应用程序。在发送消息时,REP会用刚才保存的信息包裹应答消息。REP其实是建立在ROUTER之上的,但和REQ一样,必须完成接受和发送这两个动作后才能继续。

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

7.可通过ROUTER套接字来异步地发送消息。ROUTER是ZMQ中唯一一个可以定位消息来源的套接字。

8.DEALER可以是一个黑洞(只负责处理消息,不给任何返回)、代理(将消息转发给其他节点)或是服务(会发送返回信息)。如果你要求DEALER作为服务能够进行回复,发送返回信息,那就要保证只有一个ROUTER连接到DEALER,因为DEALER并不知道哪个特定的节点在联系它,如果有多个节点,它会做负载均衡,将消息分发出去。但如果DEALER是一个黑洞,那就可以连接任何数量的节点。

9.ROUTER发出的消息无法被路由的话,ØMQ会丢弃这些消息。

10.在将消息路由给DEALER时,我们手工建立了这样一个信封:

6

ROUTER套接字会移除第一帧,只将第二帧的内容传递给相应的DEALER。当DEALER发送消息给ROUTER时,只会发送一帧,ROUTER会在外层包裹一个信封(添加第一帧),返回给我们。

11.如果使用dealer发送消息时,不用想REQ那样添加一个空帧,只是原封不动的发送消息

12.在将消息路由给REQ套接字时,需要注意一定的格式,即地址-空帧-消息:

8

13.要将消息路由给REP,我们需要创建它能辨别的信封:

10

14.REQ套接字在发送消息时会向头部添加一个空帧,接收时又会自动移除。

15.

0MQ提供了4种不同的传输协议

INPROC an In-Process communication model

IPC an Inter-Process communication model

MULTICAST multicast via PGM, possibly encapsulated in UDP

TCP a network based transport

16.

0MQ提供了3种类型的设备

QUEUE, a forwarder for the request/response messaging pattern

FORWARDERa forwarder for the publish/subscribe messaging pattern

STREAMERa forwarder for the pipelined messaging pattern

17.

0MQ支持4种模式

REQUEST/REPLYbidirectional, load balanced and state based

PUBLISH/SUBSCRIBEpublish to multiple recipients at once

UPSTREAM / DOWNSTREAMdistribute data to nodes arranged in a pipeline

PAIRcommunication exclusively between peers

18.不要在现实环境中使用随机标识的持久套接字,这样做会将节点消耗殆尽。

19.除了ROUTER会丢弃无法路由的消息外,PUB套接字当没有SUB连接它时也会丢弃发送出去的消息。其他套接字则会将无法发送的消息存储起来,直到有节点来处理它们。

 来源:http://arch.corp.anjuke.com/blog/2011/10/09/zguide-cn-chapter3/

posted @ 2014-06-18 09:29  liton  阅读(347)  评论(0编辑  收藏  举报