首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从LinkedBlockingQueue迁移到LMAX‘Disruptor

从LinkedBlockingQueue迁移到LMAX‘Disruptor
EN

Stack Overflow用户
提问于 2013-06-01 23:56:35
回答 1查看 1.7K关注 0票数 8

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-02 14:11:46

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

Disruptor开箱即用,在这里提供了两种技术--我还不打算讨论代码,但如果您需要的话,可以这样做。

  1. 它允许对事件处理程序进行排序,您可以对其进行配置,以便每个处理程序将并行处理所有请求;每个请求都由每个处理程序处理。
  2. 工作池实现,允许工作线程池处理每个请求;每个请求将从线程池中处理一次。

如果你已经发现排队花了很长时间,或者你有大量的时间竞争(锁/同步),那么我肯定会看看Disruptor。通过查看对体系结构的调整是否可能导致对Disruptor的干净使用,您将获得最佳收益。

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

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

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16874534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档