Redis-CAP定理和BASE理论(二)

CAP理论概述

1998 年来自柏克莱加州大学的计算机科学家 埃里克.布鲁尔(Eric Brewer) 提出分布式系统的三个基本指标:Consistency(一致性)Availability(可用性) 、Partition tolerance(分区容错),简称:CAP。

在2000年的分布式计算原则研讨大会上(PODC)埃里克.布鲁尔提出的一个猜想:在设计一个分布式系统时,CAP三者无法同时满足。在2002年,麻省理工学院(MIT)的 赛斯·吉尔伯特(Seth Gilbert) 和 南希·林奇(Nancy Lynch) 发表了布鲁尔猜想的证明,使之成为分布式计算系统的标准定理(也是理解分布式系统的起点)。定理讨论了在两个互相矛盾的请求到达彼此连接不通的两个不同的分布式节点的时候的处理方案。

CAP定理定义

CAP定理(CAP theorem), 又被称作 布鲁尔定理(Brewer’s theorem), 它指出对于一个 分布式计算系统 来说,不可能同时满足以下三点

  • Consistency(一致性): 所有节点在同一时间具有相同的数据
  • Availability(可用性):保证每个请求不管成功或者失败都有响应(也就是只要收到用户的请求,服务器都要在合理的时间内给出合理的响应)
  • Partition tolerance(分区容错):系统中任意信息的丢失或失败不会影响系统的继续运作(也就是分布式系统遇到任何网络分区故障时,仍然可以对外提供一致性、可用性的服务)

什么是分区?
在分布式系统中,不同的节点通常分布在不同的子网络中,由于一些客观的因素,子网络之间出现了网络不通,但子网络内部的网络是正常的。从而导致了整个系统的环境被切分成了若干个孤立的区域,这就是分区。

CAP三进二

大部分分布式系统都分布在不同的子网络,分区又是高概率事件,因此分布式系统,默认是支持分区容错的。由于Partition tolerance(分区容错)的存在,导致Availability(可用性)Consistency(一致性)互相矛盾,因此一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个,即分布式系统在AP和CP之间做选择。

因此,根据 CAP 定理将 NoSQL 数据库分成了满足 CA 、CP 和 AP 原则三 大类:

  • CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
  • CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
  • AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

BASE理论

CAP 理论的经典解释,是忽略网络延迟的,但在实际中延迟和分区紧密相关。CAP 从理论变为落地的场景发生在操作的间歇,系统需要在这段时间内做出关于分区的一个重要决定:

  1. 取消操作,降低了系统的可用性
  2. 继续操作,可能损失系统一致性

2008年eBay的架构师Dan Pritchett源于对大规模分布式系统的实践总结,在ACM上发表文章提出BASE理论,BASE理论是对CAP理论的延伸。核心思想是通过牺牲一定的一致性(Strong Consistency,CAP的一致性就是强一致性),可以采用适合的方式达到最终一致性(Eventual Consitency),来最大程度的满足大部分分布式系统的业务需求。

  • Basically Available(基本可用):分布式系统在出现故障时,允许损失部分可用功能,保证核心功能可用

服务降级策略?
在双十一期大促期间,为了应对海量的访问,保证下单等核心功能的可用性,各大电商平台通常会采取降级服务策略:关闭评论等非核心功能)

  • Soft State(软状态/柔性事务):允许分布式系统中的数据存在中间状态,即:分布式系统不同节点的副本数据可以存在延迟,并认为该状态不影响分布式系统可用性
  • Eventual Consistency(最终一致性):在分布式系统可接受的时间范围内,所有节点数据都将会达到一致,而可接受的时间范围受网络、业务、数据及复制技术等等因素影响。实际应用中,有可以分为以下几种
    1. 因果一致性:因果一致性是指,如果进程A在更新完某个数据项后通知了进程B,那么进程B之后对该数据项的访问都应该能够获取到进程A更新后的最新值,并且如果进程B要对该数据项进行更新操作的话,务必基于进程A更新后的最新值,即不能发生丢失更新情况。与此同时,与进程A无因果关系的进程C的数据访问则没有这样的限制。
    2. 读写一致性:读己之所写是指,进程A更新一个数据项之后,它自己总是能够访问到更新过的最新值,而不会看到旧值。也就是说,对于单个数据获取者而言,其读取到的数据一定不会比自己上次写入的值旧。因此,读己之所写也可以看作是一种特殊的因果一致性。
    3. 会话一致性:会话一致性将对系统数据的访问过程框定在了一个会话当中:系统能保证在同一个有效的会话中实现“读己之所写”的一致性,也就是说,执行更新操作之后,客户端能够在同一个会话中始终读取到该数据项的最新值。
    4. 单调读一致性:单调读一致性是指如果一个进程从系统中读取出一个数据项的某个值后,那么系统对于该进程后续的任何数据访问都不应该返回更旧的值。
    5. 单调写一致性:单调写一致性是指,一个系统需要能够保证来自同一个进程的写操作被顺序地执行。

总的来说,BASE理论面向的是大型高可用可扩展的分布式系统,和传统事务的ACID特性使相反的,它完全不同于ACID的强一致性模型,而是提出通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态。但同时,在实际的分布式场景中,不同业务单元和组件对数据一致性的要求是不同的,因此在具体的分布式系统架构设计过程中,ACID特性与BASE理论往往又会结合在一起使用。

