简述 CAP 理论

用户头像
lei Shi
关注
发布于: 2020 年 07 月 13 日

摘要

分布式领域不得不谈的问题就是cap理论,那么何为CAP理论呢?CAP理论的是想说明一个问题,任何的分布式系统都没有办法同时满足 一致性(consistency),可用性(availability),分区容错性(partition torlerance),只能够满足其中的两个。CAP理论为大家建设分布式系统提供了理论指导,使得大家再设计分布式系统的时候,能够结合实际的业务场景对三个条件做取舍,从而设计出符合业务场景的分布式系统。BTW,“取舍的艺术”本来就是一个优秀的架构师在做架构设计需要重点考虑的问题,基于已有的限制条件,设计出在满足条件下最优秀的系统是每个架构所需要思考的。

CAP解析

Consistency

一致性 是指在分布式系统中,所有节点的状态是一致的,主要是对于数据内容来讲,是完全一致的

Availability

可用性 是指用户的每一次请求都能够得到返回,但是不保证返回结果的正确性,可能的到的数据是另外一个节点已经变更之后的数据,由于网络延迟(网络延迟是分布式系统无法规避的问题)使得变更记录没有同步到当前节点

Partition Tolerance

分区容错 是指在网络状况下,在某些节点的变更不能够急事同步到新的节点上,导致不同网络分区的数据之间的差异越来越大,从而造成结果得不准确。如果需要满足分区容错性,就需要在可用性 与 一致性 之间做取舍



有了cap理论做指导,那么我们如何来设计一个分布式系统呢?

这就引出了分布式理论的BASE理论,硕大BASE理论,我们就不得不提一下在关系型数据库领域的事务特征

ACID

ACID & BASE -- 摘自 维基百科

ACID

  • Atomicity(原子性):一个事务(transaction)中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。即,事务不可分割、不可约简。[1]

  • Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设约束触发器级联回滚等。[1]

  • Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括未提交读(Read uncommitted)、提交读(read committed)、可重复读(repeatable read)和串行化(Serializable)。[1]

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

BASE

由于分布式数据库的结构特性,根据分布式系统的CAP定理,实现ACID事务需要付出很大的成本来维护可用性,所以为了保障可用性而总结出一套弱化的事务特性:

  • 基本可用(Basically Available):系统能够基本运行、一直提供服务。

  • 软状态(Soft-state):系统不要求一直保持强一致状态。

  • 最终一致性Eventual consistency):系统需要在某一时刻后达到一致性要求。

简称BASE,与ACID相对应(acid为“酸”的英文名称,base为“碱”的英文名称)。



用户头像

lei Shi

关注

还未添加个人签名 2018.05.24 加入

还未添加个人简介

评论

发布
暂无评论
简述CAP理论