高性能的通讯库-zeroMQ的几个高性能特征
来源:互联网 发布:淘宝类目搜索什么意思 编辑:程序博客网 时间:2024/06/05 14:27
http://blog.csdn.net/yangbutao/article/details/8498790
原帖
这两天研究了一下zeroMQ,号称史上最好的通讯库,比rabbitMQ快很多,基于c语言开发的,实时流处理sorm的task之间的通信就是用的zeroMQ。
zeroMQ在使用模式上支持多种,有req-reply,publish-subscribe,pipe。
下图是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切换开销。
- 高性能的通讯库-zeroMQ的几个高性能特征
- 高性能的通讯库-ZeroMQ的几个高性能特征
- 高性能的通讯库-zeroMQ的几个高性能特征
- 高性能的通讯库-zeroMQ的几个高性能特征
- 高性能的通讯库-ZeroMQ的几个高性能特征
- 高性能的通讯库-zeroMQ的几个高性能特征
- 跨平台的高性能的C++通讯库
- 高性能数据库应用程序的几个要点
- 高性能的通讯程序,服务器端的代码大致如下:
- 可靠、高性能的Socket TCP通讯组件
- IPP的高性能
- 高性能的LIST
- 高性能的OkHttp
- ZeroMQ 简单的高性能REP-REQ模型,Java语言版本
- zeroMQ 简单的PUB-SUB 高性能模式,java 语言版本
- 介绍几个好玩的高性能集群站点。
- 介绍几个好玩的高性能集群站点
- 构建高性能J2EE应用的几个小技巧
- ocr技术原理
- Coreseek/sphinx全文检索的了解
- USB枚举过程(Enumeration)
- 调用图片上传http接口,利用httpClient模拟请求
- Convention plugin都有那些有约定
- 高性能的通讯库-zeroMQ的几个高性能特征
- 商业智能的新目标:业务分析
- 初学python之练习将输入的数字进行排序的方法
- 终止进程
- [LeetCode]Remove Element
- linux下操作mysql,支持重连
- 智能指针的陷阱
- ubuntu自带VI编辑器不好用的解决办法
- hive中用java实现的udaf做线性回归