2012-02-22 60 views
3

我也在考慮在應用程序中集成干擾模式。在我開始使用干擾程序之前,我有點不確定幾件事如何在真實財務應用程序中集成LMAX

  1. 我有3個生產者,主要是一個FIX線程,對請求進行反序列化。另一個隨着市場走勢而不斷修改訂單價格的線索。此外,我們還有一個線程負責對從GUI應用程序發送的請求進行反序列化。所有三個線程當前寫入阻塞隊列(因此​​我們看到了很多爭論的隊列)
  2. 有關單個作家原則破壞者會談,並從我已閱讀,擴展方法最好。有什麼辦法可以讓上述三個線程服從單個作者原則?
  3. 此外,在一個典型的請求/響應的應用,特別是在我們的例子中,我們有競爭上的內存緩存,因爲我們需要鎖定緩存,當我們更新與響應緩存,同時請求可能發生的對同一訂購。我們如何通過破壞者來處理這個問題,即如何結合對特定請求的迴應?如果是的話,我可以消除緩存上的鎖嗎?

任何建議/指針將高度讚賞。目前,我們正在使用Java 1.6

+0

任何人都可以請一些線索這光 – Harry 2012-03-01 01:48:35

回答

1

我是新來distruptor,我試圖瞭解儘可能多的usecases越好。我試圖回答你的問題。

  1. 是,干擾器可用於順序從多個 生產者要求。我知道所有3個線程都嘗試更新共享對象的狀態 。以及對共享對象採取必要操作的單個消費者。在內部,您可以根據責任將單個消費者代理調用到合適的單線程處理程序。

  2. 干擾器正是這樣做。它對這些調用進行排序,使得該狀態一次只能由一個線程訪問。如果有特定的事件處理程序調用順序,請設置內存屏障。最新版本的Disruptor具有DSL,可讓您輕鬆設置訂單。

  3. 緩存可以被抽象,並通過干擾器訪問。一次,只有 閱讀器或寫入器才能訪問高速緩存,因爲高速緩存的所有對 的調用都是順序的。

相關問題