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 从理论变为落地的场景发生在操作的间歇,系统需要在这段时间内做出关于分区的一个重要决定:
- 取消操作,降低了系统的可用性
- 继续操作,可能损失系统一致性
2008年eBay的架构师Dan Pritchett源于对大规模分布式系统的实践总结,在ACM上发表文章提出BASE理论,BASE理论是对CAP理论的延伸。核心思想是通过牺牲一定的一致性(Strong Consistency,CAP的一致性就是强一致性),可以采用适合的方式达到最终一致性(Eventual Consitency),来最大程度的满足大部分分布式系统的业务需求。
Basically Available(基本可用):分布式系统在出现故障时,允许损失部分可用功能,保证核心功能可用
服务降级策略?
在双十一期大促期间,为了应对海量的访问,保证下单等核心功能的可用性,各大电商平台通常会采取降级服务策略:关闭评论等非核心功能)
Soft State(软状态/柔性事务):允许分布式系统中的数据存在中间状态,即:分布式系统不同节点的副本数据可以存在延迟,并认为该状态不影响分布式系统可用性Eventual Consistency(最终一致性):在分布式系统可接受的时间范围内,所有节点数据都将会达到一致,而可接受的时间范围受网络、业务、数据及复制技术等等因素影响。实际应用中,有可以分为以下几种- 因果一致性:因果一致性是指,如果进程A在更新完某个数据项后通知了进程B,那么进程B之后对该数据项的访问都应该能够获取到进程A更新后的最新值,并且如果进程B要对该数据项进行更新操作的话,务必基于进程A更新后的最新值,即不能发生丢失更新情况。与此同时,与进程A无因果关系的进程C的数据访问则没有这样的限制。
- 读写一致性:读己之所写是指,进程A更新一个数据项之后,它自己总是能够访问到更新过的最新值,而不会看到旧值。也就是说,对于单个数据获取者而言,其读取到的数据一定不会比自己上次写入的值旧。因此,读己之所写也可以看作是一种特殊的因果一致性。
- 会话一致性:会话一致性将对系统数据的访问过程框定在了一个会话当中:系统能保证在同一个有效的会话中实现“读己之所写”的一致性,也就是说,执行更新操作之后,客户端能够在同一个会话中始终读取到该数据项的最新值。
- 单调读一致性:单调读一致性是指如果一个进程从系统中读取出一个数据项的某个值后,那么系统对于该进程后续的任何数据访问都不应该返回更旧的值。
- 单调写一致性:单调写一致性是指,一个系统需要能够保证来自同一个进程的写操作被顺序地执行。
总的来说,BASE理论面向的是大型高可用可扩展的分布式系统,和传统事务的ACID特性使相反的,它完全不同于ACID的强一致性模型,而是提出通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态。但同时,在实际的分布式场景中,不同业务单元和组件对数据一致性的要求是不同的,因此在具体的分布式系统架构设计过程中,ACID特性与BASE理论往往又会结合在一起使用。
结束语
BASE理论是对CAP定理的延伸,是Redis、MongoDB等众多NoSQL数据库管理系统的理论基础。ACID是传统关系型数据库的设计理念,ACID 和 BASE代表截然不同的两种设计哲学,强一致性-可用性的两端。
延伸阅读:
Redis-CAP定理和BASE理论(二)的更多相关文章
- CAP定理和BASE理论
CAP定理和BASE理论 标签(空格分隔): 操作系统 CAP定理 CAP定理: 一个分布式系统最多只能满足一致性 (Consistency), 可用性(Availability)和分区容错性(Par ...
- 分布式系统中的CAP原理和BASE理论
CAP是一致性(Consistency).可用性(Availability).分区容忍性(Partition tolerance)的缩写.CAP原理指的是这三个要素最多只能同时实现两点,不可能三者兼顾 ...
- CAP原理和BASE理论
CAP原理 概述 CAP理论的主要场景是在分布式环境下,在单机环境下,基本可不考虑CAP问题. CAP理论就是说在分布式存储系统中,最多只能实现上面的两点.而由于当前的网络硬件肯定会出现延迟丢包等问题 ...
- CAP定理与BASE理论
1. CAP定理 C:Consistency,一致性 A:Availability,可用性 P:Partition tolerance,分区容错性 CAP定理,指的是在一个分布式系统中,一致性.可用性 ...
- CAP原则、BASE理论
CAP原则.BASE理论 2017-12-15 目录 1 CAP原则 1.1 CAP原则是什么 1.2 CAP为何三者不可得兼 1.3 一致性与可用性的决择2 BASE理论 2.1 BASE理 ...
- 【分布式】1、CAP原则(CAP定理)、BASE理论
CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...
- CAP原则(CAP定理)、BASE理论
CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...
- 关于分布式存储系统中-CAP原则(CAP定理)与BASE理论比较
CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...
- CAP原理和BASE思想和ACID模型
问题的解读 对于上面三个例子,相信大家一定看出来了,我们的终端用户在使用不同的计算机产品时对于数据一致性的需求是不一样的: 1.有些系统,既要快速地响应用户,同时还要保证系统的数据对于任意客户端都是真 ...
随机推荐
- CSS像素设置为整数,渲染结果像素带有小数
今天进行网页设计学习时,CSS代码设计width:300px,但实际显示像素如下图所示为199.99px. 最后发现是浏览器运用了缩放,恢复100%的缩放后,像素显示为整数.
- 手机QQ浏览器属于代理服务器吗?
这两天.上QQ,会员上线提示.老是显示福建省,而没有具体的地方.这是怎么回事呢?而且那个时间段我都没有上QQ.但是有用手机QQ浏览器.偷菜.这是怎么回事,机子也没有病毒 没有木马 到底怎么搞的...! ...
- Java Annotation详解(二): 反射和Annotation
前面一篇文<Java Annotation详解(一): 理解和使用Annotation>中,我们或许会觉得,Annotation注释其实并没有多大的作用,除了几个内建的Annotation ...
- 【u227】BOOK
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 陈老师喜欢网购书籍,经常一次购它个百八十本,然后拿来倒卖,牟取暴利.前些天,高一的新同学来了,他便像往 ...
- H3C 不适当的VLAN间路由方式
- 【9103】求n的累加和
Time Limit: 10 second Memory Limit: 2 MB 问题描述 用高精度方法,求s=1+2+3+...+n的精确值(n以一般整数输入) Input 文件输入仅一行,输入n ...
- 提前终止forEach技巧,使用try catch
学习react优化性能的时候,在render之前,生命周期shouldComponentUpdate里判断前后两次数据是否一致,使用了forEach嵌套if语句,如果满足条件想直接break跳出for ...
- 2018百度之星初赛B - A,D,F
总结:这一次的百度之星之行到这里也就结束了,充分的认识到了自己的不足啊...果然还是做的题太少,,见识的题型也还太少,对于STL的掌握还是不够到位啊!!(STL大法是真的好,建议大家认认真真的好好学学 ...
- H3C查看历史命令--用户以上
[H3Cwang]display history-command sys sysname H3C sysname H3Cwang display history-command q ...
- SVG基础绘图实例
SVG可缩放矢量图(Scalable Vector Graphics),是使用 XML 来描述二维图形和绘图程序的语言,图像在放大或改变尺寸的情况下其图形质量不会有所损失,是万维网联盟的标准. 下面整 ...