用于高可用性的Event Sourced 架构
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
记录依次发生的事件,恢复时重新播放这些事件,能够重建领域模型状态,测试调试有很好地性能。
快照功能能够加速恢复,不必遍历所有事务日志。
[该贴被banq于2013-07-10 07:28修改过]