ZMQ是一个开源的、跨语言的、非常简洁的、非常高性能、非常灵活的网络通讯库。相比原始的 socket API,ZMQ 封装掉了很多东西,免去了开发人员的很多麻烦。
比如,传统的 TCP 是基于字节流进行收发,因此程序猿常常要自己去处理数据块与数据块之间的边界(断界处理);与之相对,ZMQ 是以消息为单位进行收发,它确保你每次发出/收到的,都是一个消息块。这样一来,就省却了不少代码量。
比如,基于 socket API 进行 TCP 通讯,你需要自己处理很多网络异常(比如连接异常中断以及重连),即使有经验的程序员,也未必能写得严密。而在 ZMQ 中,这些琐事统统不用程序猿操心。
再比如,用传统的 socket API,当你想提高通讯性能,往往要搞些异步(非阻塞)、缓冲区、多线程之类的把戏。而这些东西,ZMQ 也帮你封装掉了。
总而言之,ZMQ 对很多底层细节的封装,让你的网络程序代码变得简单,写起来又快又轻松。
高性能
说到性能,这可是 ZMQ 吹嘘的主要亮点。首先,ZMQ 是用 C/C++ 开发的(C/C++ 的性能,那可是公认滴);其次,ZMQ 本身的协议格式定义得很简洁(相对来说,JMS 规范中的协议格式就复杂多了)。所以,它的性能远远高于其它的消息队列软件。甚至可以说,用 ZMQ 的性能,跟用传统 socket API 的性能,是不相上下滴。
为了让大伙儿有一个感性的认识,俺特地找来了消息队列软件的性能测评。这是某老外写的一篇帖子(在”这里”),不懂洋文的同学可以看”这里”。连帖子都懒得看的同学,可以直接看下图。
简单
API接口少,简单
依赖包安装:
sudo apt-get install autoconf automake uuid-dev
sudo apt-get install python-dev
a.zmq安装包下载
http://zeromq.org/intro:get-the-software
下载POSIX tarball,得到zeromq-2.1.7.tar.gz
b.解压
tar -xvf zeromq-2.1.7.tar.gz
解压后得到zeromq-2.1.7文件夹
c.安装
cd zeromq-2.1.7
将看到configure
sudo ./configure
ls
将看到MakeFile
sudo make
sudo make install
sudo ldconfig
三、安装pyzmq
利用pip安装,若没有请安装pip
sudo apt-get install python-pip
安装pyzmq
sudo pip install pyzmq
测试安装成功
python
import pyzmq
未root用户请使用sudo获取权限,否则权限不够,安装过程无法正常进行。
参考:
https://github.com/imatix/zguide/tree/master/examples/Python
http://www.2cto.com/kf/201504/388378.html
https://github.com/UtopiaHXM/pyzmq/blob/master/examples/eventloop/asyncweb.py