Mat*_*olf 7 c# erlang producer-consumer rabbitmq
我寻找如何通过RabbitMQ加速消息传输的想法.
我在Windows 64位上安装了最新版本,在本地计算机上运行服务器,我也通过C#实现发布和使用该服务器.我最初以每秒40,000条消息的速度增加,这令人印象深刻但不符合我的需求(我与一个自定义二进制阅读器竞争,每秒可以处理2400万个未解析的16字节大字节数组;显然我不希望接近这个但是我试图改善至少).我需要尽快发送大约115,000,000条消息.我不想保留数据,并且连接将直接针对单个消费者.然后,我构建了16b字节数组的块,并在没有任何改进的情况下发布到总线上.传输速率最高可达45mb /秒.我发现这非常慢,因为最终它应该归结为原始传输速度,因为我可以创建大小为几兆字节的字节数组,其中交换机的路由效率与原始传输速度相比可以忽略不计.为什么我的消息总线最大传输速度为45mb /秒?
碰撞...和更新: 很长一段时间没有看到这个问题的任何答案。我有点惊讶没有一个 RabbitMQ 开发人员插话。我广泛使用了 RabbitMQ 和 ZeroMQ。在查看高吞吐量进程内消息传递解决方案时,我认为 RabbitMQ 无法胜任这项任务。代理实现,尤其是解析逻辑是提高吞吐量的主要瓶颈。我从可能的选项列表中删除了 RabbitMQ。
有一份白皮书描述了他们如何提供管理低延迟、高吞吐量期权金融数据流的解决方案,但在我看来,他们所做的只是向其投入硬件,而不是提供针对低延迟、高吞吐量要求的解决方案。
在我更深入地研究了文档之后,ZeroMQ 做得非常出色。我可以在进程中运行通信,它提供了足够稳定的推/拉、发布/订阅、请求/代表以及我需要的配对/配对模式。我一直在寻找 ZeroMQ 不提供的发布/订阅模式中的阻塞逻辑(它会在超过高水位线时丢弃消息),但推/拉模式提供阻塞。所以,几乎我所需要的一切都已提供。我唯一的抱怨是他们对事件处理的理解;通过 poll/ Multiplex 实现的事件结构不是很令人满意。
| 归档时间: |
|
| 查看次数: |
1270 次 |
| 最近记录: |