高性能的通讯库-ZeroMQ的几个高性能特征

来源:互联网 发布:linux和windows 编辑:程序博客网 时间:2024/05/24 22:42

这两天研究了一下ZeroMQ,号称史上最好的通讯库,比RabbitMQ快很多,基于C语言开发的,实时流处理sorm的task之间的通信就是用的ZeroMQ。

ZeroMQ在使用模式上支持多种,有req-reply,publish-subscribe,push-pull。

下图是ZeroMQ的架构图

简单说明一下,

从上到下依次是网络、ZeroMQ、用户的应用,相当于在应用层和网络层加了一个消息通信库这么一个层次

应用层通过API使用socket(此socket不同于传统意义上的socket)和ZeroMQ进行交互

ZeroMQ有多个工作者线程,每个工作者线程可以创建多个socket连接对象(由Listener监听),也可以作为socket客户端连接远程的对象。

socket套接字对象包括engine、session对象;engine负责连接的管理(和网络进行交互,比如从网络中读取数据,消息排队,接受新的连接等);session对象主要负责和ZeroMQ的socket进行交互,他们之间采用异步事件驱动的无锁队列pipe。

ZeroMQ在设计上主要采用了以下几个高性能的特征:

1、无锁的队列模型

      对于跨线程间的交互(用户端和session)之间的数据交换通道pipe,采用无锁的队列算法CAS;在pipe的两端注册有异步事件,在读或者写消息到pipe的时,会自动触发读写事件。

2、批量处理的算法

     对于传统的消息处理,每个消息在发送和接收的时候,都需要系统的调用,这样对于大量的消息,系统的开销比较大,ZeroMQ对于批量的消息,进行了适应性的优化,可以批量的接收和发送消息。

3、多核下的线程绑定,无须CPU切换

    区别于传统的多线程并发模式,信号量或者临界区, ZeroMQ充分利用多核的优势,每个核绑定运行一个工作者线程,避免多线程之间的CPU切换开销。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 鞋子内测磨破了怎么办 老公拉肚子拉的很厉害怎么办 老公拉肚子拉得很厉害怎么办 和老公吵架很厉害怎么办 新鞋鞋底吱吱响怎么办 新鞋鞋底滑了怎么办 工作中同事不配合怎么办 做体力活一身疼怎么办 大脑左则中动脉血管狭窄?怎么办 儿童体质差免疫力差怎么办 nba篮球大师体力不够怎么办 一千米差10秒怎么办 四十岁以后体力和耐力差怎么办 打篮球一打比赛就紧张怎么办 耐克空军鞋鞋底边胶掉了怎么办 鞋底踩到老鼠胶怎么办 头蒙怎么办最快最有效 备孕老公压力大怎么办 宝宝太兴奋不睡怎么办 我很烦只睡三小时觉怎么办才好 柯基精力太旺盛怎么办 孩子学习熬夜精力不足怎么办 肺癌晚期吃不下饭怎么办 这俩天吃药太多肝肾功能不好怎么办 跑步跑得头疼晕怎么办 吃完辣的想吐怎么办 体育生暑假训练太累怎么办 高强度运动后性功能不好怎么办 运动后第二天全身酸痛怎么办 运动后心慌想吐怎么办 激素停后全身疼怎么办 运动完头晕想吐怎么办 跑了步全身酸痛怎么办 运动后全身没力气怎么办 学完游泳不会换气怎么办 猫不吃饭精神不好怎么办 运动完头晕目眩想吐怎么办 酒后第二天恶心想吐怎么办 剧烈运动后肌肉酸痛怎么办 剧烈运动后吐了怎么办 长跑后头晕想吐怎么办