结束语

BASE理论是对CAP定理的延伸,是Redis、MongoDB等众多NoSQL数据库管理系统的理论基础。ACID是传统关系型数据库的设计理念,ACID 和 BASE代表截然不同的两种设计哲学,强一致性-可用性的两端。

延伸阅读:

CAP Twelve Years Later: How the “Rules” Have Changed
CAP理论十二年回顾:”规则”变了

原文地址:https://www.cnblogs.com/oxdavidsun/p/12177088.html

时间: 2024-10-04 07:46:51

Redis-CAP定理和BASE理论(二)的相关文章

CAP原则、BASE理论

CAP原则.BASE理论 2017-12-15 目录 1 CAP原则  1.1 CAP原则是什么  1.2 CAP为何三者不可得兼  1.3 一致性与可用性的决择2 BASE理论  2.1 BASE理论是什么  2.2 ACID和BASE的区别与联系  2.3 最终一致性五钟变种3 分布式系统的典型应用参考 计算机系统从集中式向分布式的变革,随着包括分布式网络.分布式事务和分布式数据一致性等在内的一系列问题与挑战,同时也催生了一大批诸如ACID.CAP和BASE等经典理论的快速发展. 1 CAP

CAP原理和BASE思想和ACID模型

问题的解读 对于上面三个例子,相信大家一定看出来了,我们的终端用户在使用不同的计算机产品时对于数据一致性的需求是不一样的: 1.有些系统,既要快速地响应用户,同时还要保证系统的数据对于任意客户端都是真实可靠的,就像火车站售票系统 2.有些系统,需要为用户保证绝对可靠的数据安全,虽然在数据一致性上存在延时,但最终务必保证严格的一致性,就像银行的转账系统 3.有些系统,虽然向用户展示了一些可以说是"错误"的数据,但是在整个系统使用过程中,一定会在某一个流程上对系统数据进行准确无误的检查,从

CAP原则和BASE理论

CAP原则 CAP原则又称CAP定理,是一个经典的分布式系统理论.CAP理论告诉我们:一个分布式系统不可能同时满足一致性(C:Consistency).可用性(A:Availability)和分区容错性(P:Partition tolerance)这三个基本需求,最多只能同时满足其中两项. 一致性 在分布式环境下,一致性是指数据在多个副本之间能否保持一致的特性.在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态. 对于一个将数据副本分布在不同分布式

CAP原理和BASE思想

分布式领域CAP理论,Consistency(一致性), 数据一致更新,所有数据变动都是同步的Availability(可用性), 好的响应性能Partition tolerance(分区容错性) 可靠性 定理:任何分布式系统只可同时满足二点,没法三者兼顾.忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍. 关系数据库的ACID模型拥有 高一致性 + 可用性 很难进行分区:Atomicity原子性:一个事务中所有操作都必须全部完成,要么全部不完成.Consiste

【笔记】CAP原理和BASE思想

摘自http://www.jdon.com/37625 分布式领域CAP理论,Consistency(一致性), 数据一致更新,所有数据变动都是同步的Availability(可用性), 好的响应性能Partition tolerance(分区容错性) 可靠性 定理:任何分布式系统只可同时满足二点,没法三者兼顾.忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍. 关系数据库的ACID模型拥有 高一致性 + 可用性 很难进行分区:Atomicity原子性:一个事务中

分布式系统CAP定理与BASE理论

CAP定理: 一个分布式系统不可能同时满足一致性(C:Consistency).可用性(A:Availability)和分区容错性(P:Partition tolerance)这三个基本要求,最多只能满足其中的两项. 一致性 在分布式环境中,一致性是指数据在多个副本之间是否能够保持强一致的特性. 对于一个将数据副本分布在不同节点上的分布式系统来说,如果对第一个节点的数据进行了更新操作并且更新成功后,却没有使得第二个节点上的数据得到相应的更新,于是在对第二个节点的数据进行读取操作时,获取的依然是更

CAP原则(CAP定理)、BASE理论

参考文章: https://www.cnblogs.com/duanxz/p/5229352.html 原文地址:https://www.cnblogs.com/amei0/p/8178550.html

(二)从分布式一致性谈到CAP理论、BASE理论

问题的提出 在计算机科学领域,分布式一致性是一个相当重要且被广泛探索与论证问题,首先来看三种业务场景. 1.火车站售票 假如说我们的终端用户是一位经常坐火车的旅行家,通常他是去车站的售票处购买车票,然后拿着车票去检票口,再坐上火车,开始一段美好的旅行----一切似乎都是那么和谐.想象一下,如果他选择的目的地是杭州,而某一趟开往杭州的火车只剩下最后一张车票,可能在同一时刻,不同售票窗口的另一位乘客也购买了同一张车票.假如说售票系统没有进行一致性的保障,两人都购票成功了.而在检票口检票的时候,其中一

CAP定理(原则)以及BASE理论

CAP定理(原则)以及BASE理论 CAP定理(原则)概念 CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. 1. 数据一致性(consistency) 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值.(等同于所有节点访问同一份最新的数据副本) 2. 服务可用性(availability) 可用性(A):在集群中一部分节点故障后,集