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

vitasa 2009-04-30

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

http://www.zeromq.org/

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

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

高吞吐,低延时,超乎你的想象.

ØMQisalreadyveryfast.We'regetting13.4microsecondsend-to-endlatenciesandupto4,100,000messagesasecondtoday.

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

支持windows,linux和各种平台

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

在最新的版本中,加入了

April8th,2009:ØMQ/0.6isavailable.

Thisversionintroducesload-balancingcapabilities,on-diskoffloadforthelargequeues.

其中

on-diskoffloadforthelargequeues

这个特性的很让人喜欢的,可以避免内存被烧完.

(更多细节见http://www.zeromq.org/whitepapers:design-v06)

给出一点代码演示

1.启动zmq_server

nohupzmq_server--port5300&

(默认端口是5682)

2.发送请求端

importsys

fromdatetimeimportdatetime

importlibpyzmq

importtime

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')

whileTrue:

z.send(eid,str(time.time()),True)

time.sleep(1)

3.响应请求端

importlibpyzmq

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

z.create_queue(name='QG',scope=libpyzmq.SCOPE_GLOBAL,location="127.0.0.1:5350")

whileTrue:

printz.receive(True)

我们可以做一个实验,

在响应请求端运行到一半时,

中断这个程序

然后等一会在运行它.

我们可以发现,

消息没有丢失,

这要归功于伟大的zmq_server

4.SCOPE_GLOBAL的端口可以在一个配置文件中指定

然后这样启动zmq_server--config-fileconfig.xml

<root>

<nodename="my_exchange"location="zmq.tcp://192.168.0.115:5556"/

</root>

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

5.

本质上,

zmq_server是一个消息分发系统

创建一个exchange然后往中queue写东西

datadistribution的方式是每一个queue写一份数据

Loadbalancing的方式是轮训的写queue,只写一份

相关推荐

pfjia / 0评论 2013-08-02