繁体   English   中英

ZeroMQ发布者中的多个主题

[英]ZeroMQ multiple topics in publisher

列表ab是键和值。 变量b中的值被分配为主题编号,并且每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()

扩展规模?

否。如果您阅读有关<_Topic-filter_> -processing的详细信息,则存在<_Topic-filter_>个数量级的空间(10.000 x更大的树<_Topic-filter_>工作),因此不必担心数百个范围内的静态计数会带来问题(如果您正确地缩放了节点的存储资源,请按照实际在哪一侧进行<_Topic-filter_>处理)。


性能方面?

当然,如果机器彼此交谈,则设计出更好的信息表示形式,而不是将其包装到人类可读的极其冗余的字符串中,但效率极低(并且在{本地+传输+远程}-{处理+存储上都非常昂贵}),数据表示。

对于最大的延迟包络,一种更智能的位图有效负载(可能还有TimeDOMAIN合并)可以让您感觉更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM