1.分布式基本理论

  • cap理论:
     
    consistency: 一致性
     
    availablity:可用性
     
    partition tolerance: 分区容错
     
    分布式服务在系统出现一定故障的时候,还可以对外提供服务。基本所有分布式系统都可以满足此要求。c和a之间存在矛盾,如果追求一致性就需要抛弃可用性,如果追求可用性,数据一致性就不会被满足。
     
  • base理论:
     
    basic available:基本可用
     
    softstatue: 软状态
     
    eventually: 最终一致性
     
    系统可以处于一致性中间状态,但可用,系统可以达到最终一致性状态,其实现方法可以使用基于消息中间件+定时任务补发消息来实现。
     

2.分布式一致性算法

 
    在cap理论中,如果保证数据强一致性,就需要所有副本同步主节点的所有数据,在数据同步过程中,对外不可用,在所有分布式一致性算法中,解决此的思想是大多数副本同步(一般都是过半)主节点的数据后,主节点就可以使用对客户端进行相应。
 

  • basic paxos算法
     
    basic paxos算法有prepare、accept和learn三个阶段,以及提案者,决策者和学习者。
     
    prepare阶段:提案者发出请求到过半的决策者,请求中携带生成的全局唯一递增id,该id可以是时间戳+机器id。
     
    accept阶段:决策者接收到提案者的id信息后,通过比较保存的id和请求的id大小,如果请求的id大于保存的id,就会把保存中的最大的id及对应的提案值作为响应发送给提案者。而且之后决策者会拒绝所有id小于当前的id的提案请求,只接受大于当前id的请求。当提案者接收到决策者过半的响应后,就会在所有响应中获取最大id的提案值作为提案值,发送给过半决策者,此过半决策者可以与提案决策者不同,决策者收到请求后,就会提交请求。
     
    learn阶段:所有learner同步决策者的数据。具体方式可以是每一个learner去请求accept,也可以所有learner选择一个主learner,主learner同步accept的数据,其他learner同步主learner。

     
    上述paxos算法是basic paxos算法,如果有多个提案者,就会导致活锁问题。为了解决此问题,提出只有一个主提案者,在多个提案者中,先选择一个主提案者,所有的提案都由该主提案者进行提交。
     

  • Raft算法
     
    leader选举
     
    日志同步
     
  • zab算法
     

    • 启动选举leader
      每台机器发送(myid,zxid)到别的机器,别的机器检查是否是在选举过程中,然后比较zxid,投票给zxid大的,如果zxid相同就投票给myid大的,等到有机器接收到一半以上的投票后即成为leader

 

  • 运行中选举
    逻辑大致同启动时选举leader,只不过换成sid和zxid,过半投票机制。然后再同步数据。

 

  • kafka 选举
     
    isr列表
     
    高水位HW
     
    过半机制

你若安好便是晴天
82 声望10 粉丝