Go的CQRS/ES工具包:Event Horizon
Event Horizon是Go語言的CQRS/ES工具包。
CQRS(Command Query Responsibility Segration)簡單的說,就是一個系統,從架構上把它拆分為兩部分:命令處理(寫請求)+查詢處理(讀請求)。然后讀寫兩邊可以用不同的架構實現,以實現CQ兩端(即Command Side,簡稱C端;Query Side,簡稱Q端)的分別優化。CQRS作為一個讀寫分離思想的架構,在數據存儲方面,沒有做過多的約束。
在軟件開發中,對象通常都是在內存中完成邏輯運算,然后我們將對象的最終狀態持久化到數據庫。如果在這個過程中,代碼執行出錯,那么我們通常只能根據最終的結果來逆推為什么會出錯。但是,這樣做通常的結果就是根本找不出為什么會出現這樣的情況,尤其是在高并發的時候!
通常針對上面的這類問題,解決起來就特別繁瑣。因為這個錯誤是在特定的時候觸發的,重現不出來的話你可能根本想不出代碼的執行順序。而event sourcing可以協助解決這類問題。event sourcing是指創建跟蹤應用程序狀態的事件,然后將這些事件按順序進行持久化。可以預見,當有這些應用程序狀態改變的事件,就可以根據這個已經排序的事件重新對應用程序從初始狀態進行跟蹤,進而進行定位錯誤的原因。
類似問題:一些用戶反應登錄的時候用戶名或密碼錯誤,這類的錯誤,無法定位到底是用戶輸入錯誤,還是程序中有點問題。 所以針對登錄的應用程序,為其引入event sourcing,這樣便能通過用戶名和時間跟蹤到用戶的登錄執行順序。而針對互聯網應用,這樣每天產生的數據應該會有很大,很自然的便想引入 Hadoop來進行大數據量的查詢。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!