CAP和BASE理论

CAP理论

一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容忍性(P:Partition Tolerance),最多只能同时满足其中两项。

一致性

一致性是指在多个副本之间是否能够保持一致的特性。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态。
在分布式系统中,如果能够做到针对一个数据的更新操作成功之后,所有用户都能获取到最新的数据,那么这样的系统就具有强一致性。

可用性

可用性是指系统提供的服务必须一直处于可用的状态,对于用户的每一个请求总能在有限的时间返回正常的结果。

分区容错性

分区容错性规定分布式系统在遇到任何网络分区故障时,仍能提供保证一致性和可用性的服务,除非整个网络发生故障。

应用

对于分布式系统,网络问题是必定出现的异常,因此分区容错性是分布式系统必须解决的问题。因此系统架构师往往把精力放在一致性和可用性上寻求平衡。

  1. 放弃一致性:指放弃强一致性,保留最终一致性。
  2. 放弃可用性:当系统遇到网络问题或者节点数据不同步时,服务需要等待一段时间才可用。

BASE理论

BASE是Basically Available(基本可用)、Soft state(软状态)、Eventually Consistent(最终一致性)的简写。
其核心思想是即使无法做到强一致性,但应用都可以根据自身的业务特点,采用合适的方式使系统达到最终一致性。

基本可用

分布式系统出现故障时,允许损失部分可用性。

  1. 响应时间上的损失
  2. 功能上的损失

软状态

允许存在中间状态,即数据同步过程存在延时

最终一致性

最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能达到一致的状态。
五类主要变种:

  1. 因果一致性:A更新了一个数据,B对该数据的更新基于当前值,则B对该数据访问应该能获取最新值。
  2. 读已之所写:A更新一个数据后,总能读取到更新后的值。
  3. 会话一致性:对会话实现“读己之所写”。
  4. 单调读一致性:A读取了一个数据后,不会读取到更旧的值。
  5. 单调写一致性:保证来自同一进程的写操作被顺序执行。
posted @ 2019-04-02 00:49  wuweishuo  阅读(208)  评论(0)    收藏  举报