我对破坏者模式做了一些研究,但有一件事我无法理解。
有生产者,它们为环形缓冲区提供条目。 有环形缓冲区,基本上是一个固定但无限的数组。 有消费者(基本上是独立的线程),处理来自环形缓冲区的条目。
我试图讲述如何在股票市场的真实案例场景中使用颠覆者模式。
通常您会拥有包含所有订单的订单簿。在我看来,生产商会从经纪人那里收到新订单。生产者将订单放入环形缓冲区中。将订单放入环形缓冲区后,消费者会获取订单并与订单簿进行交叉检查。
现在,我在理解其优势时遇到了一些麻烦。如果有多个消费者,这就是您想要的可扩展系统,那么如何有多个消费者处理订单?
当消费者访问订单簿时,必须锁定订单簿以确保完整性。 我正在寻找的是这个问题的答案,以及订单匹配引擎如何从这种模式中受益的粗略想法。
LMAX 有自己的订单匹配引擎,所以一定有一些我忽略的东西。
谢谢
最佳答案
他们有一个消费者自己处理订单。其余消费者根据订单处理器的输出进行操作 - 例如返回响应、写入日志、写入数据库等。实际订单处理发生在单个线程上,这是访问订单簿的唯一线程,因此不需要锁定它。
他们声称能够在这个单线程上每秒处理高达 600 万个订单。
关于java - LMAX 颠覆器如何用于股票市场?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20107203/