CAP理论的理解

CAP理论概述

一个分布式系统最多只能同时满足 一致性(Consistency)可用性(Availability)分区容错性(Partition tolerance)这三项中的两项。

Consistency 一致性

一致性指 “all nodes see the same data at the same time”,即更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致。

Availability 可用性

可用性指 “Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。

Partition tolerance 分区容错性

分区容错性指 “the system continues to operate despite arbitrary message loss or failure of part of the system”,即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

好的分区容错性要求能够使应用虽然是一个分布式系统,而看上去却好像是在一个可以运转正常的整体。比如现在的分布式系统中有某一个或者几个机器宕掉了,其他剩下的机器还能够正常运转满足系统需求,或者是机器之间有网络异常,将分布式系统分隔为独立的几个部分,各个部分还能维持分布式系统的运作,这样就具有好的分区容错性。

在分布式系统中,通常是无法放弃 Partition Tolerance 的,也就只能在 CP 和 AP 之间做选择了。如果有个分布式系统号称是 CA 的,那一定是扯淡。

示例

假设我们用一台服务器 A 和 B 对外提供存储服务。每次用户在往服务器 A 写入数据的时候,A 都往服务器 B上写一份,然后再返回客户端。用户的每份数据都存了两份,分别在 A 和 B 上,用户访问任意一台机器都能读取到最新的数据。
假设 A 和 B 之间的网络断了导致 A 和 B 无法通信,也就是说网络出现了分区,那么用户在往服务器 A 写入数据的时候,服务器 A 无法将该数据写入到服务器 B。这时,服务器 A 就必须要做出一个艰难的选择:

  • 要么选择一致性(C)而牺牲可用性(A):为了保证服务器 A 和 B 上的数据是一致的,服务器 A 决定暂停对外提供数据写入服务,从而保证了服务器A和B上的数据是一致。
  • 要么选择可用性(A)而牺牲一致性(C):为了保证服务不中断,服务器 A 先把数据写入到了本地,然后返回客户端,从而让客户端感觉数据已经写入了。

对网络分区的处理

对网络分区的处理有以下几个步骤:

  • 检测网络是否出现分区
  • 当分区出现了,进入分区模式并限制某些操作
  • 当网络恢复后,启动分区恢复


    对网络分区的处理

一致性模式

弱一致性

在写入之后,访问可能看到,也可能看不到(写入数据)。尽力优化之让其能访问最新数据。

这种方式可以 memcached 等系统中看到。弱一致性在 VoIP,视频聊天和实时多人游戏等真实用例中表现不错。打个比方,如果你在通话中丢失信号几秒钟时间,当重新连接时你是听不到这几秒钟所说的话的。

最终一致性

在写入后,访问最终能看到写入数据(通常在数毫秒内)。数据被异步复制。
DNS 和 Email 等系统使用的是此种方式。最终一致性在高可用性系统中效果不错。

强一致性

在写入后,访问立即可见。数据被同步复制。

文件系统和关系型数据库(RDBMS)中使用的是此种方式。强一致性在需要记录的系统中运作良好。

引用:


分布式系统的CAP理论
谈谈对CAP定理的理解

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,646评论 18 139
  • 分布式系统面临的第一个问题就是数据分布,即将数据均匀地分布到多个存储节点。另外,为了保证可靠性和可用性,需要将数据...
    olostin阅读 4,565评论 2 26
  • webpack Webpack 打包例子讲解 CommonChunkPlugin 参数详解 Webpack 的 H...
    Dabao123阅读 1,795评论 0 3
  • 这几天一直在用碎片化时间读关于亲子教育的书,因为心里的困惑,目前只知道停下以前对孩子凶或打骂打压的做法是对的,正面...
    池浅笑安然阅读 444评论 0 1
  • 一个艺人可以有很多身份角色,歌手,演员,主持,偶像,模特,导演等等。当你想起他/她的时候,会很自然地将自己对他/她...
    豹仔秋人阅读 995评论 1 21