我已经用破坏者模式进行了一些研究,但有一件我无法解决的问题。

有生产者,为环形缓冲区提供条目。
有环形缓冲区,基本上是一个固定但无尽的数组。
有使用者(基本上是独立线程)处理来自环形缓冲区的条目。

我正在尝试说明在股票市场的真实情况下如何使用破坏者模式。

通常,您会拥有包含所有订单的订单簿。我认为,生产者将从经纪人那里收到新订单。生产者将订单放置在环形缓冲区中。在将订单放置在环形缓冲区中之后,使用者将获取订单并与订单簿进行交叉检查。

现在这是我在理解优势时遇到一些麻烦的部分。如果有多个消费者,这是可扩展系统所需要的,那么如何有多个消费者下订单?

消费者访问时必须锁定订单,以确保完整性。
我正在寻找的是该问题的答案,以及一个大致的想法,即订单匹配引擎如何从这种模式中受益。

LMAX有自己的订单匹配引擎,因此我必须忽略一些东西。

谢谢

最佳答案

他们只有一个消费者自己处理订单。其余的消费者根据该订单处理器的输出进行操作-例如返回响应,写入日志,写入数据库等。实际的订单处理发生在单个线程上,这是访问订单的唯一线程,因此不需要锁定它。

他们声称能够在这个单线程上每秒执行600万个订单。

08-20 01:13