CAP定理、BASE理论、ACID理论学习笔记

  CAP定理指的是在一个分布式系统中,一致性 (Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

  BASE 理论是对 CAP 理论的延伸,核心思想是即使无法做到强一致性(Strong Consistency,CAP 的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性(Eventual Consitency)。BASE全称:Basically Available(基本可用)Soft state(软状态),和 Eventually consistent(最终一致性)

CAP定理的三个指标

Consistency 一致性

在分布式环境下,一致性是指数据在多个副本之间能否保持一致的特性。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态。

对于一个将数据副本分布在不同分布式节点上的系统来说,如果对第一个节点的数据进行了更新操作并且更新成功后,却没有使得第二个节点上的数据得到相应的更新,于是在对第二个节点的数据进行读取操作时,获取的依然是老数据(或称为脏数据),这就是典型的分布式数据不一致的情况。在分布式系统中,如果能够做到针对一个数据项的更新操作执行成功后,所有的用户都可以读取到其最新的值,那么这样的系统就被认为具有强一致性。

Availability 可用性

可用性是指系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果。这里的重点是"有限时间内"和"返回结果"。

"有限时间内"是指,对于用户的一个操作请求,系统必须能够在指定的时间内返回对 应的处理结果,如果超过了这个时间范围,那么系统就被认为是不可用的。另外,"有限的时间内"是指系统设计之初就设计好的运行指标,通常不同系统之间有很 大的不同,无论如何,对于用户请求,系统必须存在一个合理的响应时间,否则用户便会对系统感到失望。

"返回结果"是可用性的另一个非常重要的指标,它要求系统在完成对用户请求的处理后,返回一个正常的响应结果。正常的响应结果通常能够明确地反映出队请求的处理结果,即成功或失败,而不是一个让用户感到困惑的返回结果。

Partition tolerance 分区容错性

分区容错性约束了一个分布式系统具有如下特性:分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障

网络分区是指在分布式系统中,不同的节点分布在不同的子网络(机房或异地网络) 中,由于一些特殊的原因导致这些子网络出现网络不连通的状况,但各个子网络的内部网络是正常的,从而导致整个系统的网络环境被切分成了若干个孤立的区域。 需要注意的是,组成一个分布式系统的每个节点的加入与退出都可以看作是一个特殊的网络分区。

一个分布式系统无法同时满足一致性、可用性、分区容错性三个特点,所以我们需要抛弃一样

选 择说 明
CA放弃分区容错性,加强一致性和可用性,其实就是传统的单机数据库的选择
AP放弃一致性(这里说的一致性是强一致性),追求分区容错性和可用性,这是很多分布式系统设计时的选择,例如很多NoSQL系统就是如此
CP放弃可用性,追求一致性和分区容错性,基本不会选择,网络问题会直接让整个系统不可用

需要明确的一点是,对于一个分布式系统而言,分区容错性是一个最基本的要求。因为既然是一个分布式系统,那么分布式系统中的组件必然需要被部署到不同的节点,否则也就无所谓分布式系统了,因此必然出现子网络。而对于分布式系统而言,网络问题又是一个必定会出现的异常情况,因此分区容错性也就成为了一个分布式系统必然需要面对和解决的问题。因此系统架构师往往需要把精力花在如何根据业务 特点在C(一致性)和A(可用性)之间寻求平衡。

BASE理论的三个属性

Basically Available(基本可用)

表示可以允许一定程度的不可用,比如由于系统故障,请求时间变长,或者由于系统故障导致部分非核心功能不可用,都是允许的。并不代表系统是不可用的状态

Soft state(软状态)

表示分布式系统可以处于一种中间状态,比如数据正在同步。

简单说允许系统服务的副本间在数据同步时存在延时。

Eventually consistent(最终一致性)

不要求分布式系统数据实时达到一致,允许在经过一段时间后再达到一致,在达到一致的过程中,系统也是可用的。最终一致性是一种特殊的弱一致性。

ACID理论

ACID理论是数据库为了保证事务正确性而提出的一种理论,包含四个约束

原子性(Atomicity):组成事务的一组操作,要么全部成功,要么全部失败,不会在中间的某个环节结束。如果在事务的执行过程中,某个操作失败了,数据库会回滚到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性(Consistency):事务执行前后,数据库的完整性没有被破坏,事务执行的前后都是合法的数据状态。

隔离性(Isolation):数据库允许多个事务并发地对数据进行读写。多个事务并发执行会造成脏读,不可重复读,幻读,而隔离性可以防止多个事务交叉执行导致的数据不一致问题。事务的隔离级别有读未提交读已提交可重复读串行化

持久性(Durability):事务提交后,对数据的修改是持久的,不会因为外部原因丢失。

ACID理论是对事务特性的抽象和总结,方便我们实现事务。也就是说,如果我们使得一组操作具有ACID特性,那么这组操作就可以称之为事务。在单机上,可以通过锁、时间序列等机制保障操作的顺序执行,让系统实现ACID特性。

一致性比较

最终一致性 < 强一致性 < ACID特性

ACID理论与BASE理论对比

base是和ACID对立的

  • ACID

      传统数据库
      追求强⼀致性模型
  • BASE

      ⼤型分布式系统
      通过牺牲强⼀致性获得⾼可⽤性

常见服务件的CAP选择情况

服务件名称简介选择
Zookeeper一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等CP
Redis一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。单机CP 主从AP
Eureka基于 RestfulAPI ⻛格开发的服务注册与发现组件,SpringCloud体系组件之一AP
Nacos是 Spring Cloud Alibaba 核⼼组件之⼀,负责服务注册与发现,还有配置。支持CP/AP切换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值