Paxos算法的目的是为了解决分布式环境下一致性的问题
多个节点并发操作数据,如何保证在读写过程中数据的一致性,并且解决方案要能适应分布式环境下的不可靠性。
1、Paxos两个组件
- Proposer:提议发起者,处理客户端请求,将客户端的请求发送到集群中,以便决定这个值是否可以被批准
- Acceptor:提议批准者,负责处理接收到的提议,他们的回复就是一次投票。会存储一些状态来决定是否接收一个值
2、Paxos 两个原则
- 安全原则:保证不能做错的事
- 针对某个实例的表决只能有一个值被批准,不能出现一个被批准的值被另一个值覆盖的情况
- 每个节点只能学习到已经被批准的值,不能学习没有被批准的值
- 存活原则:只要有多数服务器存活并且彼此间可以通信,最终都要做到的下列事情
- 最终会批准某个被提议的值
- 一个值被批准了,其他服务器最终会学习到这个值