292013
 

Request-reply pattern 请求-回复模型

这种模型主要用于从客户端向一个或多个服务实例发送请求,然后等待紧接着对于每个请求的回复
里面又具体分了ZMQ_REQ ZMQ_REP ZMQ_DEALER ZMQ_ROUTER
REQ 发送完消息后,必须接收一个回应消息后,才能发送新的消息。
REP当接收消息时,都会返回一个消息。
请求端和回应端都可以是 1:N 的模型。通常把 1 认为是 server ,N 认为是 Client 。ZeroMQ 可以很好的支持路由功能(实现路由功能的组件叫作 Device),把 1:N 扩展为 N:M (只需要加入若干路由节点)。从这个模型看,更底层的端点地址是对上层隐藏的。每个请求都隐含有回应地址,而应用则不关心它。

Publish-subscribe pattern 发布-订阅模式

这种模式主要用于1对多的数据发布(一个发布者,多个订阅者)
里面又具体分了ZMQ_PUB ZMQ_SUB
这个模型里,发布端是单向只发送数据的,且不关心是否把全部的信息都发送给订阅端。如果发布端开始发布信息的时候,订阅端尚未连接上来,这些信息直接丢弃。不过一旦订阅端连接上来,中间会保证没有信息丢失。同样,订阅端则只负责接收,而不能反馈。如果发布端和订阅端需要交互(比如要确认订阅者是否已经连接上),则使用额外的 socket 采用请求回应模型满足这个需求。

Pipeline pattern 管道模式

这个模型里,管道是单向的,从 PUSH 端单向的向 PULL 端单向的推送数据流。数据总是沿着管道流动。每个管道阶段连接了至少一个节点
里面又具体分了ZMQ_PUSH ZMQ_PULL
一个1对N队列的实现,PUSH将数据放入队列,PULL从队列中不取出数据。数据会负载均衡的发送给每一个PULL。

Exclusive pair pattern 独立对模式

peer to peer 模式。主要用于进程内部线程间通信
里面又具体分了ZMQ_PAIR
线程间1-to-1队列的实现,采用了lock free实现,所以速度很快。

对不起,评论功能目前被关闭。