1、分布式基础之CAP和BASE理论

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

一、从集中式到分布式

1、集中式

集中式是指有一台或者多台计算机组成的中心节点,数据集中存储于这个中心节点中,并且整个系统的所有业务单元都集中部署在这个中心节点上,系统的所有功能均由集中处理。

2、分布式

分布式系统是一个硬件或者软件分布在不同的网络计算机上,彼此之间仅仅通过消费传递进行通信和协调的系统。
分布式系统特征:

1、分布性
2、对等性
3、并发性
4、缺乏全球时钟(由于分布式系统由一些列的空间上任意分布的多个进程组成,具有分布性,很难定义两个事件究竟是谁先谁后)
5、故障总是会发生

分布式系统典型难题:

1、通信问题
2、网络分区(当网络发生异常时候,只有部分节点进行正常通信,另一些节点不可用,网络分区严重情况下面会导致“脑裂”)
3、三态(成功、失败、超时)
4、节点故障

二、CAP理论和BASE理论

  • 分布式事物:指事物参与者、支持事物的服务器、资源服务器以及事物管理器分别于分布式系统的不同节点之上。通常一个分布式事物中会涉及对多个数据源或者业务系统的操作。
  • 本地事物可以采用ACID模型保证数据的严格一致性。但在分布式系统中,实现事物的严格一致性会和服务的可用性产生冲突,这是有分布式系统的特征决定的。因此,在可用性和一致性之间永远无法存在一个两全其美的方案,于是如何构建一个兼顾可用性和一致性的分布式系统成为一个难题,因此出现了诸如CAP和BASE这样的分布式经典理论。
