Ale*_*nko 5 python message-queue zeromq
我的分布式应用程序由许多将任务推送到多个 FIFO 队列的生产者以及每个队列的多个消费者组成。所有这些组件都位于单个节点上,因此不涉及网络。
Python 的内置功能完全支持这种模式multiprocessing.Queue
,但是当我扩展应用程序时,队列实现似乎是一个瓶颈。我没有发送大量数据,因此内存共享并不能解决问题。我需要的是每秒快速保证传送 10^4-10^5 条小消息。每条消息大约为 100 字节。
我是快速分布式计算世界的新手,我对大量的选择感到非常困惑。有RabbitMQ、Redis、Kafka等。
ZeroMQ 是一个更加专注和紧凑的替代方案,它还有 nanomsg 和 nng 等后继者。此外,在没有代理的情况下,实现诸如具有保证交付的多对多队列之类的东西似乎并不简单。
如果有人能向我指出一种使用更快的框架之一执行此类操作的“标准”方法,我将非常感激。
在尝试了一些可用的实现和框架之后,我仍然找不到任何适合我的任务的东西。要么太慢,要么太重。
为了解决这个问题,我和我的同事开发了这个:https ://github.com/alex-petrenko/faster-fifo
fast-fifo 是 Python 的直接替代品multiprocessing.Queue
,并且速度明显更快。事实上,在我关心的配置(许多生产者,很少消费者)中,它的速度提高了 30 倍,因为它还支持get_many()
消费者端的方法。
它是无代理的、轻量级的,支持任意多对多配置,使用 pthread 同步原语为 Posix 系统实现。
归档时间: |
|
查看次数: |
4289 次 |
最近记录: |