为什么LMAX破坏者架构使用2个破坏者?

时间:2019-05-07 18:50:48

标签: eventhandler circular-buffer disruptor-pattern lmax

在“ lmax破坏者体系结构设计”中显示,他们正在接受输入并将其放入输入破坏者中,并且存在多个事件处理程序,例如日志记录,解组编,业务逻辑,然后将其排队到输出破坏者中。输出破坏者具有编组,日记等事件处理程序。

我的疑问是..为什么不将一个中断器与输入和输出中断器的所有组合事件处理程序一起使用。我们可以通过以下方式处理事件:在业务逻辑处理输出的干扰事件之后,将调用该事件。

如果我误解了,请纠正我。

1 个答案:

答案 0 :(得分:2)

article 中可能存在多个输出干扰器。

在某些情况下,将输出处理器置于与业务逻辑处理器相同的干扰器中是一种完全有效的设计选择。优点是如果输入事件中已经包含需要输出的数据,则无需复制。

但是,在这种情况下,其中一个很慢,可能会导致干扰器填满容量并阻止业务逻辑处理器处理新事件。

通过将输出中断器作为单独的环形缓冲区,业务逻辑处理器可以决定如何处理速度较慢且环形缓冲区已满的输出中断器。如果输出干扰器需要对某些外部资源的独占访问,它还允许多个输入干扰器共享同一个输出干扰器。