CAP和BASE理论
CAP和BASE理论用于分布式系统的架构设计指导。
CAP理论
CAP理论由计算机科学家Eric Brewer在2000年提出,其理论观点是,在分布式计算机系统中不可能同时以下三个保证:
- 一致性(Consistency) => 所有节点统一事件看到的是相同数据;
- 可用性(Avaliability) => 每一个请求都能接收到响应;
- 分区容错性(Partition Tolerance) => 将系统分区后,在网络故障时,仍能操作;
其中一致性可以说是数据库系统中的ACID的另一种表述:
- 一个用户请求要么成功,要么失败,不能处于中间状态;
- 一旦一个事务完成,将来的所有事务必须基于这个完成后的状态;
- 未完成的事务不会互相影响;
- 一旦一个事务完成,就是持久的;
对于可用性,跟字面意思一样,也就是所有的请求都应该“成功”并且收到“返回”。 分区容错性指在分布式系统中,节点崩溃或者网络阻塞都不应该导致系统停止服务。
CAP常见模型
现实情景中,由于CAP理论中三点不可同时具备,一般会选择其中两点。由此形成常见的CA、CP和AP模型。相关模型示例如下:
CA模型
牺牲分区容错性意味着把所有的机器搬到一台机器内部,该模型明显违背了分布式系统中对于可伸缩性的追求。CA模型的常见例子有:
- 单站点数据库
- 集群数据库
- LDAP
- xFS文件系统
CP模型
牺牲可用性意味着一旦系统中出现分区或者节点出现错误,则系统将直接停止服务。CP模型常见的例子有:
- 分布式数据库
- 分布式锁定
- 绝大部分协议
AP模型
牺牲一致性意味着系统存在中间转态,多个请求使用的数据可能是不同的。AP模型常见例子有:
- Coda
- Web缓存
- DNS
BASE理论
BASE理论来自互联网电子商务领域的实践,它是基于CAP理论逐步演化而来,核心思想是即便不能达到强一致性,也可以根据应用特点采用适当的方式来达到最终一致性的效果。BASE理论是对CAP中的C和A的延伸。BASE的含义如下:
- Basically Available: 基本可用;
- Soft state: 软状态,柔性事务,即状态可以有一段时间的不同步;
- Eventual consistency: 最终一致性;
BASE是反ACID的,它完全不同于ACID模型,通过牺牲一致性获得基本可用性和柔性可靠性并要求达到最终一致性。
来源:oschina
链接:https://my.oschina.net/u/2941195/blog/3054761