从 0 开始学架构》精华总结-CAP理论和CAP细节

声明:学习完李运华《从 0 开始学架构》,有一种醍醐灌顶,豁然开朗的感觉。为了能够对其概念有一个深入的理解,并且掌握其总结的方法论。特意对本课程做一个提炼,形成自己的知识体系。毕竟能给别人讲清楚了,才能说明自己真的掌握了。本文的引用仅限自我学习如有侵权,请联系作者删除。

CAP理论的内容是什么?

      CAP 定理(CAP theorem)又被称作布鲁尔定理(Brewer's theorem),对于设计分布式系统的架构师来说,CAP 是必须掌握的理论,内容翻译如下:

     在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性(Consistence)、可用性(Availability)、分区容错性(Partition Tolerance)三者中的两个,另外一个必须被牺牲。

一致性(C):对某个指定的客户端来说,读操作保证能够返回最新的写操作结果。

可用性(A):非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)。

分区容错性(P):当出现网络分区后,系统能够继续“履行职责”。

     注意:虽然 CAP 理论定义是三个要素中只能取两个,但放到分布式环境下来思考,我们会发现必须选择 P(分区容忍)要素,因为网络本身无法做到 100% 可靠,有可能出故障,所以分区是一个必然的现象。如果我们选择了 CA 而放弃了 P,那么当发生分区现象时,为了保证 C,系统需要禁止写入,当有写入请求时,系统返回 error(例如,当前系统不允许写入),这又和 A 冲突了,因为 A 要求返回 no error 和 no timeout。因此,分布式系统理论上不可能选择 CA 架构,只能选择 CP 或者 AP 架构

CAP理论实现细节有哪些?

CAP是针对实现细节如下:

(1)CAP 关注的粒度是数据,而不是整个系统。在实际设计过程中,每个系统不可能只处理一种数据,而是包含多种类型的数据,有的数据必须选择 CP,有的数据必须选择 AP。而如果我们做设计时,从整个系统的角度去选择 CP 还是 AP,就会发现顾此失彼,无论怎么做都是有问题的。

      所以在 CAP 理论落地实践时,我们需要将系统内的数据按照不同的应用场景和要求进行分类,每类数据选择不同的策略(CP 还是 AP),而不是直接限定整个系统所有数据都是同一策略。

(2)CAP 是忽略网络延迟的

(3)正常运行情况下,不存在 CP 和 AP 的选择,可以同时满足 CA。CAP 理论告诉我们分布式系统只能选择 CP 或者 AP,但其实这里的前提是系统发生了“分区”现象。这就要求架构设计的时候既要考虑分区发生时选择 CP 还是 AP,也要考虑分区没有发生时如何保证 CA

(4)放弃并不等于什么都不做,需要为分区恢复后做准备。

ACID理论指的是什么?

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

(1)Atomicity(原子性):一个事务中的所有操作,要么全部完成,要么全部不完成,不会在中间某个环节结束。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。

(2)Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。

(3)Isolation(隔离性):数据库允许多个并发事务同时对数据进行读写和修改的能力。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。

(4)Durability(持久性):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

BASE理论指的是什么?

       BASE 是指基本可用(Basically Available)、软状态( Soft State)、最终一致性( Eventual Consistency),核心思想是即使无法做到强一致性(CAP 的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性。

1. 基本可用(Basically Available)分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。

2. 软状态(Soft State)允许系统存在中间状态,而该中间状态不会影响系统整体可用性。这里的中间状态就是 CAP 理论中的数据不一致。

3. 最终一致性(Eventual Consistency)系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。

综合分析:ACID 是数据库事务完整性的理论,CAP 是分布式系统设计理论,BASE 是 CAP 理论中 AP 方案的延伸

 我是快乐的一只,一只快乐的我。如果我的文章对你有所帮助,请随手点个在看吧,您的鼓励将是我坚持创作下去最大的动力。

公众号请搜索:“快乐的一只”

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值