`
zuroc
  • 浏览: 1307740 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

史上最快 异步消息队列zeromq 简介

阅读更多


是的,我喜欢Z开头的东西.

http://www.zeromq.org/

zeromq是一个基于内存的消息队列

是一个有着青春和朝气的项目,可惜网站被和谐了

高吞吐,低延时,超乎你的想象.
ØMQ is already very fast. We're getting 13.4 microseconds end-to-end latencies and up to 4,100,000 messages a second today.

支持python,java,php,.net等各种语言

支持windows,linux和各种平台

zeromq性能很好,单纯的发简单的小文本消息和python的函数调用一样快(归功于他的本机服务).

在最新的版本中,加入了

April 8th, 2009: ØMQ/0.6 is available.
This version introduces load-balancing capabilities, on-disk offload for the large queues.

其中
on-disk offload for the large queues
这个特性的很让人喜欢的,可以避免内存被烧完.
(   更多细节见 http://www.zeromq.org/whitepapers:design-v06 )

给出一点代码演示

1.启动 zmq_server

nohup zmq_server --port 5300&
(默认端口是 5682)

2.发送请求端

import sys
from datetime import datetime
import libpyzmq
import time

z = libpyzmq.Zmq (host = "127.0.0.1:5300")

eid = z.create_exchange (
    name = 'EL',
    scope = libpyzmq.SCOPE_LOCAL,
    style = libpyzmq.STYLE_LOAD_BALANCING
)
z.bind ('EL', 'QG')

while True:
    z.send (eid, str(time.time()), True)
    time.sleep (1)

3.响应请求端
import libpyzmq
z = libpyzmq.Zmq (host = "127.0.0.1:5300")
z.create_queue (name = 'QG', scope = libpyzmq.SCOPE_GLOBAL,location ="127.0.0.1:5350")
while True:
    print z.receive (True)


我们可以做一个实验,
在响应请求端运行到一半时,
中断这个程序
然后等一会在运行它.

我们可以发现,
消息没有丢失,
这要归功于伟大的zmq_server


4.SCOPE_GLOBAL的端口可以在一个配置文件中指定   
然后这样启动 zmq_server --config-file config.xml

<root>
    <node name = "my_exchange" location = "zmq.tcp://192.168.0.115:5556"/
</root>

然后程序中就可以不用写端口了

5.
本质上,
zmq_server是一个消息分发系统
创建一个exchange 然后往中queue写东西

data distribution的方式是每一个queue写一份数据
Load balancing的方式是轮训的写queue,只写一份
2
0
分享到:
评论
6 楼 phlsbg 2010-10-06  
在win7下,vs2010编译为什么没有zmq_server.exe


我的bin目录有:
local_lat
local_thr
remote_lat
remote_thr
zmq_forwarder
zmq_queue
zmq_streamer

只有这些,难道是我的不对?
从官方的文档中似乎没有找到这些东西的说明呀。
5 楼 linkerlin 2010-09-13  
看上去不错。
不错暂时没有地方用。
这东西貌似用在Twitter类项目上不错。
4 楼 hansir 2009-12-10  
把libpyzmq.a所在的目录加入到PYTHONPATH中就应该可以了。
set PYTHONPATH=/usr/local/zmq/site-packages

我正在准备在项目中使用0MQ, 希望和大家探讨一下。

useless 写道
cm2355 写道
请教一个问题,我在Mac os下安装zeromq,编译选项里已经加了--with-python
安装完成后,site-packages目录里也有libpyzmq.a  libpyzmq.dylib  libpyzmq.la这三个文件,但是import libpyzmq总是报错“ImportError: No module named libpyzmq”,望解答,谢谢



也遇到这问题了,除了OS,错误完全一致。
CentOS x64, configure 时指定了 --prefix=/usr/local/zmq
安装完成后,site-packages 目录里也有 libpyzmq.a  libpyzmq.dylib  libpyzmq.la 三个文件; import libpyzmq 报错 "ImportError: No module named libpyzmq "..

3 楼 useless 2009-11-27  
cm2355 写道
请教一个问题,我在Mac os下安装zeromq,编译选项里已经加了--with-python
安装完成后,site-packages目录里也有libpyzmq.a  libpyzmq.dylib  libpyzmq.la这三个文件,但是import libpyzmq总是报错“ImportError: No module named libpyzmq”,望解答,谢谢



也遇到这问题了,除了OS,错误完全一致。
CentOS x64, configure 时指定了 --prefix=/usr/local/zmq
安装完成后,site-packages 目录里也有 libpyzmq.a  libpyzmq.dylib  libpyzmq.la 三个文件; import libpyzmq 报错 "ImportError: No module named libpyzmq "..
2 楼 zuroc 2009-05-17  
不清楚
发邮件到他们的列表中问吧
1 楼 cm2355 2009-05-13  
请教一个问题,我在Mac os下安装zeromq,编译选项里已经加了--with-python
安装完成后,site-packages目录里也有libpyzmq.a  libpyzmq.dylib  libpyzmq.la这三个文件,但是import libpyzmq总是报错“ImportError: No module named libpyzmq”,望解答,谢谢

相关推荐

    消息队列zeromq的go语言测试实例包

    消息队列zeromq的go语言测试实例包,为学习安装部署zeromq的同学提供,注意该安装包中的测试实例为go语言版本,要根据各位安装的zeromq版本下载。

    消息队列zeromq学习的安装包之一libsodium

    消息队列在软件开发中扮演着重要的角色,它允许不同进程或服务之间异步传递消息,提高了系统的并行性和容错性。在本安装包中,libsodium是一个关键组件,它是zeromq依赖的安全库,提供了多种加密算法和安全功能。 ...

    消息队列zeromq4.1.8版本安装包

    zeromq库是一个高效的消息队列系统,常用于构建分布式应用程序。它的设计目标是提供一个简单易用、高性能且可移植的接口,使得开发者能够轻松地实现进程间通信(IPC)和网络通信。zeromq提供了多种编程语言的API,...

    消息队列zeromq的c语言安装包czmq-4.2.1版本

    zeromq(ZeroMQ)是一个开源的消息中间件,它提供了高级消息队列的功能,可以实现进程间通信(IPC)和网络间通信(IPC),支持多种协议,如TCP、UDP、PGM以及PUB/SUB、REQ/REP、DEALER/ROUTER等多种消息模式。zeromq...

    ZeroMQ-一个基于内存的消息队列

    ZeroMQ,又称为0MQ或ØMQ,是一个高度可扩展的、高性能的开源消息队列系统,它在设计上借鉴了传统的消息中间件概念,但更注重轻量级和灵活性。这个库允许开发者构建分布式应用,通过在进程间传递消息来实现异步通信...

    Zeromq的异步req/rep模式

    zeromq 的异步demo,简单描述zmq的事例

    zeromq消息队列

    零MQ(ZeroMQ)是一种高性能、轻量级的消息队列系统,它被广泛应用于分布式计算环境中,用于在不同进程间高效地传输数据。ZeroMQ不仅仅是一个消息队列,它更像一个网络通信框架,提供了多种高级通信模式,如发布/...

    用消息队列实现的简单聊天程序

    消息队列在IT行业中是一种非常重要的中间件技术,它主要用于应用程序间的异步通信,通过将消息放入消息队列,使得发送方和接收方无需同时在线即可完成数据交换,提高了系统的可扩展性和可靠性。在这个“用消息队列...

    zeromq教程

    ZeroMQ是一个很有个性的项目,它原来是定位为“史上最快消息队列”,所以名字里面有“MQ”两个字母,但是后来逐渐演变发展,慢慢淡化了消息队列的身影,改称为消息内核,或者消息层了。从网络通信的角度看,它处于...

    消息队列,消息队列的使用场景,C,C++源码.zip

    消息队列是一种在分布式系统中用于解耦组件和实现异步通信的重要技术。它通过将消息存储在一个中间队列中,使得生产者可以发送消息而不必立即等待消费者的响应,消费者也可以在适合的时间处理这些消息,从而提高系统...

    消息队列如何理解?

    1. **异步处理:** 如上所述,这是消息队列最典型的应用场景之一。例如,在用户注册后需要发送欢迎邮件和短信验证码的情况下,通过消息队列异步处理这些操作,可以显著提高用户体验和系统整体性能。 2. **应用解耦...

    分布式架构之消息队列.pdf

    综上所述,消息队列在分布式架构中扮演着至关重要的角色。它通过异步处理和解耦,提高了系统的响应速度和稳定性,同时能够有效地应对高并发场景,确保服务的连续性和可靠性。因此,理解和掌握消息队列的使用对于构建...

    消息队列的实现

    消息队列在IT行业中是一种非常重要的中间件技术,主要用于解耦系统组件,提供异步通信的能力,以及提高系统的处理能力和可扩展性。在本话题中,我们将深入探讨消息队列的实现,特别是与VC(Visual C++)相关的实现...

    提供http接口的消息队列

    在当今的分布式系统中,消息队列(Message Queue,MQ)作为一种重要的中间件,被广泛应用于解耦系统组件、处理异步任务以及平滑系统负载等方面。本文将探讨如何利用libevent库创建一个基于HTTP接口的消息队列,同时...

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

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

    消息队列模型

    消息队列模型是一种在分布式系统和并发编程中广泛使用的架构模式,它主要用于处理异步通信和解耦系统组件。在“消息队列模型”中,应用程序通过将消息发送到一个中间的消息队列,而不是直接调用其他服务或进程,从而...

    c++的消息中间件zeromq

    **零MQ(ZeroMQ)**,也常写作0MQ,是一种高效、轻量级的消息队列中间件,它被广泛赞誉为史上最强大的消息中间件。它的核心特性在于能够在极低的延迟下——如30微秒内——完成消息的传递,这种极致的性能使其在实时...

    ZeroMQ 云时代极速消息通信库(完整版)

    其设计允许消息在发送者和接收者之间以最快速度传递,即使这些组件是分布在网络上的不同位置。 2. 连接模式:ZeroMQ支持多种传输模式,包括发布-订阅(Publish-Subscribe)、请求-应答(Request-Reply)、推送-拉取...

    ZeroMQ云时代极速消息通信库PDF带书签目录高清版

    ZeroMQ,又称ØMQ或0MQ,是一个轻量级的、高性能的消息队列系统,广泛应用于分布式计算和微服务架构中。这本书的高清PDF版本带有书签和完整目录,方便读者快速定位和查阅相关内容。 ZeroMQ的核心理念是提供一种简单...

    基于P2P网络的分布式消息队列.pdf

    点对点模型是最传统和常见的消息队列模型,支持一对一、一对多、多对多、多对一等多种配置方式。该模型的特点包括消息被一个接收者接收一次后即从队列中删除,发送者和接收者之间无时间相关性,以及可在运行时动态...

Global site tag (gtag.js) - Google Analytics