1、CAP理论
  • CAP 定理(CAP theorem)又被称作布鲁尔定理(Brewer's theorem),是加州大学伯克利分校的计算机科学家埃里克·布鲁尔(Eric Brewer)在 2000 年的 ACM PODC 上提出的一个猜想。2002 年,麻省理工学院的赛斯·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)发表了布鲁尔猜想的证明,使之成为分布式计算领域公认的一个定理。对于设计分布式系统的架构师来说,CAP 是必须掌握的理论。

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

(1)一致性

一致性指数据在多个副本之间是否能够保持一致性的特性。在一致性的需求下,当一个系统在数据一致的状态下执行了更新操作后,应该保证系统的数据任然处于一致的状态。布鲁尔提到对某个指定的客户端来说,读操作保证能够返回最新的写操作结果。

  • 在分布式系统中如果能够针对一个数据项的更新操作执行成功后,所有用户都可以读取到其最新的值,那么这样的系统就被认为具有强一致性。

(2)可用性

可用性指系统提供的服务必须一致处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内(指用户的一个操作,系统必须能够在指定的时间内返回对应的处理结果,如果超过了这个时间,系统就认为不可用)****返回结果(返回结果是可用性的另一个重要指标,要求系统在完成对用户请求处理后,返回一个正常的响应结果,失败或者成功,而不是一个困惑的结果)

(3)分区容错性

  • 网络分区指在分布式系统中,不同节点分布在不同的子网络(机房或者异地网络等)中,由于一些特殊的原因导致这些网络之间出现网络不连通的状态,但是各个子网络的内部网络是正常的,从而导致整个系统的网络呼喊经被切分为若干个孤立的区域。

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

(4)总结

  • 在分布式环境中,我们会发现必须选择 P(分区容忍)要素,因为网络本身无法做到 100% 可靠,有可能出故障,所以分区是一个必然的现象。也就是说分区容错性是分布式系统的一个最基本要求。
  • 在CAP理论中,不能同时满足一致性、分区容忍性、可用性,而分区容忍性优势分布式系统的基本要求,因此在架构设计的时候只能在CA或者CP中取舍,也就是只能在一致性或者可用性之间取舍。


    CP系统

    AP系统

(5)CAP理论中几个重要的细节

  • CAP 关注的粒度是数据,而不是整个系统。C 与 A 之间的取舍可以在同一系统内以非常细小的粒度反复发生,而每一次的决策可能因为具体的操作,乃至因为牵涉到特定的数据或用户而有所不同。但在实际设计过程中,每个系统不可能只处理一种数据,而是包含多种类型的数据,有的数据必须选择 CP,有的数据必须选择 AP。而如果我们做设计时,从整个系统的角度去选择 CP 还是 AP,就会发现顾此失彼,无论怎么做都是有问题的。(以一个最简单的用户管理系统为例,用户管理系统包含用户账号数据(用户 ID、密码)、用户信息数据(昵称、兴趣、爱好、性别、自我介绍等)。通常情况下,用户账号数据会选择 CP,而用户信息数据会选择 AP,如果限定整个系统为 CP,则不符合用户信息数据的应用场景;如果限定整个系统为 AP,则又不符合用户账号数据的应用场景。)
  • CAP 是忽略网络延迟的。意味着,CAP 理论中的 C 在实践中是不可能完美实现的,在数据复制的过程中,节点 A 和节点 B 的数据并不一致。
  • 正常运行情况下,不存在 CP 和 AP 的选择,可以同时满足 CA。CAP 理论告诉我们分布式系统只能选择 CP 或者 AP,但其实这里的前提是系统发生了“分区”现象。如果系统没有发生分区现象,也就是说 P 不存在的时候(节点间的网络连接一切正常),我们没有必要放弃 C 或者 A,应该 C 和 A 都可以保证,这就要求架构设计的时候既要考虑分区发生时选择 CP 还是 AP,也要考虑分区没有发生时如何保证 CA。(同样以用户管理系统为例,即使是实现 CA,不同的数据实现方式也可能不一样:用户账号数据可以采用“消息队列”的方式来实现 CA,因为消息队列可以比较好地控制实时性,但实现起来就复杂一些;而用户信息数据可以采用“数据库同步”的方式来实现 CA,因为数据库的方式虽然在某些场景下可能延迟较高,但使用起来简单。)
  • 放弃并不等于什么都不做,需要为分区恢复后做准备。
2、BASE理论
  • BASE 是基本可用(Basically Available)、软状态( Soft State)、最终一致性( Eventual Consistency)三个短语的简写。BASE理论是对CAP中一致性和可用性权衡的结果,是基于CAP定力逐步演化而来的,是源于大规模互联网系统分布式实践的总结。其核心思想:无法做到强一致性,但是每一个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。

(1)基本可用

基本可用指分布式系统在出现不可预知的故障时候,允许损失部分可用性,保证核心服务可用。响应时间上的损失(正常0.5ms之内的故障时候响应延时为1-2秒了)和功能上的损失(秒杀时候的降级数据)

(2)弱状态

也称软状态,指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程中存在延时。

(3)最终一致性

最终一致性强调的是系统中所有的数据副本,在进过一段时间的同步后,最终能够达到一个一致的状态。最终一致性需要保证数据最终能够一致而不需要保证数据实时的一致性。

  • 在没有发生故障的前提下,数据的一致性状态的时间延时,取决于网络延迟,系统负载,数据恢复策略等等因素。

(4)总结

  • BASE 理论本质上是对 CAP 的延伸和补充,更具体地说,是对 CAP 中 AP 方案的一个补充。其基本思路就是:通过业务,牺牲强一致性而获得可用性,并允许数据在一段时间内是不一致的,但是最终达到一致性状态。

三、思考:按照CAP理论如何设计一个电商系统?

  • 首先个电商网站核心模块有用户,订单,商品,支付,促销管理

1、对于用户模块,包括登录,个人设置,个人订单,购物车,收藏夹等,这些模块保证AP,数据短时间不一致不影响使用。
2、订单模块的下单付款扣减库存操作是整个系统的核心,CA都需要保证,极端情况下面牺牲A保证C
3、商品模块的商品上下架和库存管理保证CP
4、搜索功能因为本身就不是实时性非常高的模块,所以保证AP就可以了。
5、促销是短时间的数据不一致,结果就是优惠信息看不到,但是已有的优惠要保证可用,而且优惠可以提前预计算,所以可以保证AP。
6、支付这一块是独立的系统,或者使用第三方的支付宝,微信。其实CAP是由第三方来保证的,支付系统是一个对CAP要求极高的系统,C是必须要保证的,AP中A相对更重要,不能因为分区,导致所有人都不能支付

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342