`
zuroc
  • 浏览: 1289988 次
  • 性别: 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”,望解答,谢谢

Global site tag (gtag.js) - Google Analytics