这两天研究了一下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-4.3.4"文件可能包含以下几个部分: 1. **源代码**:包括C++源文件,以及其他语言的绑定库。 2. **构建脚本**:如Makefile,用于编译和安装0MQ。 3. **文档**:包含API参考、用户指南和示例代码,...
1. **高性能**:ZeroMQ使用零拷贝技术,减少了内存中的数据复制,提高了传输效率。同时,其内核级别的优化使得通信速度非常快,尤其适合大数据和实时通信场景。 2. **轻量级**:ZeroMQ不需要额外的服务器进程或...
1. **高性能**:ZeroMQ 的设计目标是提供接近于零的延迟和高吞吐量。通过直接操作套接字(socket)和缓冲区,它能够实现高效的网络通信。 2. **模式丰富**:ZeroMQ 支持多种消息模式,包括发布/订阅(Publish/...
zeromq4.3.3是一个针对Windows x86-x64平台的开源消息队列库,它在C++环境中提供了高效、灵活的通信机制。这个压缩包“zeromq4.3.3 - windows-x86-x64.zip”包含了预编译的开发库,使得开发者无需自行构建ZeroMQ,...
通常,这涉及到解压、配置、编译和安装几个步骤。用户需要确保系统上已经安装了必要的构建工具,如GCC、make和必要的依赖库。安装过程可能如下: ```bash tar -zxvf zeromq-4.3.2.tar.gz cd zeromq-4.3.2 ./...
ZeroMQ的核心理念是为应用程序提供一个灵活的、高性能的接口,使得它们能够像在同一台机器上运行一样进行跨网络通信,无需关心底层网络协议和细节。其主要特性包括: 1. **简单易用**:ZeroMQ的API设计简洁,易于...
ZeroMQ(通常缩写为ZeroMQ、0MQ或ØMQ)是一个高性能的消息库,用于在多个计算节点之间传递消息,它提供了异步消息的通信模式,可以被用作消息队列、消息代理或消息传递的中间件。ZeroMQ的主要设计目标是提供一个高...
ZeroMQ,也称为0MQ或ØMQ,是一个高性能、轻量级的消息传递库,它提供了一种消息队列中间件的抽象,适用于多种编程语言,包括Java。在Java环境中使用ZeroMQ,通常需要对应的jar库和lib库来支持。本文将深入探讨...
1. **高性能**:ZeroMQ通过零拷贝和高效的内存管理,实现了高速的消息传输,减少了CPU和内存的开销。 2. **模式驱动**:它支持多种消息模式,如请求-响应(Request-Reply)、发布-订阅(Publish-Subscribe)和推拉...
在**电信设备的分布式计算**中,ZeroMQ可以用来解决以下几个关键问题: 1. **数据分发**:使用PUB/SUB模型,服务器可以将计算结果或者任务发布到一个主题,多个客户端订阅这个主题,从而实现数据的广播和并行处理。...
ZeroMQ,又称ØMQ或0MQ,是一个高性能、轻量级的消息队列库,它提供了一种消息传递模型,允许不同进程之间进行异步通信。ZeroMQ的工作模式类似于网络协议栈,但其抽象层次更高,使得开发人员可以更专注于应用程序...
零MQ(Zeromq)是一个高性能、轻量级的消息队列库,它为程序员提供了一种简单的方式来构建分布式或并行应用程序。这个名为“Zeromq.zip”的压缩包包含的是针对64位操作系统的Zeromq组件,具体来说,有以下几个关键...
zeromq-4.2.5 是一个针对嵌入式系统和综合资源优化的高性能、轻量级的消息队列库,它的全称是 ZeroMQ,也称为 ØMQ 或 0MQ。这个版本是 4.2.5,它在发布时是一个稳定版本,提供了许多改进和修复。ZeroMQ 不只是一个...
这些模式覆盖了大多数常见的通信场景,使得开发者可以快速构建出高性能的网络应用。 在开始安装zeromq之前,理解其与libsodium的关系至关重要。libsodium是一个现代、易于使用的密码学库,它提供了一系列的加密、...
ZeroMQ,又称0MQ或ZMQ,是一款轻量级、高性能的消息队列系统,它提供了一种分布式的、异步的通信模型,适用于多种编程语言,包括C、C++、Python、Java等。在本资源中,你将找到ZeroMQ 4.0.5版本的DLL(动态链接库)...
zeromq是一个强大的开源消息中间件,它提供了一种高效、灵活的方式来构建分布式或并行应用程序。这个"libzmq-v140-x64-4-3-4"压缩包包含的...通过深入理解上述知识点,你可以充分利用这个库来构建高性能的分布式系统。
ZeroMQ是一个高性能的通信库,其设计目标是易于使用和灵活地在多种传输协议上进行进程间通信。手册中提到的ZeroMQ是一种轻量级、高速的消息队列系统,其应用范围广泛,相当于一个更为轻量和灵活的Java消息服务(JMS...
零MQ(ZeroMQ,也称为ØMQ或0MQ)是一个高性能、轻量级的多协议消息中间件,它提供了多种编程语言的API。在Storm中,零MQ作为数据传输的基础,它支持发布/订阅、请求/响应以及推拉等多种消息模式,使得Storm能够有效...
ZeroMQ,全称为“零MQ”或“ØMQ”,是一个高性能、轻量级的消息队列系统,被广泛应用于分布式计算环境中。它不仅提供了一种高效的消息传递机制,而且具有易于使用、灵活和可扩展的特性,是构建分布式应用程序的重要...
ZeroMQ的核心理念是创建一个高性能、分布式的消息平台,使得应用程序可以像在同一个进程内通信一样进行跨网络通信。在“ZeroMQ Demo”这个项目中,你可以学习到如何使用ZeroMQ进行实际的编程实践。 首先,让我们来...