2

我对LMAX Disruptor的理解是,它是一个 JAR,里面装满了可怕的快速、可怕的并发 Java 代码,每秒可以处理 2000 万条消息(如果使用正确的话)。

我们目前有一个 ActiveMQ 实例,它在整个过程中运行速度很慢,大约每秒 400 条消息。我想知道我们是否会从重构代码以使用 LMAX 中受益,但有以下担忧:

  • 如何拥有 1 个发布者和多个(竞争)消费者
  • LMAX 如何存储/存放它的信息?在记忆中?
  • 故障转移 - LMAX 是否有故障转移协议/机制
  • 磁盘 I/O - LMAX 可以将未使用的消息保存到磁盘并在以后恢复它们吗?

而且,如果我对所有这些完全不了解,并且似乎完全误解了 LMAX Disruptors 的使用,那么有人可以提供一个具体的例子来说明何时使用它吗?提前致谢!

4

1 回答 1

8

Disruptor 不是跨进程或跨服务器消息传递系统的直接替代品。它被设计为一个进程内跨线程消息传递系统。认为替换通常在它们之间具有队列的处理线程之间的依赖关系图很有用。这对于在线程之间使用管道或多播模式的设计非常有用。ActiveMQ 有不同的用途。

基于 Disruptor 的系统中的线程更像是长寿的 Actor,它们通过 Disruptor 传递事件来进行通信。

有关一些好的示例,请查看源代码提供的性能测试。

于 2013-03-30T13:21:40.627 回答