用於高可用性的Event Sourced 架構

banq發表於2013-07-10
Event Sourced Architectures for High Availability

可用性是指使用者能夠訪問系統的能力,並不是開機時間。高可用性意味著,當我們需要時,系統總是能夠可用。

99.999%意味高可用性。

MTBF:失敗發生時間。
MTTR:恢復時間。
系統暫停:垃圾回收引發的暫停等。

傳統事務處理如何實現高可用性?
在正常的狀態之間遷移
一旦發生失敗替代回滾。

傳統事務處理由資料庫如Oracle MySQL實現:
>Oracle: SCNs, RAC nodes, replication
> MySQL Cluster: Shards, 2PC, deltas and snapshots
> MySQL: Clustered file systems, replication

其他有Tandem NonStop , IMS TM transaction queue (Apollo Program)

Event Sourced 設計是一種新的思路,
將所有導致狀態的改變作為系列事件。
將這些依次發生的系列事件應用於領域模型,從而改變狀態。

已經實現的產品:
>Node.js
> Nginx, G-WAN

記錄依次發生的事件,恢復時重新播放這些事件,能夠重建領域模型狀態,測試除錯有很好地效能。

快照功能能夠加速恢復,不必遍歷所有事務日誌。

[img index=1]


[該貼被banq於2013-07-10 07:28修改過]

相關文章