基础理论

CAP理论

  • 一致性 Consistency:分布式系统所有数据备份在同一时刻相同;
  • 可用性 Availability:每个请求都有相应,不管成功或失败;
  • 分区容错性 Partition:分布式系统数据丢失不影响系统继续运行。

分布式系统中,CAP不能同时满足,只能AP、CP、AC(不常用);
分区容错是必须满足的,而一致性与可用性对立,其原因是如果保证一致性(涉及到锁),锁定期间可用性消失;如果保证可用性,就不能加锁;
选择:数据安全优先时使用CP,用户体验优先时使用AP。

一致性讨论

  • 强一致性:一次写之后,任何读都是最新的数据(Raft算法满足CP);
  • 弱一致性:一次写之后,不保证后续所有读到的都是最新的数据;
  • 最终一致性:一次写之后,在后续不产生新的写的条件下,最终所有后续读到的都是最新的数据(Gossip协议满足AP,Quorum NWR升级为强一致性)。

    Raft算法

    节点分为以下三种:

  • Leader:接收Client的情况,任何时刻都只有一个Leader;

  • Follower:被动接收各种RPC请求;
  • Candidate:选举出新Leader的候选接点。

工作流程:

  • Leader定期向其他节点发送心跳;
  • Follower在超时没收到Leader的心跳时,转为Candidate;
  • 收到多数投票应答的Candidate转为Leader;
  • Leader和Candidate接收到更高版本的消息后转为Follower。

    Gossip算法

    三种方式:

  • 直接邮寄 Direct Mail:将数据的更新直接发送给其他指定节点;

  • 反熵 Anti-entropy:以push、pull或push与pull结合的方式修改不同节点的副本;
  • 谣言传播 Rumor mongering:有数据更新就变为活跃态向其他节点更新,被更新的也变为活跃态向其他节点更新。

    Quorum NWR算法

    由三个因子构成,可以自定义一致性级别:

  • N Replication Factor:集群中同一份数据的副本个数;

  • W Write Consistency Level:完成W个副本更新才算完成写操作;
  • R Read Consistency Level:读一个数据时需要读取R个副本中最新的数据;
  • W + R > N时,为强一致性;
  • W + R ≤ N时,为最终一致性。