Paxos问题是指分布式的系统中存在故障,但不存在恶意节点的场景下的共识达成问题
主要有Paxos和Raft算法
Paxos算法:
1.多个提案都先争取到提案的权利(得到大多数接受者的支持);
2.得到提案权利的提案者给所有人进行确认,得到大部分人确认的提案成为批准的结案
节点一般分为三种逻辑角色:
Proposer(提案者):提出一个提案,等待大家批准为结案,一般为客户端
Acceptor(接受者):负责对提案进行投票,接受提案.一般为服务器
Learner(学习者):获取批准结果,并可以帮忙传播,不参与投票过程.可能为服务器或客户端
Raft算法:
面向多个决策达成一致的问题,分解了Leader选举,日志复制和安全方面的考虑,并通过约束减少了不确定的状态空间
Raft算法包括三种角色:
Leader(领导者):决定日志的提交,日志只能Leader向Follower单向复制
Candidate(候选领导者)
Follower(跟随者)
过程:
1.Leader选举:
开始所有结点都是Follower,在随机超时发生后未收到来自Leader或Candidate消息,则转变角色为Candidate,提出选举请求.
最近选举阶段(Term)中得票超过一半者被选为Leader
如果未选出,随机超时后进入新的阶段重试.Leader负责从客户端接收log,并分发到其他节点
2.同步日志:
Leader会找到系统中日志最新的记录,并强制所有的Follower来刷新到这个记录,数据的同步是单向的
主要有Paxos和Raft算法
Paxos算法:
1.多个提案都先争取到提案的权利(得到大多数接受者的支持);
2.得到提案权利的提案者给所有人进行确认,得到大部分人确认的提案成为批准的结案
节点一般分为三种逻辑角色:
Proposer(提案者):提出一个提案,等待大家批准为结案,一般为客户端
Acceptor(接受者):负责对提案进行投票,接受提案.一般为服务器
Learner(学习者):获取批准结果,并可以帮忙传播,不参与投票过程.可能为服务器或客户端
Raft算法:
面向多个决策达成一致的问题,分解了Leader选举,日志复制和安全方面的考虑,并通过约束减少了不确定的状态空间
Raft算法包括三种角色:
Leader(领导者):决定日志的提交,日志只能Leader向Follower单向复制
Candidate(候选领导者)
Follower(跟随者)
过程:
1.Leader选举:
开始所有结点都是Follower,在随机超时发生后未收到来自Leader或Candidate消息,则转变角色为Candidate,提出选举请求.
最近选举阶段(Term)中得票超过一半者被选为Leader
如果未选出,随机超时后进入新的阶段重试.Leader负责从客户端接收log,并分发到其他节点
2.同步日志:
Leader会找到系统中日志最新的记录,并强制所有的Follower来刷新到这个记录,数据的同步是单向的