`
gaojingsong
  • 浏览: 1210640 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

ZeroMQ 简介

阅读更多



 

 

一、ZeroMQ 的背景介绍

 

  引用官方的说法: “ZMQ (以下 ZeroMQ 简称 ZMQ)是一个简单好用的传输层,像框架一样的一个 socket library,他使得 Socket 编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ 的明确目标是“成为标准网络协议栈的一部分,之后进入 Linux 内核”。现在还未看到它们的成功。但是,它无疑是极具前景的、并且是人们更加需要的“传统”BSD 套接字之上的一层封装。ZMQ 让编写高性能网络应用程序极为简单和有趣。”

 

  近几年有关”Message Queue”的项目层出不穷,知名的就有十几种,这主要是因为后摩尔定律时代,分布式处理逐渐成为主流,业界需要一套标准来解决分布式计算环境中节点之间的消息通信。几年的竞争下来,Apache 基金会旗下的符合 AMQP/1.0标准的 RabbitMQ 已经得到了广泛的认可,成为领先的 MQ 项目。

 

  与 RabbitMQ 相比,ZMQ 并不像是一个传统意义上的消息队列服务器,事实上,它也根本不是一个服务器,它更像是一个底层的网络通讯库,在 Socket API 之上做了一层封装,将网络通讯、进程通讯和线程通讯抽象为统一的 API 接口。

 

  二、ZMQ 是什么?

 

  阅读了 ZMQ 的 Guide 文档后,我的理解是,这是个类似于 Socket 的一系列接口,他跟 Socket 的区别是:普通的 socket 是端到端的(1:1的关系),而 ZMQ 却是可以N:M 的关系,人们对 BSD 套接字的了解较多的是点对点的连接,点对点连接需要显式地建立连接、销毁连接、选择协议(TCP/UDP)和处理错误等,而 ZMQ 屏蔽了这些细节,让你的网络编程更为简单。ZMQ 用于 node 与 node 间的通信,node 可以是主机或者是进程。

 

  三、本文的目的

 

  在集群对外提供服务的过程中,我们有很多的配置,需要根据需要随时更新,那么这个信息如果推动到各个节点?并且保证信息的一致性和可靠性?本文在介绍 ZMQ 基本理论的基础上,试图使用 ZMQ 实现一个配置分发中心。从一个节点,将信息无误的分发到各个服务器节点上,并保证信息正确性和一致性。

 

  四、ZMQ 的基本模型

ZeroMQ将消息通信分成4种模型,分别是一对一结对模型(Exclusive-Pair)、请求回应模型(Request-Reply)、发布订阅模型(Publish-Subscribe)、推拉模型(Push-Pull)。这4种模型总结出了通用的网络通信模型,在实际中可以根据应用需要,组合其中的2种或多种模型来形成自己的解决方案。

 

 

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

 

1、无锁的队列模型

 

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

 

2、批量处理的算法

 

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

 

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

 

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

  • 大小: 27.7 KB
0
3
分享到:
评论

相关推荐

    zeromq的4.2.5版本windows环境64位编译dll

    **zeromq简介** zeromq提供了一种高性能的网络通信框架,支持多种通信模式,如发布/订阅、请求/响应、推/拉以及对等模式。它的设计目标是简化多线程和分布式系统的开发,使得开发者可以专注于业务逻辑,而不是底层...

    ZeroMQ初体验.rar_ZeroMQ初体验_zeromq

    **ZeroMQ简介** ZeroMQ(零消息队列)是一个开源的消息中间件,它提供了高性能、分布式消息传递能力,常用于构建微服务、并发系统和分布式计算。ZeroMQ的核心理念是提供一种轻量级的、高性能的“插座”(Socket)通信...

    ZeroMQ-Guide(中文版)

    #### 一、ZeroMQ简介与背景 - **ZeroMQ**,又称为0MQ或ØMQ,是一个高性能的、轻量级的消息队列库,专为分布式系统设计。它提供了一个高级的、灵活的API,允许开发者轻松构建异步通信应用,而无需深入了解底层网络...

    ZeroMQ Pieter Hintjens

    1. **ZeroMQ简介**: ZeroMQ的核心理念是为开发者提供一种轻量级、分布式的“插座”(socket)通信模型,这些插座可以跨进程、跨网络甚至跨操作系统工作。它的设计目标是简化点对点和发布/订阅模式的消息传递,以及...

    zeromq C# 接口实现

    zeromq简介 zeromq(也称为0MQ或ZeroMQ)是一个高性能的消息传递库,它提供了多种消息模式,如发布/订阅、请求/响应和推/拉等。zeromq的核心特性包括: - **零依赖**:它不需要专门的消息中间件,而是作为一个库...

    ZeroMQ 云时代极速消息通信库.pdf

    #### 一、ZeroMQ简介 ZeroMQ(有时也被称作0MQ或 ØMQ)是一种高级的分布式应用程序框架,它为开发人员提供了高效、灵活的消息队列机制,旨在解决分布式计算环境下的消息传递问题。ZeroMQ的设计理念是简单易用,...

    编译好的zeromq-4.2.5-64位.rar

    1. **ZeroMQ简介**:ZeroMQ(也称为ØMQ或0MQ)是一个跨平台的消息队列库,它为开发人员提供了轻量级、高性能的消息传递机制。它不仅是一个库,还是一种设计模式,可以将网络通信抽象成简单的端口和插座模型,使得...

    ZeroMQ 云时代极速消息通信库

    ZeroMQ简介** ZeroMQ,源自 CZMQ 项目,是一个跨平台的开源消息中间件,其设计目标是提供一种类似网络协议的抽象层,使得开发人员能够方便地构建分布式的、多线程的应用程序。ZeroMQ 提供了多种消息模式,如发布/...

    ZeroMQ 云时代极速消息通信库 PDF电子书下载

    1. ZeroMQ简介 ZeroMQ(通常缩写为0MQ,也被称作ØMQ)是一个开源的网络库,它允许进程之间或者通过TCP/IP连接进行更为快速和高效的通信。ZeroMQ提供了一组套接字(sockets),这些套接字抽象了不同的通信模式,并...

    ZeroMQ使用介绍

    #### 一、ZeroMQ简介 ZeroMQ(也称为0MQ)是一种高度灵活的消息传递库,它提供了高级别的抽象,使得开发者能够轻松地构建分布式或并发应用程序。ZeroMQ最初设计的目标是简化网络编程,并提供一种轻量级、高性能的...

    zeromq中文教程

    #### 一、zeromq简介 ØMQ(ZeroMQ,0MQ,zmq)是一种开源的消息队列库,它简化了分布式应用程序的开发工作,使任何地方的任何代码都可以互联。ØMQ 的设计目标之一就是提高系统的效率和性能。它提供了一个灵活的API...

    不错的zeromq学习资料

    #### 一、zeromq简介 ØMQ(ZeroMQ)是一款功能强大且高效的消息传递库,以其轻量级的设计理念和卓越的性能受到广泛认可。它不仅适用于高性能计算环境,同时也适用于分布式系统的开发。ZeroMQ的主要特点在于其简单...

    zeromq 云时代极速消息通信库

    ### ZeroMQ 简介 ZeroMQ(通常缩写为ZeroMQ、0MQ或ØMQ)是一个高性能的消息库,用于在多个计算节点之间传递消息,它提供了异步消息的通信模式,可以被用作消息队列、消息代理或消息传递的中间件。ZeroMQ的主要设计...

    multithreaded-server.c.zip_zeromq

    **ZeroMQ简介** ZeroMQ,又称为0MQ或ØMQ,是一个轻量级的消息中间件,它为应用程序提供了一个灵活的异步消息模式,包括发布/订阅、请求/响应和推送/拉取等。ZeroMQ不仅简化了网络通信,还提供了高性能和容错能力,...

    ZeroMQ Guide

    #### 一、ZeroMQ简介与特性 **ZeroMQ**(也称为**ØMQ**)是一种高性能的、开源的消息队列库,它支持多种消息模式,包括点对点、发布/订阅、请求/响应等,并且可以在各种网络环境中高效地传输数据。该指南由Pieter ...

    [ZeroMQ(2013.3)].Faruk.Akgul.文字版.pdf

    #### 一、ZeroMQ简介 ZeroMQ(通常简称ZMQ)是一款开源的、高性能的消息队列库,它提供了多种消息模式,能够帮助开发者轻松构建分布式应用程序。ZeroMQ的核心优势在于其灵活性、易用性和高效性。它支持多种操作系统...

    lzmq:Lua绑定到ZeroMQ

    **ZeroMQ简介** ZeroMQ是一个轻量级的消息中间件,它提供了一种灵活的、高性能的网络通信框架。它的设计目标是提供一个在各种编程语言中都可以轻松使用的API,以简化跨进程、跨网络的异步消息传递。ZeroMQ支持多种...

    ZERQ-NETMQ中文使用说明文档

    #### ZeroMQ简介及核心概念 ZeroMQ(也可写作ØMQ、0MQ或ZMQ)是一款轻量级的开源消息队列软件,其设计初衷是为了简化分布式系统中应用程序间的通信。ZeroMQ最大的特点是无需独立的消息中间件服务器,而是让消息...

    ZreoMq-NetMq中文文档

    #### 一、ZeroMQ简介与特点 **ZeroMQ**,有时也被写作ØMQ、0MQ或ZMQ,是一款轻量级的开源消息队列软件,其设计目的是为了简化分布式系统的开发工作。与传统的消息中间件相比,ZeroMQ没有独立的服务器组件,消息...

    jzmq源码.zip

    **ZeroMQ简介** ZeroMQ,又称为ØMQ或0MQ,是一个轻量级的消息中间件,它提供了一种灵活的、高性能的通信模式,适用于分布式系统中的进程间通信。ZeroMQ通过抽象出多种消息模式(如PUB/SUB、REQ/REP、DEALER/ROUTER...

Global site tag (gtag.js) - Google Analytics