一致性算法
本文主要介绍分布式系统中的一致性算法,包括 Panxos,Raft 和 ZAB 算法。
一致性概念CAP 理论:对于一个分布式系统,不能同时满足以下三点:
一致性(Consistency):在分布式系统中的所有数据备份,在同一时刻是否同样的值。
可用性(Availability):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。
分区容错性(Partition Tolerance):一个分布式系统里面,节点组成的网络本来应该是连通的。然而可能因为一些故障,使得有些节点之间不连通了,整个网络就分成了几块区域。数据就散布在了这些不连通的区域中。这就叫分区。当你一个数据项只在一个节点中保存,那么分区出现后,和这个节点不连通的部分就访问不到这个数据了。这时分区就是无法容忍的。提高分区容忍性的办法就是一个数据项复制到多个节点上,那么出现分区之后,这一数据项就可能分布到各个区里。容忍性就提高了。
一致性模型:
弱一致性:如果能容忍后续的部分或者全部访问不到,则是弱一致性。
最终一致性:如果经过一段时间后要求能访问到更新后的数据,则是最终一致性。如 DNS,Gossip( ...