高性能的通讯库-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切换开销。
- 高性能的通讯库-zeroMQ的几个高性能特征
- 高性能的通讯库-ZeroMQ的几个高性能特征
- 高性能的通讯库-zeroMQ的几个高性能特征
- 高性能的通讯库-zeroMQ的几个高性能特征
- 高性能的通讯库-ZeroMQ的几个高性能特征
- 高性能的通讯库-zeroMQ的几个高性能特征
- 跨平台的高性能的C++通讯库
- 高性能数据库应用程序的几个要点
- 高性能的通讯程序,服务器端的代码大致如下:
- 可靠、高性能的Socket TCP通讯组件
- IPP的高性能
- 高性能的LIST
- 高性能的OkHttp
- ZeroMQ 简单的高性能REP-REQ模型,Java语言版本
- zeroMQ 简单的PUB-SUB 高性能模式,java 语言版本
- 介绍几个好玩的高性能集群站点。
- 介绍几个好玩的高性能集群站点
- 构建高性能J2EE应用的几个小技巧
- 使用C语言实现“泛型”链表
- Linux基础-subversion安装
- First-chance exception at xxx RPC 服务器不可用
- 《博弈心理学》笔记(一)
- Linux常用命令
- 高性能的通讯库-ZeroMQ的几个高性能特征
- 国内最全最详细的hadoop2.2.0集群的HA高可靠的最简单配置
- 2014,新的一年我的计划
- 看懂设计模式UML类图
- UVALive - 4621 Cav
- Socket通信原理和实践
- hadoop配置文件详解、安装及相关操作补充版
- Java七种排序算法!
- JAVA序列化和反序列化