最新要闻
- 世界动态:89%美国大学生用写作业!揭秘爆红ChatGPT之父:应对核末日狂囤黄金、中学就出柜
- 当前快报:2023年首次更新!微信Mac版3.7.0发布:终于支持图片文字提取
- 【天天聚看点】ChatGPT让苹果急了!消息称苹果将于下周召开内部AI峰会
- 环球快资讯丨299元!小米对讲机2S发布:市区5公里通话 100个对讲频道
- 热议:4个小号给大号浇水 缴电费再退骗蚂蚁森林能量被封号!法院判了
- 人工智能立大功!AI筛查阿尔茨海默病准确率达75%
- 每日视点!19999元!尼康发布尼克尔Z 85mm f/1.2 S镜头:模特发丝根根可数
- 2799限量抢!小米Civi 2潮流版预售 网友:我一男生都表示太好看
- 世界报道:豆瓣仅5.7分 漫威超英大片《黑豹2》国内首映 开场票房就被《流浪地球2》超越
- 每日速递:男子花两千元套圈 套中两台宏光汽车:本人回应只要一辆 做人留一线
- 国产纯电两门跑车!哪吒E实车亮相:动力暴躁
- 焦点!百度类ChatGPT产品“文心一言”公开:股价应声上涨13%
- 越狱最后各人物的结局是什么?电视剧越狱演员表
- 曾志伟的身高是什么?曾志伟个人资料
- 12月是什么星座?描写12月你好的优美说说
- 取关是什么意思?取关抖音好友对方知道吗?
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
观天下!我是如何用CAP和BASE两个基础理论卷死其他组员的?
本文内容整理自博学谷狂野架构师
CAP 定理又被称作布鲁尔定理,是加州大学的计算机科学家布鲁尔在 2000 年提出的一个猜想。2002 年,麻省理工学院的赛斯·吉尔伯特和南希·林奇发表了布鲁尔猜想的证明,使之成为分布式计算领域公认的一个定理。
布鲁尔在提出CAP猜想时并没有具体定义 Consistency、Availability、Partition Tolerance 这3个词的含义,不同资料的具体定义也有差别,为了更好地解释,下面选择Robert Greiner的文章《CAP Theorem》作为参考基础。
(资料图片)
CAP理论的定义
在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性(Consistence)、可用性(Availability)、分区容错性(PartitionTolerance)三者中的两个,另外一个必须被牺牲。
Consistency、Availability、Partition Tolerance具体解释如下:
C - Consistency 一致性
A read is guaranteed to return the most recent write for a given client.对某个指定的客户端来说,读操作保证能够返回最新的写操作结果。
这里并不是强调同一时刻拥有相同的数据,对于系统执行事务来说,在事务执行过程中,系统其实处于一个不一致的状态,不同的节点的数据并不完全一致。
一致性强调客户端读操作能够获取最新的写操作结果,是因为事务在执行过程中,客户端是无法读取到未提交的数据的,只有等到事务提交后,客户端才能读取到事务写入的数据,而如果事务失败则会进行回滚,客户端也不会读取到事务中间写入的数据。
A - Availability 可用性
A non-failing node will return a reasonable response within a reasonable amount of time (no error or timeout).非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)。
这里强调的是合理的响应,不能超时,不能出错。注意并没有说“正确”的结果,例如,应该返回 100 但实际上返回了 90,肯定是不正确的结果,但可以是一个合理的结果。
P - Partition Tolerance 分区容忍性
The system will continue to function when network partitions occur.当出现网络分区后,系统能够继续“履行职责”。
这里网络分区是指:一个分布式系统里面,节点组成的网络本来应该是连通的。然而可能因为一些故障(节点间网络连接断开、节点宕机),使得有些节点之间不连通了,整个网络就分成了几块区域,数据就散布在了这些不连通的区域中。
一致性、可用性、分区容忍性的选择
虽然 CAP 理论定义是三个要素中只能取两个,但放到分布式环境下来思考,我们会发现必须选择 P(分区容忍)要素,因为网络本身无法做到 100% 可靠,有可能出故障,所以分区是一个必然的现象。
如果我们选择了 CA(一致性 + 可用性) 而放弃了 P(分区容忍性),那么当发生分区现象时,为了保证 C(一致性),系统需要禁止写入,当有写入请求时,系统返回 error(例如,当前系统不允许写入),这又和 A(可用性) 冲突了,因为 A(可用性)要求返回 no error 和 no timeout。
因此,分布式系统理论上不可能选择 CA (一致性 + 可用性)架构,只能选择 CP(一致性 + 分区容忍性) 或者 AP (可用性 + 分区容忍性)架构,在一致性和可用性做折中选择。
CP - Consistency + Partition Tolerance (一致性 + 分区容忍性)
如上图所示,因为Node1节点和Node2节点连接中断导致分区现象,Node1节点的数据已经更新到y,但是Node1 和 Node2 之间的复制通道中断,数据 y 无法同步到 Node2,Node2 节点上的数据还是旧数据x。
这时客户端C 访问 Node2 时,Node2 需要返回 Error,提示客户端 “系统现在发生了错误”,这种处理方式违背了可用性(Availability)的要求,因此 CAP 三者只能满足 CP。
AP - Availability + Partition Tolerance (可用性 + 分区容忍性)
同样是Node2 节点上的数据还是旧数据x,这时客户端C 访问 Node2 时,Node2 将当前自己拥有的数据 x 返回给客户端 了,而实际上当前最新的数据已经是 y 了,这就不满足一致性(Consistency)的要求了,因此 CAP 三者只能满足 AP。
注意:这里 Node2 节点返回 x,虽然不是一个“正确”的结果,但是一个“合理”的结果,因为 x 是旧的数据,并不是一个错乱的值,只是不是最新的数据。
值得补充的是,CAP理论告诉我们分布式系统只能选择AP或者CP,但实际上并不是说整个系统只能选择AP或者CP,在 CAP 理论落地实践时,我们需要将系统内的数据按照不同的应用场景和要求进行分类,每类数据选择不同的策略(CP 还是 AP),而不是直接限定整个系统所有数据都是同一策略。
另外,只能选择CP或者AP是指系统发生分区现象时无法同时保证C(一致性)和A(可用性),但不是意味着什么都不做,当分区故障解决后,系统还是要保持保证CA。
CAP理论的延伸——BASE理论
BASE 是指基本可用(Basically Available)、软状态( Soft State)、最终一致性( Eventual Consistency),核心思想是即使无法做到强一致性(CAP 的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性。
BA - Basically Available 基本可用
分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。
这里的关键词是“部分”和“核心”,实际实践上,哪些是核心需要根据具体业务来权衡。例如登录功能相对注册功能更加核心,注册不了最多影响流失一部分用户,如果用户已经注册但无法登录,那就意味用户无法使用系统,造成的影响范围更大。
S - Soft State 软状态
允许系统存在中间状态,而该中间状态不会影响系统整体可用性。这里的中间状态就是 CAP 理论中的数据不一致。
E - Eventual Consistency 最终一致性
系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。
这里的关键词是“一定时间” 和 “最终”,“一定时间”和数据的特性是强关联的,不同业务不同数据能够容忍的不一致时间是不同的。例如支付类业务是要求秒级别内达到一致,因为用户时时关注;用户发的最新微博,可以容忍30分钟内达到一致的状态,因为用户短时间看不到明星发的微博是无感知的。而“最终”的含义就是不管多长时间,最终还是要达到一致性的状态。
BASE 理论本质上是对 CAP 的延伸和补充,更具体地说,是对 CAP 中 AP 方案的一个补充:
CP 理论是忽略延时的,而实际应用中延时是无法避免的。这一点就意味着完美的 CP 场景是不存在的,即使是几毫秒的数据复制延迟,在这几毫秒时间间隔内,系统是不符合 CP 要求的。因此 CAP 中的 CP 方案,实际上也是实现了最终一致性,只是“一定时间”是指几毫秒而已。
AP 方案中牺牲一致性只是指发生分区故障期间,而不是永远放弃一致性。这一点其实就是 BASE 理论延伸的地方,分区期间牺牲一致性,但分区故障恢复后,系统应该达到最终一致性。
数据一致性模型
前面介绍的BASE模型提过“强一致性”和“最终一致性”,下面对这些一致性模型展开介绍。
分布式系统通过复制数据来提高系统的可靠性和容错性,并且将数据的不同的副本存放在不同的机器上,由于维护数据副本的一致性代价很高,因此许多系统采用弱一致性来提高性能,下面介绍常见的一致性模型:
强一致性
要求无论更新操作是在哪个数据副本上执行,之后所有的读操作都要能获得最新的数据。对于单副本数据来说,读写操作是在同一数据上执行的,容易保证强一致性。对多副本数据来说,则需要使用分布式事务协议。
弱一致性
在这种一致性下,用户读到某一操作对系统特定数据的更新需要一段时间,我们将这段时间称为"不一致性窗口"。
最终一致性
是弱一致性的一种特例,在这种一致性下系统保证用户最终能够读取到某操作对系统特定数据的更新(读取操作之前没有该数据的其他更新操作)。"不一致性窗口"的大小依赖于交互延迟、系统的负载,以及数据的副本数等。
总结
系统选择哪种一致性模型取决于应用对一致性的需求,所选取的一致性模型还会影响到系统如何处理用户的请求以及对副本维护技术的选择等。后面将基于上面介绍的一致性模型分别介绍分布式事务的解决方案。
柔性事务
柔性事务的概念
在电商等互联网场景下,传统的事务在数据库性能和处理能力上都暴露出了瓶颈。在分布式领域基于CAP理论以及BASE理论,有人就提出了柔性事务的概念。
基于BASE理论的设计思想,柔性事务下,在不影响系统整体可用性的情况下(Basically Available 基本可用),允许系统存在数据不一致的中间状态(Soft State 软状态),在经过数据同步的延时之后,最终数据能够达到一致。并不是完全放弃了ACID,而是通过放宽一致性要求,借助本地事务来实现最终分布式事务一致性的同时也保证系统的吞吐。
实现柔性事务的一些特性
下面介绍的是实现柔性事务的一些常见特性,这些特性在具体的方案中不一定都要满足,因为不同的方案要求不一样。
可见性(对外可查询)
在分布式事务执行过程中,如果某一个步骤执行出错,就需要明确的知道其他几个操作的处理情况,这就需要其他的服务都能够提供查询接口,保证可以通过查询来判断操作的处理情况。
为了保证操作的可查询,需要对于每一个服务的每一次调用都有一个全局唯一的标识,可以是业务单据号(如订单号)、也可以是系统分配的操作流水号(如支付记录流水号)。除此之外,操作的时间信息也要有完整的记录。
操作幂等性
幂等性,其实是一个数学概念。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。也就是说,同一个方法,使用同样的参数,调用多次产生的业务结果与调用一次产生的业务结果相同。
之所以需要操作幂等性,是因为为了保证数据的最终一致性,很多事务协议都会有很多重试的操作,如果一个方法不保证幂等,那么将无法被重试。幂等操作的实现方式有多种,如在系统中缓存所有的请求与处理结果、检测到重复操作后,直接返回上一次的处理结果等。
本文由
传智教育博学谷狂野架构师
教研团队发布。如果本文对您有帮助,欢迎
关注
和点赞
;如果您有任何建议也可留言评论
或私信
,您的支持是我坚持创作的动力。转载请注明出处!
-
环球信息:【踩坑记录】@Transactional注解回滚不生效问题
@Transactional属于是Spring的常用事务处理注解了,最近在开发时偶然发现这个东西竟然不是100%生效的。...
来源: 观天下!我是如何用CAP和BASE两个基础理论卷死其他组员的?
环球信息:【踩坑记录】@Transactional注解回滚不生效问题
世界微资讯!开心档-软件开发入门之MongoDB 覆盖索引查询
世界动态:89%美国大学生用写作业!揭秘爆红ChatGPT之父:应对核末日狂囤黄金、中学就出柜
当前快报:2023年首次更新!微信Mac版3.7.0发布:终于支持图片文字提取
世界观察:Github、Gitee优秀的开源项目
【ChatGPT 注册】
【天天聚看点】ChatGPT让苹果急了!消息称苹果将于下周召开内部AI峰会
环球快资讯丨299元!小米对讲机2S发布:市区5公里通话 100个对讲频道
热议:4个小号给大号浇水 缴电费再退骗蚂蚁森林能量被封号!法院判了
人工智能立大功!AI筛查阿尔茨海默病准确率达75%
每日视点!19999元!尼康发布尼克尔Z 85mm f/1.2 S镜头:模特发丝根根可数
观天下!从这些爆款小游戏中,你看到了什么?
Docker容器使用 (入门到精通)
HGAME_2023_WEB_WP_WEEK3
2799限量抢!小米Civi 2潮流版预售 网友:我一男生都表示太好看
世界报道:豆瓣仅5.7分 漫威超英大片《黑豹2》国内首映 开场票房就被《流浪地球2》超越
每日速递:男子花两千元套圈 套中两台宏光汽车:本人回应只要一辆 做人留一线
国产纯电两门跑车!哪吒E实车亮相:动力暴躁
焦点!百度类ChatGPT产品“文心一言”公开:股价应声上涨13%
诺基亚800c手机上市价格是多少?诺基亚800c手机参数
breeno指令是干什么用的?breeno指令在哪里?
戴尔笔记本电脑换电池大概多少钱?戴尔笔记本电脑开机黑屏没反应怎么办?
格力空调型号在哪里查看?格力空调型号一览表匹数
美的冰箱质量怎么样?美的冰箱怎么调温度?
天天视讯!Redis的十六种应用场景
全球短讯!一款备受欢迎的用户脚本管理器插件TampermonKey-油猴脚本管理器安装与使用
越狱最后各人物的结局是什么?电视剧越狱演员表
曾志伟的身高是什么?曾志伟个人资料
12月是什么星座?描写12月你好的优美说说
取关是什么意思?取关抖音好友对方知道吗?
期中考试家长意见怎么写?期中考试后的感想作文模板
热点评!19岁中国小伙确诊老年痴呆 全球纪录又被刷新了
全球看点:土耳其大地震 多家中国上市公司称影响有限
ChatGPT教你写AI包教包会!7段对话写出识别程序 准确度最高达99.7%
每日资讯:小米Civi 2潮流限定版来了:后盖上全是粉色Hello Kitty 超萌
世界看热讯:国产ChatGPT何时能出?百度站出来了:最快3月 评分全球第一
[西湖论剑2022]Misc-机你太美
焦点资讯:抖音视频无水印下载器,抖音视频下载器,下载未开放下载权限的视频,支持批量下载,同一作者作品自动批量下载,合集下载,话题挑战视频合集下载等
世界快消息!【2023微博签到爬虫】用python爬上千条m端微博签到数据
带了一个 3 年的开发,不会循环删除 List 中的元素,心态崩了。。
环球通讯!DataX插件二次开发指南
7斤纯铜就能压制酷睿i9 为啥还要散热风扇?原因一个字:贵
新能源起大早赶晚集 吉利失去的四年
全球新消息丨魔兽等游戏国服已停服两周 暴雪高管:寻求替代方式服务中国玩家
全球热点评!法拉利2022年销量破纪录 员工年终奖人均10万
世界新动态:读Java实战(第二版)笔记03_引入和使用流
焦点快看:必知必会的设计原则——开放封闭原则
焦点信息:官方加紧备货!红魔8 Pro系列开售一个多月供不应求:网友反映“秒没”
全球要闻:2.5K触屏骁龙本!小米Book 12.4二合一首销:到手2899元
环球微动态丨2023年来最强雨雪上线:北方下雪、南方暴雨 影响超20省份
单踏板不爽、刹车失灵无妨!特斯拉83%车主为新用户 客户流失低忠诚度最高
【环球速看料】聊天机器人ChatGPT要抢搜索引擎生意 谷歌出手:竞品Bard来了
【天天新要闻】安卓之光来了!曝小米13 Ultra 4月登场:支持120倍变焦
天天时讯:售价超过2万元 苹果MR头显即将推出:搭载全新OS 未来将取代iPhone
【天天新视野】我国多地取消中考男女生长跑 800米对健康不利:专家喊话体育锻炼不能放松
关于pacemaker-Cluster-节点的维护模式的功能介绍
SpringBoot怎么自定义一个Starter
当前快报:做出《新闻联播》片头的齐东旭教授走了:中国CAD与计算机图形学痛失巨匠
环球观焦点:游客放孔明灯被拽下吹灭 景区回应:明文规定禁放禁售
【天天新视野】《分布式技术原理与算法解析》学习笔记Day03
Spring IOC官方文档学习笔记(九)之基于注解的容器配置
每个程序员必学的10个Git命令
打价格战底气十足:数据显示特斯拉单车利润是比亚迪6倍
梦回Win98!196MB内存电脑成功启动Win11:开机时间要30分钟
环球看热讯:node中的优先从缓存中加载模块与模块的加载规则
LeetCode 239 滑动窗口最大值- Python手撕最大堆
环球新资讯:vscode编译java程序出现NoSuchMethodError的解决方法
价格又卷下来了!致态TiPlus 7100固态硬盘新史低:1TB仅589元
【天天快播报】澳大利亚一架波音737灭火飞机坠毁:全员奇迹生还
[JavaScript]实例化对象
天天热消息:【ctf权威竞赛指南笔记】(1)CTF
环球聚焦:全国城市地级市区县sql
速递!官宣续航为什么跑不到?爱玛实测电动车续航最多缩水40%
地震威力巨大 土耳其世界文化遗产古堡地震中倒塌
快资讯丨拒绝妖魔化 硬件发烧友怒买N张矿卡实测:结果大受震撼
【世界聚看点】上海一男子骑电车被劳斯莱斯撞倒后笑出了声 网友:还是大城市机会多
世界速看:Intel中国特供版i5-13490F突然开卖:1599元性价比逆天
厦门海辰储能--内部推荐
全球动态:Obsidian 插件(二):Advanced_Slides 的使用
自制肥牛卷
【快播报】【持续更新中】开源贡献记录
全球即时:USACO 2023 January Contest, Bronze Problem 3. Moo Operations
每日简讯:还有五场!饿了么免单活动又来了 一文看懂免单攻略
环球快资讯丨官方:嫦娥六号将带回2000克月球样品、嫦娥八号集大成
一天2次!土耳其再发7.8级地震:强震群 形势严峻
焦点信息:微博发布春节档电影热度报告:山东、河南网友最爱《满江红》
观点:真超薄自适应贴合!冈本超薄避孕套20片到手39.9元
世界短讯!现代农业|AIRIOT智慧农业管理解决方案
天天百事通!Ansible的部署和命令模块
携手Hello Kitty:小米Civi 2情人节特别版明日亮相
【全球快播报】国外网友:不看好网飞版《三体》 感谢腾讯!
全球通讯!10块钱可测17次!奥德中科快速检测试剂盒大促:0.59元/份清仓
世界视点!《流浪地球》引力弹弓人类真的实现过!张朝阳在线手算木星之旅
热点评!2022欧洲最畅销车型榜:国人不爱买的法系车登顶
当前快看:记录--使用Lunchbox 在 vue3 中创建一个 3D 地球
环球看点!做一个“不那么差”的程序员,有多难?
自研国产客机梦碎 消息称日本终止SpaceJet飞机 曾比我国进展都快
每日播报!8999元 科大讯飞推出T20 Pro学习机:2.5K屏、12000mAh大电池
全球微资讯!又又又融资1.35亿美元!贾跃亭喊话:FF 91将交付 百万豪车你买吗?