LMAX的破坏者以何种方式可用于股票市场?

时间:2013-11-20 21:16:00

标签: java stocks lmax

我已经和破坏者帕特恩做过一些研究,有一件事我无法绕过我的脑袋。

有生产者,它们为环形缓冲区提供条目。 有一个环形缓冲区,基本上是固定但无限的阵列。 有消费者(主要是拼写线程),处理来自ringbuffer的条目。

我试图将破坏者模式如何用于股票市场的真实情况。

通常你会得到包含所有订单的订单。我怎么看,生产者会收到经纪人的新订单。制作人将订单放在ringbuffer中。订单放入环形缓冲区后,消费者会提取订单并与订单簿交叉检查。

现在,这是我在理解优势方面遇到一些麻烦的部分。如果有多个消费者,这就是你想要的可扩展系统,怎么会有多个消费者处理订单呢?

订单必须在消费者访问时锁定,以确保完整性。 我正在寻找的是这个问题的答案,并粗略地了解订单匹配引擎如何从这个模式中受益。

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

谢谢

1 个答案:

答案 0 :(得分:2)

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

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