CAP原则
在分布式系统要满足CAP原则,一个提供数据服务的存储系统无法同时满足:数据一致性、数据可用性、分区耐受性。
C数据一致性:所有应用程序都能访问到相同的数据。 A数据可用性:任何时候,任何应用程序都可以读写访问。 P分区耐受性:系统可以跨网络分区线性伸缩。(通俗来说就是数据的规模可扩展) 在大型网站中通常都是牺牲C,选择AP。为了可能减小数据不一致带来的影响,都会采取各种手段保证数据最终一致。
-
数据强一致:各个副本的数据在物理存储中总是一致的。
-
数据用户一致:数据在物理存储的各个副本可能是不一致的,但是通过纠错和校验机制,会确定一个一致的且正确的数据返回给用户。
-
数据最终一致:物理存储的数据可能不一致,终端用户访问也可能不一致,但是一段时间内数据会达成一致。
一致性算法
-
使一组服务器在一个值上达成一致,所以活跃的特征在于最终每个服务器都可以决定一个值。
-
通过值的一致能够实现对同一个数据的请求会让同一个服务器来处理。
-
Paxos和Raft都是通过选取master来实现多节点下值的一致性,从而借助一致性hash算法来分配请求。
一致性Hash算法 一致性Hash算法可以根据不同的属性参数(通常是IP和端口号),生成一串不相同的Hash值,并将Hash值转换成0-2^32-1的整数, 不同范围的值由不同服务器进行处理。(B-C之间的由B处理)。
Raft算法和Paxos算法
Raft算法是在Paxos算法的基础上的进行优化。 Raft在Paxos的基础上主要做了两个方向的优化: 1.将复杂的分布式共识问题拆分成领导选举、日志复制和安全性三个问题 2.压缩状态空间:相对于Paxos施加了更合理的限制,减少了系统状态过多而产生的不确定因素。
领导选举(具体以zo