您的位置:首页 > 编程语言 > Python开发

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

2016-04-29 12:01 555 查看
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,只写一份
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: