什麼是事件溯源
事件溯源是構建業務邏輯和持久化聚合的另外一種選擇,它將聚合以一系列的方式持久化保存。每一個事件表明聚合的一次狀態變化,應用程序經過重放事件來從新建立聚合的當前狀態。java
事件溯源的好處
- 可靠的發佈領域事件
- 保留聚合的歷史
- 最大限度的避免對象和關係的「阻抗失調」問題
- 爲開發者提供一個時光機
事件溯源的弊端
- 這類編程模式有必定的學習曲線
- 基於消息傳遞應用程序的複雜性
- 處理事件的演化有必定難度
- 刪除數據庫存在必定難度
- 查詢事件存儲庫很是有挑戰性
事件存儲和傳統數據庫的存儲區別
如上圖所示:傳統數據庫是表對應類,行對應條數,列對應屬性,單對於一條數據的修改,它的歷史沒法獲取,若是須要相似審計或者查看歷史的需求,須要單獨設計,而且相對複雜。基於時間溯源的存儲,是存儲聚合或者一類的全部狀態變動。
事件溯源存在的開源框架
- Even Store:由事件溯源技術的先驅Greg Young 開發的基於.NET的開源事件存儲庫
- Lagom:由Lightvebd開發的微服務框架,該公司以前的名字是Typesafe
- Axon:一個開源的java框架,用於開發使用事件溯源和CQRS的事件驅動應用程序
- Eventuate:由Chris Richardson的創業公司Eeventuate開發。