gpt4 book ai didi

java - 如何将 LMAX 集成到真实的金融应用程序中

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:14:13 26 4
gpt4 key购买 nike

我也在考虑将干扰器模式集成到我们的应用程序中。在开始使用 disruptor 之前,我对一些事情有点不确定

  1. 我有 3 个生产者,主要是一个对请求进行反序列化的 FIX 线程。随着市场的变化不断修改订单价格的另一个线程。我们还有一个线程负责反序列化从 GUI 应用程序发送的请求。所有三个线程当前都写入一个阻塞队列(因此​​我们看到队列上有很多争用)
  2. 破坏者谈到了单一作者原则,据我所知,这种方法规模最大。有什么办法可以让以上三个线程遵守单写原则?
  3. 同样在一个典型的请求/响应应用程序中,特别是在我们的例子中,我们对内存缓存有争用,因为当我们用响应更新缓存时我们需要锁定缓存,而请求可能发生在相同的情况下命令。我们如何通过干扰器处理这个问题,即我如何绑定(bind)对特定请求的响应?如果可以,我能否消除对缓存的锁定?

如有任何建议/指点,我们将不胜感激。我们目前使用的是 Java 1.6

最佳答案

我是 distruptor 的新手,正在尝试了解尽可能多的用例。我已尝试回答您的问题。

  1. 是的,Disruptor 可用于对多个调用进行排序生产者。我知道所有 3 个线程都尝试更新状态的共享对象。以及对共享对象采取必要操作的单个消费者。在内部,您可以根据职责让单个消费者委托(delegate)调用适当的单线程处理程序。

  2. Disruptor 正是这样做的。它对调用进行排序,使得状态一次只能由一个线程访问。如果调用事件处理程序有特定的顺序,请设置内存屏障。最新版本的 Disruptor 具有 DSL,可让您轻松设置顺序。

  3. 可以通过 Disruptor 抽象和访问 Cache。一次,只有一个Reader 或 Writer 可以访问缓存,因为所有调用缓存是顺序的。

关于java - 如何将 LMAX 集成到真实的金融应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9387950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com