知识卡片
三种高可用方案在延迟吞吐与数据丢失之间的权衡
内容
备份延迟低、吞吐高,但按周期备份意味着最近一段时间的数据在故障发生时必然丢失,而且切换需要接受一定的停机时间;两阶段提交协议牺牲了延迟和吞吐(每次写入都要协调者和参与者往返协商),换来了不丢数据和可以实时切换,但它保证的是分布式事务的原子性——要么所有节点都成功要么都失败,并不直接解决多副本一致性问题;Paxos通过多数派选举,专门解决同一份数据在多个副本之间保持一致的问题,容错性好但同样要为达成共识付出通信开销。发散:三种方案不是互相替代的关系,而是分别针对”数据丢多少”“事务提不提交”“副本一不一致”三个不同层面的问题,实际系统往往需要按场景组合使用,而不是二选一。
参考来源
《Linux开源存储全栈详解从Ceph到容器存储》第5章《存储安全》