为什么 lmax disruptor 架构使用 2 个 disruptor?

Why lmax disruptor architecture use 2 disruptor?

在“lmax disruptor architecture design”中显示,他们正在获取输入并将其放入输入中断器中,并且有多个事件处理程序,如日志记录、解编组、业务逻辑,然后将其放入输出队列disruptor 和 output disruptor 有 Marshalling , journaling 等事件处理程序 ..

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

理解有误请指正

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

在某些情况下,将输出处理器与业务逻辑处理器放在同一个中断器中是一个完全有效的设计选择。好处是如果输入事件中已经包含了需要输出的数据,就不需要再复制了。

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

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