zeromq 学习和python实战
参考文档:
原理解读
zeromq只是一层针对socket的封装,介于传输层和应用层之间,并不是单独的服务或者程序,仅仅是一套组件。
zeromq使用c语言编写,相应速度非常快。
主要有以下几个部分:
- 主线程:负责相应用户的请求,比如创建zmq等
- IO线程:主要负责网络IO的调度,每个IO线程会对应一个异步poll(如select,epoll等),使用reactor模式
消息模型
有四种消息模型:
- 一对一: 最简单的1:1消息通信模型,Server只能接受一个连接,数据可以双向流动
- 请求回应:由请求端发起请求,然后等待回应端应答,一个回应端可以有多个请求端。一般请求端到回应端是单向的,类似RPC调用,只能请求端主动发起请求。
- 发布订阅模型:发布端单向发布数据,并不关系是否把信息发给订阅端。如果订阅端未连接,或者处理性能不足,消息可能被丢弃
- 推拉模型:server作为发布端,client作为pull端。多个client连接server时,server会做负载均衡
python实战
安装
从官网:http://zeromq.org/intro:get-the-software 上获取最新的包