分佈式設計模式-事件溯源

什麼是事件溯源

事件溯源是構建業務邏輯和持久化聚合的另外一種選擇,它將聚合以一系列的方式持久化保存。每一個事件表明聚合的一次狀態變化,應用程序經過重放事件來從新建立聚合的當前狀態。java

事件溯源的好處

  • 可靠的發佈領域事件
  • 保留聚合的歷史
  • 最大限度的避免對象和關係的「阻抗失調」問題
  • 爲開發者提供一個時光機

事件溯源的弊端

  • 這類編程模式有必定的學習曲線
  • 基於消息傳遞應用程序的複雜性
  • 處理事件的演化有必定難度
  • 刪除數據庫存在必定難度
  • 查詢事件存儲庫很是有挑戰性

事件存儲和傳統數據庫的存儲區別

如上圖所示:傳統數據庫是表對應類,行對應條數,列對應屬性,單對於一條數據的修改,它的歷史沒法獲取,若是須要相似審計或者查看歷史的需求,須要單獨設計,而且相對複雜。基於時間溯源的存儲,是存儲聚合或者一類的全部狀態變動。

事件溯源存在的開源框架

  • Even Store:由事件溯源技術的先驅Greg Young 開發的基於.NET的開源事件存儲庫
  • Lagom:由Lightvebd開發的微服務框架,該公司以前的名字是Typesafe
  • Axon:一個開源的java框架,用於開發使用事件溯源和CQRS的事件驅動應用程序
  • Eventuate:由Chris Richardson的創業公司Eeventuate開發。
相關文章
相關標籤/搜索