首页 > 解决方案 > 控制 ZMQ Streamer 设备上的流量的最佳实践?

问题描述

想象一下,我有一个类似于下面模板中的流媒体设备。

建筑

图片来自这里

def worker(backend_port):
    context = zmq.Context()
    socket = context.socket(zmq.PULL)
    socket.connect("tcp://127.0.0.1:%d" % backend_port)
    while True:
        task = socket.recv()
        # do something

def streamer(frontend_port):# it's called streamer because streams files from hdfs
    context = zmq.Context()
    socket = context.socket(zmq.PUSH)
    socket.connect("tcp://127.0.0.1:%d" % frontend_port)
    while True:
        #  get the file
        #  prepare it
        socket.send(msg, copy=False)

number_of_workers = 16
number_streamers = 10

frontend_port = 7559
backend_port = 7560

streamerdevice  = ProcessDevice(zmq.STREAMER, zmq.PULL, zmq.PUSH)
streamerdevice.bind_in("tcp://127.0.0.1:%d" % frontend_port )
streamerdevice.bind_out("tcp://127.0.0.1:%d" % backend_port)
streamerdevice.setsockopt_in(zmq.IDENTITY, b'PULL')
streamerdevice.setsockopt_out(zmq.IDENTITY, b'PUSH')
streamerdevice.start()

for i in range(number_of_workers):
    p = Process(target=yolo, args=(backend_port,))
    p.start()

for i in range(number_streamers):
    s = Process(target=streamer, args=(frontend_port,))
    s.start()

提供更多信息的信息是图像,因此尺寸更大。我正在使用零拷贝。在我的情况下,性能是最重要的一点,因为我的跑步规模非常大。


标签: zeromqpyzmq

解决方案


如何运行多线程 ZMQ 设备?

运行多线程 ZeroMQ 服务的最简单方法是实例化相应zmq.Context( nIoTHREADs )的 for nIoTHREADs > 1. 有更多用于扩展性能的性能调整配置选项。查看pyzmq包装器,此 ZeroMQ 工具如何应用于实际的pyzmq包装器代码并询问维护人员,他们的设置和/或配置是否保持固定或只是在这方面未发布。ZeroMQ 足够灵活,可以提供执行此操作的方法。

...随着您增加输入连接的数量,设备(这是一个单向队列)不可扩展

好吧,设备既不是单向队列,也不是不可扩展的。正好相反。

是否可以以多线程方式运行它?

是的。

扩展它的最佳方法是什么?

这在很大程度上取决于您的系统设计应该满足的确切消息传递和信令要求。高容量、超低延迟、几乎线性扩展、自适应连接处理、应用程序域用户定义协议只是需要考虑的其中一些属性。

是因为队列变得如此之大,这就是它变慢的原因吗?

该帖子包含零条信息,既不涉及尺寸,也不涉及任何速度观察和/或期望。在其他记录的测试设置中,ZeroMQ 在缓冲区管理方面非常可爱,如果使用零拷贝和其他性能驱动的方法,那么没有人可以在更详细的层面上提供帮助。

有没有办法随时知道队列有多大?

不,没有这样的“内置”功能,会花费时间和资源来计算它。如果您的系统需要此类附加功能,您可以自由添加此类附加功能,而无需让其他用例为用例添加一点此类附加代码,其中消息计数和队列大小报告是没有意义的。

REQ-REP没有模式的设备有任何负载平衡策略吗?

是的,有许多现成的可扩展正式通信原型模式,还有一些场景可以超越现成的双边分布式行为原型原语,允许构建一个定制的、根据需要控制的负载均衡器根据自己的意愿和口味。


推荐阅读