高性能的通讯库-zeroMQ的几个高性能特征
来源:互联网 发布:华为v9网络错误 编辑:程序博客网 时间:2024/05/16 14:28
今天从同事、顾问那里了解到了三个东西:socket、消息中间件、zeromp,特此,转发一篇关于zeromp的好文。
这两天研究了一下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应用的几个小技巧
- 可变参函数
- Qt之Connections类型
- Python的与或逻辑
- 电脑键盘错乱完美解决
- 分布式系统设计权衡之CAP
- 高性能的通讯库-zeroMQ的几个高性能特征
- windows下编译libevent 2.18报错问题
- Markdown 模式的使用
- ugui 点击在ui和非ui的判断
- SVN服务器的安装和使用
- JSP嵌套html乱码问题
- 从数据类型 varchar 转换为 numeric 时出错的查找办法
- 第一次使用MongoDB 插入记录遇到的问题
- 安卓文件自动打开跳转