是否有一些示例代码可用于从标准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/

    10-09 04:22