gpt4 book ai didi

java - 从 LinkedBlockingQueue 迁移到 LMAX 的 Disruptor

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:46:49 25 4
gpt4 key购买 nike

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

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

最佳答案

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

开箱即用的

Disruptor 在这里提供了两种技术 - 我不会深入探讨代码,但如果您需要,可以这样做。

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

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

如果您发现排队需要很长时间,或者您有大量时间争用(锁/同步),那么我肯定会考虑 Disruptor。通过查看对您的体系结构的调整是否会导致对 Disruptor 的干净使用,您将获得最大的好处。

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

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

关于java - 从 LinkedBlockingQueue 迁移到 LMAX 的 Disruptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16874534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com