分布式(1)- Paxos算法
新开一个专题讲解分布式相关,以后就是各个专题不定期的出文章。今天本来是想写分布式的Paxos算法,结果准备写的时候发现无从下笔,只能自己再去学习一遍,然后写下总结。如果有错误或者需要探讨之处可联系笔者或者直接发消息至公众号。
聊到分布式,不得不说一说分布式的CAP理论。
Consistency(一致性):指的是在分布式系统中,同一时刻各个节点的数据的一致性。举个例子假设服务端提供了三个节点,客户端对其中某个节点进行数据的更新,在客户端接收到服务端的响应后,三台节点上的值都是更新后的值。则说明了服务端节点的一致性。
Availability (可用性):可用性指的是在分布式系统中,无论什么时候客户端请求服务端,服务端都应该能响应数据给客户端。无论是更新前的数据还是更新后的数据。
Partition tolerance(分区容错性):分区容错性指的是在某些节点故障或者某个网络分区故障的时候,分布式系统能否提供服务。
由于网络不是100%可靠的所以分区容错性是必然会发生的问题,在分区故障上去考虑一致性和可用性就会发现存在冲突,当需要保证数据一致性的时候由于网络分区故障,必然是禁止更新,当我需要保证可用性的时候必然会有数据的不一致性(可能数据是最终一致性)。所以理论上分布式系统不可能同时满足CAP理论,这一块只能根据实际的系统进行取舍或者尽可能优化。实际使用的应用Zookeeper满足的是CP,Eureka满足的是AP。
接下来我们引入分布式一致性算法Paxos,在一个分布式系统中怎么保证数据的一致性