1.ZMQ概念
ZMQ是什么?
对传统的网络接口进行再次封装,提供了一个跨语言的库,支持任意语言使用统一的接口,基于这些封装,在分布式环境下,提供了一些常见的消息模型,比如请求-回应(request-reply)、发布订阅(Subscribe-Publish)、推拉(Push-pull)以及基于这些基础的消息模型衍生的更加高级的模型。
ZMQ用来干什么?
传统网络编程,TCP是一对一的连接,调用的接口比较多。ZMQ用来解决传统编程的问题。
2.ZMQ的特性
zmq有一些后台的IO线程,封装了异步处理
zmq的连接不是一对一,是N对N
zmq封装了messag_t,解决了粘包和半包的问题
zmg的message_t是一个多帧的结构,支持任意大小,甚至是2G
zmq可以提供零拷贝,提供用户的性能
zmq有内存缓存的功能,而且这些缓存是异步的
zmq不要求对端先启动,因为有缓存,所以对启动不要求
可以进行跨平台,提供任意结点的通信,进程,线程和通信
支持不同语言开发的程序间通信,在高级消息中,具有公平队列的功能
3.公平连接与公平流量
公平连接:1000个连接分担到10个IO线程里
公平流量:流量计数,不按公平连接处理,CPU按流量少的去处理