DDIA 第九章 一致性和共识

一致性保证 本章主要包含了以下话题: 常用的强一致性模型:线性一致性,的优点和缺点。 分布式系统中的事件顺序,特别是因果关系和全局顺序的问题。 如何原子的提交分布式事务,也就是说如何解决共识问题。 线性一致性 哪些地方依赖于线性一致性呢 ? Locking 服务和 leader election,比如加锁出错了会导致两个人同时写同一个文件。 账户余额,产品库存信息,比如产品超卖。 如何实现一个线性一致性系统 在分布式系统里面,产生不一致的根本原因是因为数据有多个副本,而更新这些副本不是原子操作。 以下是几种多副本系统,能否实现线性一致性的比较: Single-leader replication (可能线性一致) 这里我猜作者说的是传统 MySQL 这样的主从复制技术。 Consensus Algorithms (线性一致) 这里应该就是常说的 Panox 和 Raft 了。 Multi-leader replication (非线性一致) Leaderless replication (也许不是线性一致的) Dynamo 风格 和 Cassandra 风格。 线性一致的代价 假设两个 datacenter 之间网络断了的情况下, 如果是 multi-leader 系统,那么每个 datacenter 仍然可以独立运行,datacenter 之间的数据是异步同步的,所以不会受到影响。 如果是 single-leader 系统,如果 client 连到了全是 follower 的 datacenter,那么所有 write 和 linerizable read 都受影响,如果 client 连到的是 leader 所在的 datacenter,则不受影响。 CAP Consistency, Availability, Partition Tolerance. ...

2022-02-20 · Me