为啥 lmax 干扰器架构使用 2 个干扰器?

Posted

技术标签:

【中文标题】为啥 lmax 干扰器架构使用 2 个干扰器?【英文标题】:Why lmax disruptor architecture use 2 disruptor?为什么 lmax 干扰器架构使用 2 个干扰器? 【发布时间】:2019-09-25 11:37:06 【问题描述】:

在“lmax 中断器架构设计”中,它表明,他们正在接受输入并将其加入输入中断器,并且有多个事件处理程序,如日志、解组、业务逻辑,然后将其加入输出中断器和输出中断器具有编组、日志等事件处理程序..

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

以上是关于为啥 lmax 干扰器架构使用 2 个干扰器?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI UserDefaults 干扰 Firebase Firestore 数据

邪恶改装:TPYBoard制作廉价WIFI干扰器

WiFi 干扰器,有时间可以去试试呦!

为啥`-fno-omit-frame-pointer` 会干扰 ASAN?

选择器干扰 onTapGesture

片段着色器输出干扰条件语句