云计算的基础技术是集群技术,支撑集群高效协同工作的需要一系列资源和任务调度算法。
这一系列调度算法中,有3种核心算法奠定了集群互连互通的基础,它们是Paxos算法,DHT算法和Gossip协议。
其中,Paxos算法解决分布式系统中信息一致性的问题。
Paxos算法要解决的问题:
Paxos算法要解决的问题是一个分布式系统如何就某个value(指令)达成一致。
为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。
Paxos算法的知识背景:
(1)分布式系统中的各个节点称为"processor"
(2)processor可以担任"proposer","accpter","learner"三个角色中的一个或多个角色。
(3)proposal = [num(编号), value],其中num是proposal的编号(按proposal被提出的顺序递增),不同proposal的num必须是不一样的,value就是需要同步的指令。
(4)proposer可以propose(提出)proposal;accepter可以accept(接受)proposal;learner可以学习被choose出来的value。
(5)choose:当一个proposal被大多数(多数派)的accepter所接受时就说这个proposal被choose,同时该proposal的value也被choose。
(6)各个processor之间的信息传递可以延迟,丢失,但是传达到的信息都是正确的。
Paxos算法的核心:
Paxos算法认为,只要满足以下三个条件就能保证数据的一致性:
(1)一个value只有在被proposer提出之后才可以被choose;
(2)每次只有一个value被choose;
(3)value只有被choose之后才能被learners所获取;
Paxos算法其实就是对条件2的不断加强。
如何保证每次只有一个value被choose(条件2)?
原文地址:https://www.cnblogs.com/paradis/p/11037295.html