gpt4 book ai didi

python & ZeroMQ——处理大尺寸消息的能力?

转载 作者:行者123 更新时间:2023-12-01 06:09:08 24 4
gpt4 key购买 nike

我想使用 python 构建一个类似于 zeroMQ's ventilator / sink scheme 的应用程序

假设我们有 10 个 Workers,全部运行在同一个多核服务器上。

假设每2[秒]左右,每个Worker都会向接收器推送一条大小为5[MB]的消息。因此,接收器必须每隔2[秒]左右处理总共 50[MB] (= 10 x 5[MB])。

如果 10 个工作人员位于不同的机器上,我知道网络可能会成为潜在的瓶颈。

如果 10 个工作人员必须将数据写入磁盘 (I/O),我知道磁盘可能是一个潜在的瓶颈。

考虑到所有 10 个 Worker 都在同一台机器上,我们应该预计会出现哪些瓶颈?

例如,同一个 10 个 Workers 是否可以每 2[sec] 左右推送一条大小为 10[MB] 的消息?他们能否每隔2[秒]左右推送一条大小为 20[MB] 的消息?

zmq 有哪些限制?

Linux 环境中使用 pythonzeroMQ 时应该预期哪些类型的瓶颈?

最佳答案

在同一台服务器上使用 PUSH/PULL 我已经能够以 400MB/秒的速度最大程度地写入 raid 阵列(写入速度瓶颈)。有 10GbE 基准测试结果 here 。我建议构建一些简单的基准,性能将取决于许多因素,例如消息格式、大小等。

例如,一个完全微不足道的基准测试显示,zeromq 能够在我的计算机上在 12.3 毫秒内发送 100 条 10mb 消息:

# server
import zmq

context = zmq.Context()
reciever = context.socket(zmq.PULL)
reciever.bind('tcp://127.0.0.1:5555')

while True:
reciever.recv()

# client
import os, zmq

context = zmq.Context()
pusher = context.socket(zmq.PUSH)
pusher.connect('tcp://127.0.0.1:5555')

message = ' ' * 10485760

>>> %timeit pusher.send(message)
100 loops, best of 3: 12.3 ms per loop

关于python & ZeroMQ——处理大尺寸消息的能力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6701819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com