2013-03-13 64 views
3

的成長考慮從LMAX建築description from Martin Fowler以下情形:LMAX架構 - 數據

我將使用一個簡單的非LMAX的例子來說明。想象一下,你是 通過信用卡訂購果凍豆。 < ...>

在LMAX架構,你會這樣操作一分爲二。 第一次操作將捕獲訂單信息,並通過 完成向信用卡公司輸出一個事件(請求信用卡驗證)給信用卡公司 。然後,業務邏輯處理器將爲其他客戶進行 處理事件,直到其輸入事件流中收到 信用卡驗證事件。在處理 該事件時,它將執行該訂單的確認任務。

因此,訂單被保存在內存中,直到收到付款處理的結果。

現在讓我們假設代替信用卡處理步驟,我們需要花費更多時間,例如:我們需要執行庫存檢查,其中有人必須物理驗證我們是否具有特定的果凍豆味道,已經下令。這可能需要一個小時。

如果是這樣的話,會不會導致內存舉行,因爲潛在的大量訂單將等待庫存狀態更新的事件數據的增長?

可能在這種情況下,我們需要刪除從存儲器的順序,幷包括它作爲輸出事件,外部系統(庫存)負責產生另一個輸入事件,其包括順序細節的一部分。

我用這種方法看到的問題是,我們無法將庫存作爲業務邏輯處理器的一部分。

關於我們如何解決這個問題的想法?

回答

9

作爲工作集的一部分,金融交易中的工作訂單可以保留數天甚至數月。例如,等待期貨合約到期。客戶賬戶也類似。 「工作集」指的是當前處於活動狀態的交易/訂單/銷售等。一旦交易完成,它就成爲歷史數據的一部分。

存儲系統現在是如此之大,即數百GB的在一個單一的服務器,該工作集幾乎任何業務可輕鬆放入內存。同時,可用內存容量的增長速度遠遠超過任何大型企業的增長速度。

您描述的情況並不是真正的問題。可能成爲問題的是當你需要保存傳統數據庫或基於文件的系統更適合的所有歷史數據時。

一個簡單的練習是計算活躍實體所需的內存,或工作組,然後比較,爲的是在現代服務器可用。內存中可以保留數百萬活動實體。