ZeroMQ发布者的多个主题

时间:2017-12-31 15:15:57

标签: python zeromq pyzmq

列表 a b 是键和值。变量b中的值被指定为topicnumbers,数据每10秒发送一个主题。这是一种分发信息的稳定方式吗?当密钥和主题扩展到100 +时,有人会在不久的将来看到任何困难吗?

import zmq
import random
import time
from  multiprocessing import Process

a = ['one', 'two', 'three', 'four', 'five']
b = [10, 20, 30, 40, 50]
d = dict(zip(a, b))

def pub001():
    port = "5100"    
    context = zmq.Context()
    socket = context.socket(zmq.PUB)
    socket.bind("tcp://*:%s" % port)

    while True:
        for i, x in d.items():
            topic = x
            number = random.randrange(1, 215)
            print(topic, number)
            socket.send_string("%d %d" % (topic, number))
            print("Data published", topic)
            time.sleep(10)

if __name__ == "__main__":
    a =Process(target=pub001, args=())
    a.start()

1 个答案:

答案 0 :(得分:0)

缩放明智?

没有。如果您阅读有关<_Topic-filter_> - 处理的详细信息,则有大约4个数量级的空间(10.000 x更大的树可用),因此无需预期几百个范围内的静态计数出现问题(如果您正确地缩放节点的存储资源,根据哪一方实际进行<_Topic-filter_>处理。

性能方面?

当然,如果机器与其他机器进行对话,那么设计一个更好的信息表示,而不是将其包装成一个极其冗余的人类可读的字符串,但效率极低({local + transport + remote}上都很贵 - {处理+存储}),数据表示。

对于最大延迟包络,一种更智能,位图(可能是TimeDOMAIN合并)有效载荷的方式更有意义。