繁体   English   中英

从LinkedBlockingQueue迁移到LMAX'Disruptor

[英]Migrating from LinkedBlockingQueue to LMAX' Disruptor

是否有一些示例代码用于从标准LinkedBlockingQueue迁移到LMAX的Disruptor架构? 我有一个事件处理应用程序(单个生产者,多个消费者)可能会从更改中受益。

当我的目标是最大化吞吐量而不是最小化延迟时,它是否有意义?

Mentaqueue基于相同的想法提供单个生产者单个消费者队列 - http://mentaqueue.soliveirajr.com/Page.mtw ,您可以检查代码,但我自己从未使用过它。

Disruptor开箱即用提供了两种技术 - 我不会进入代码但是如果你需要可以这样做。

  1. 它允许一种对事件处理程序进行排序的方法,您可以对其进行配置,以便每个处理程序将并行处理所有请求; 每个请求都由每个处理程序处理。

  2. 一个Worker Pool实现,允许每个工作线程池处理一个请求; 每个请求都将从线程池中处理一次。

如果您已经确定排队需要很长时间,或者您有很长时间争用(锁定/同步),那么我肯定会看看Disruptor。 通过查看对您的体系结构的调整是否可以导致干扰器的清洁使用,您将获得最大的好处。

是的,减少事务延迟应该有助于实现吞吐量 ,因此它可能有意义,但这取决于阻碍吞吐量的因素。 这将成为一个非常笼统的评论 - 您应该确定应用程序阻碍吞吐量的区域。

导致我使用Disruptor的指标是 - 许多以类似方式处理的短期任务,内存争用,排序要求,流式传输或重IO(可以从批处理中受益)。

暂无
暂无

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

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