天天看点

【消息队列】ZMQ概述

ZMQ的官方网址:www.zeromq.org

前言

引用官方的说法: “ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ的明确目标是“成为标准网络协议栈的一部分,之后进入Linux内核”。

三种通讯模式

ZMQ提供了三个基本的通信模型,分别是“Request-Reply “,”Publisher-Subscriber“,”Parallel Pipeline”。

1. Request-Reply

请求相应这种是我们最常见的,也是我们经常编写的socket程序。写一个server端监听某一端口,如有消息传来则对其分析并作出响应;同时,存在client端,它链接server端,发送服务请求。这就跟到报亭买报一样,报亭就是server端,读者就是client,要想看报就得去报亭买。

【消息队列】ZMQ概述

2. Publisher-Subscriber

什么是发布订阅模式呢?理论上去理解可以参照设计模式中的订阅者模式。还是报亭卖报,现在报亭升级了,提供订报功能,只要你在此登记,那么你就每天在家里等着就可以了。一旦有了新的资讯,报亭就送来了。

【消息队列】ZMQ概述

3. Parallel Pipeline

在分布式计算中,我们经常遇到这样一种情况,我们希望把一批数据分发到不同的处理单元,有他们分别处理,处理完之后再汇集起来,parallel pipeline就是干这个的。task ventilator使用的是SOCKET_PUSH,将任务分发到Worker节点上。而Worker节点上,使用SOCKET_PULL从上游接受任务,并使用SOCKET_PUSH将结果汇集到Slink。值得注意的是,任务的分发的时候也同样有一个负载均衡的路由功能,worker可以随时自由加入,task ventilator可以均衡将任务分发出去。

【消息队列】ZMQ概述

引:

http://www.kuqin.com/algorithm/20120813/328769.html

继续阅读