最近在研究zeromq中间件,他是一个轻量级的消息中间件,传说是世界上最快的消息中间件,为什么这么说呢?
因为一般的消息中间件都需要启动消息服务器,但是zeromq这厮尽然没有消息服务器,他压根没有消息中间件的架子,但是这并不能掩盖他的强大。
通过和activemq,rabbitmq对比,显然功能上没有前两者这么强大,他不支持消息的持久化,但是有消息copy功能,他也不支持崩溃恢复,而且由于他太快了,可能客户端还没启动,服务端的消息就已经发出去了,这个就容易丢消息了,但是zeromq自由他的办法,就先说这么多了。先来看看怎么在python中引入这个强大的利器。
安装过程中可能会让你安装一些依耐包,耐心安装即可,可以用命令echo $?(中间有个空格)来查看返回结果,返回0则前一个命令执行完整。
1.去获取一个源码包:http://download.zeromq.org/,最好选一个2.1以上的版本,防止装不了。
2.tar xvf zeromq-2.1.11.tar.gz --解压tar包
3.cd zeromq-2.1.11
4../configure
5.make
6.sudo make install
7.sudo ldconfig
8.pip install pyzmq
安装好了以后可以测一下
>>> python
>>> import zmq
>>> print "Current 0MQ version is "+zmq.zmq_version()
Current 0MQ version is2.1.11
测试成功,说明python引入zeromq成功了,下面我们可以测下怎么传递消息的
hwserver.py
hwclient.py
下面我们说说pub和sub模式。
zeromq中的pub和sub模式没有什么特别的
但是这个时候我们会有疑问了,没有服务器,server(pub)端发送消息需要绑定ip和端口号。client(sub)端需要连接ip和端口号这样才能订阅到server端发送的主题。
这样岂不是天下大乱,消息传输都中pub端岂不是透明了。在zmq中有个模式叫代理模式,其代码特别简单
我们启动一到两个代理来负责干其他消息中间件消息服务器干的事(有点绕!)
就这样在python中引入了zmq了,但是在一个分布式的集群环境下,一般软件环境很难保持统一,那么跨语言怎么通信呢?请看下回分解。