分布式系统正变得越来越重要,大型网站几乎都是分布式的。
分布式系统的最大难点,就是各个节点的状态如何同步。CAP定理是这方面的基本定理,也是理解分布式系统的关键。
CAP理论
在一个分布式环境下,存在3个核心需求:
- 数据的一致性(Consistency)
- 系统的高可用性(Availablity)
- 分区容错性(Partition Tolerance)
一致性
写操作之后的读操作必须返回该值。
对于一个将数据副本分布在不同分布式节点上的系统来说,如果对第一个节点的数据进行了更新操作并且更新成功后,却没有使得第二个节点上的数据得到相应的更新,于是在对第二个节点的数据进行读取操作时,获取的依然是老数据(或称为脏数据),这就是典型的分布式数据不一致的情况。在分布式系统中,如果能够做到针对一个数据项的更新操作执行成功后,所有的用户都可以读取到其最新的值,那么这样的系统就被认为具有强一致性
可用性
可用性指系统只要收到用户的请求,服务器需要在有限的时间内返回结果
分区容错性
由于网络故障可能导致区间通信失败,这个时候平台仍然需要对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障
这3个理论中,不可能同时满足,只能满足两个。由于分区容错必须考虑,因此一致性和可用性只能选择一个。
BASE理论
Base理论主要内容为:
- Basically Available --基本可用
- Soft-state --软状态 柔性事务
- Eventual Consistency --最终一致性
base理论的核心思想是:即使无法做到强一致性,但是每个应用应该根据自身业务特点,采用适当的方式来使系统达到最终一致性
基本可用
分布式系统在出现不可预知故障的时候,允许损失部分可用性
- 响应时间上的损失
- 系统功能上的损失
软状态
允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性
最终一致性
分布式系统的数据最终能够达到一致,不需要实时保证系统数据的强一致性
CAP理论和BASE理论面向的是大型高可用可扩展的分布式系统,通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态。