是否有一些示例代码可用于从标准LinkedBlockingQueue迁移到LMAX' Disruptor体系结构?我有一个事件处理应用程序(单个生产者,多个消费者),可能会从更改中受益。
当我的目标是最大化吞吐量而不是最小化延迟时,这甚至有意义吗?
最佳答案
Mentaqueue 基于相同的想法-http://mentaqueue.soliveirajr.com/Page.mtw提供了单个生产者单个消费者队列-ojit_a,您可以检查代码,尽管我自己从未使用过它。
开箱即用的在此处提供了两种技术-我暂时不会编写代码,但是如果需要的话,可以这样做。
如果您确定排队时间很长,或者您有大量时间在争吵(锁定/同步),那么我肯定会关注Disruptor。通过查看对体系结构的调整是否可能导致Disruptor的干净使用,您将获得最大的 yield 。
是的,减少事务等待时间应有助于实现吞吐量,因此这很有意义,但这取决于阻止吞吐量的因素。这将成为一个非常笼统的评论-您应该确定阻止吞吐量的应用程序区域。
导致我使用Disruptor的指标是:-许多以类似方式处理的短期任务,内存争用,排序要求,流或繁重的IO(可以从批处理中受益)。
关于java - 从LinkedBlockingQueue迁移到LMAX的Disruptor,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16874534/