1. 在分布式系统里面,复制问题是一个群组沟通问题。这个问题有趣在于它是很多问题的祖先,为很多子问题提供上下文: 领导者选举、失败检测、互斥、共识、全局快照、原子广播 等等问题。<br /> 同步/异步复制: 它们的区分在于客户端在接收返回信息这个过程,同步复制是等待数据的复制完成,而异步复制是立刻返回信息给客户端,无需让客户端等待数据复制的执行时间。<br /> 使用什么算法进行复制?除了分类为 同步/异步,可以分类为 防止分歧的复制方法(单拷贝系统) 风险分歧的复制方法(多个主系统)。<br /> 单拷贝系统的复制方法介绍了 主从复制( Primary/backup replication ) 2PC( Two phase commit )。主从复制就是基于主服务器,把数据/操作日志复制到其他服务器中,例如在 MySQL 中会发生数据滞后的现象,比主服务器至少慢一次的操作。而 2PC 的有趣的是,出现了协调员 (Coordinator),先把变更存放到临时位置,等待二次投票,之后再进行合并或放弃。正如我们在 CAP 原理所看到,2PC 也是 CA 的,所以它的地址故障里面不包含网络分区。2PC 在性能和容错之间取得了不错的平衡,这也是它在关系型数据库中流行的原因。<br /> 分区容忍一致性算法里面,它涉及的基本条件有: 网络分区、多数决定、角色、周期、领导通过决斗改变、周期内的编号提案、一般操作。<br /> 网络分区: 网络分区是指到一个或多个节点的网络链路故障。节点本身继续保持活动状态,甚至可以从网络分区一侧的客户端接收请求。<br /> 多数决定: 要求大多数节点 - 而不是所有节点(如2PC中) - 同意更新允许少数节点由于网络分区而关闭,缓慢或无法访问。只要(N/2 + 1)-of-N节点启动并可访问,系统就可以继续运行。分区容忍一致性算法使用奇数个节点(例如3,57)<br /> 角色:可以通过两种方式构建系统:所有节点可以具有相同的职责,或者节点可以具有单独的不同角色。用于复制的共识算法通常选择为每个节点具有不同的角色。拥有一个固定的领导者或主服务器是一种优化,使系统更有效率,因为我们知道所有更新必须通过该服务器。不是领导者的节点只需要将他们的请求转发给领导者。PaxosRaft都使用不同的节点角色。特别是,他们有一个领导者节点(Paxos中的“提议者”),负责在正常操作期间进行协调。在正常操作期间,其余节点是跟随者(Paxos中的“接受者”或“选民”)。<br /> 周期: PaxosRaft中的每个正常操作时段称为时期(Raft中的“术语”)。在每个时期期间,只有一个节点是指定的领导者。<br /> 领导通过决斗改变: 所有节点都以关注者身份开始; 一个节点在一开始就被选为领导者。在正常操作期间,领导者保持心跳,允许追随者检测领导者是否失败或被分割。当一个节点检测到一个领导者已经变得没有响应时(或者,在最初的情况下,没有领导者存在),它会切换到一个中间状态(在Raft中称为“候选者”),它将术语/纪元值增加一个,发起领导人选举并竞争成为新的领导者。为了当选为领导者,节点必须获得大多数选票。分配投票的一种方式是以先到先得的方式分配投票; 这样,领导者最终将当选。<br /> 周期内的编号提案: During each epoch, the leader proposes one value at a time to be voted upon. Within each epoch, each proposal is numbered with a unique strictly increasing number. The followers (voters / acceptors) accept the first proposal they receive for a particular proposal number.<br /> 一般操作: (选举 v n 的策略)在正常操作期间,所有提议都通过领导节点。当客户端提交提议(例如,更新操作)时,领导者联系仲裁中的所有节点。如果不存在竞争提议(基于来自追随者的回复),领导者会提出价值。如果大多数粉丝接受该值,则认为该值被接受。<br /> 分区容忍一致性算法有 Paxos, Raft, ZAB.

相关链接

https://oceanbase.alipay.com/product/oceanbase
https://redis.io/topics/replication

目录

  1. ## Synchronous replication
  2. ## Asynchronous replication
  3. ## An overview of major replication approaches
  4. ## Primary/backup replication
  5. ## Two phase commit (2PC)
  6. ## Partition tolerant consensus algorithms
  7. ### What is a network partition?
  8. ### Majority decisions
  9. ### Roles
  10. ### Epochs
  11. ### Leader changes via duels
  12. ### Numbered proposals within an epoch
  13. ### Normal operation
  14. ## Partition-tolerant consensus algorithms: Paxos, Raft, ZAB
  15. ## Replication methods with strong consistency
  16. ## Further reading