繁体   English   中英

LMAX Disruptor与JMS提供商

[英]LMAX Disruptor vs JMS Provider

我被告知有一段时间LMAX干扰器以及与标准消息队列相比的性能如何。 我下载了最新版本,看到它是一个普通的JAR,包含许多类和类型,都围绕着它的超快速RingerBuffer对象。

最终,在一天结束时,基于队列的JMS提供程序将归结为管理Java队列对象(或者更可能是并发队列)的大量代码。 所以在这方面,我看到了LMAX Disruptor和JMS提供者之间的比较(或者更确切地说,它是内部队列)。

但是JMS提供者不仅仅是几个队列。 它是一个完整的中间件应用程序,用于处理来自/来自消费者和生产者的消息。 我想知道在LMAX土地上是否有JMS提供商?

以与任何其他JMS代理类似的方式连接到“Disruptor Broker”并向/从其读取/写入消息将是很好的。

这样的事情是存在的,还是我离开这里?

主要区别在于Disruptor设计用于同一个过程。 为什么? 出于性能原因(简答)。 更长的答案是,如果你不小心使用JMS接口的额外开销,套接字连接,锁定和多线程将有更高的开销,使Disruptor相形见绌。

快速JMS服务每秒可处理超过20,000条消息,但破坏程序的设计目的是处理2000万条消息的速率。 要实现这一点,这意味着您无法执行JMS假定的某些事情。 (往上看)

这是组织开发自己的内部框架(CRUD,ORM等)的时候。 我有机会使用的框架之一是内部消息缓冲区(中介),它确保应用程序部分之间的异步解耦,如消息使用者和更慢(间歇性)处理/持久/网络部分。 该中介是基于ActiveMQ构建的,它是随应用程序启动的,仅用于专用的应用程序实例。

如今,我们有一个环形缓冲框架Disruptor(或基于它的Reactor)可用,没有理由再次发明轮子(感谢开源)。 Disruptor的目的是将异步去耦与FIFO缓冲区相结合,使其使用起来更加快捷方便。

Disruptor优于JMS的优势:

  1. 如何在上面提到它是相同的过程,它更快。
  2. 无需支持,维护和支付外部中间件组件。
  3. 它在应用程序内部,无需涉及任何TCP连接,网络或其他垃圾外部缓慢的瓶颈资源,并依赖于它和他们的团队。
  4. Disruptor具有许多功能,如并行消费和处理(工作者与处理程序)策略,开箱即用,或者您可以根据行为要求实施自己的策略。

破坏者维基

暂无
暂无

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

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