java - LMAX 颠覆器如何用于股票市场?

标签 java stocks lmax

我对破坏者模式做了一些研究,但有一件事我无法理解。

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

我试图讲述如何在股票市场的真实案例场景中使用颠覆者模式。

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

现在,我在理解其优势时遇到了一些麻烦。如果有多个消费者,这就是您想要的可扩展系统,那么如何有多个消费者处理订单?

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

LMAX 有自己的订单匹配引擎,所以一定有一些我忽略的东西。

谢谢

最佳答案

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

他们声称能够在这个单线程上每秒处理高达 600 万个订单。

关于java - LMAX 颠覆器如何用于股票市场?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20107203/

相关文章:

php - 公司市场信息 雅虎 RSS 源

java - 干扰者一个事件处理程序停止其他事件处理程序

java - 为什么 disruptor 使用较小的环形缓冲区会变慢?

java - 创建和使用 SSL 证书

java - Java 中的舍入错误

stocks - 获取谷歌财务数据

r - 如何使用R通过第一行绑定(bind)具有不同行数的多个数据集

python-3.x - Python 中的 LMAX 干扰器

java - 在 Java 中去除无效的 XML 字符

java - JPQL 集合参数 - 与预期类型不匹配