【分布式】分布式一致性算法paxos及CAP定理
一致性算法介绍
分布式系统中由于各个服务器及节点分散在不同的网络中,各个服务器之间数据的同步及网络环境的复杂性会导致数据通信和保持一致性的问题,而分布式一致性算法就是解决这些问题。一致性算法可以让一组服务器(集群),使得它们对某个行为的结果最终达成一致,看起来好像是一台服务器一样。而Paxos 算法就是其中一种非常著名的算法。
分布式一致性算法的目的就是让那个分布式系统中各个节点达成一致性。
CAP定理
CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer’s theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点:
- 一致性(Consistence),等同于所有节点访问同一份最新的数据副本;
- 可用性(Availability),每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据;在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。
- 分区容错性(Network partitioning),以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在 C 和 A 之间做出选择。
CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。
CAP各种使用场景
CAP | 适用场景 | 说明 |
CA | 几乎不存在 | 在分布式系统中,P是不可避免的 ,除非适用单机,要提升分区可靠性,需要通过提升基础设施的可靠性实现。所以只能在CA之间做选择,这也是众多分布式中间件中CAP中为什么只有CP、AP,没有CA |
CP | 分布式数据库(Redis、HBase、zk、etcd) | 分布式数据库极端情况下优先保证数据一致性 |
AP | 12306购票、淘宝购物 | 保证服务可用,购票下单后,一段时候后系统提示余票不足 |
CAP定理可以帮助架构师对系统设计中目标进行取舍,合理的规划系统拆分的维度。
Paxos算法
这是一个有关Paxos算法非常形象的讲解与示范。Paxos是能够基于一大堆完全不可靠的网络条件下却能可靠确定地实现共识一致性的算法。也就是说:它允许一组不一定可靠的处理器(服务器)在某些条件得到满足情况下就能达成确定的安全的共识,如果条件不能满足也确保这组处理器(服务器)保持一致。
什么是共识?
Paxos是一个解决共识问题consensus problem的算法,现实中Paxos的实现以及成为一些世界级软件的心脏,如Cassandra, Google的 Spanner数据库, 分布式锁服务Chubby. 一个被Paxos管理的系统实际上谈论的是值 状态和跟踪等问题,其目标是建造更高可用性和强一致性的分布式系统。
参考来源
https://www.hollischuang.com/archives/666