事务连接中断_一文搞懂分布式事务-CAP理论
互联网系统中,分布式事务是无法避免的,目前多数解决方案是BASE理论,最终一致性,结合事务补偿。
1.什么是CAP理论。
CAP理论,又称为布鲁尔定理,是加州大学伯克利分校的计算机科学家埃里克.布鲁尔(Eric Brewer)在2000年的ACM PODC提出的猜想。2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP。Robert Greiner的发表的两篇博文更容易理解,第一篇已经被自己标识为过时。
CAP是一致性(Consistence)、可用性(Availability)、分区容错性(Partition tolerance)三个字母的首字母。
- 一致性(Consistence)对于指定节点,读操作保证能返回最新的写操作结果。注意,这里不是同一时刻都能看到相同的数据。因为事务过程中,系统处于一个不一致状态,不同的节点的数据并不完全一致。比如,client无法读取到未提交的事务的数据,也不会读到事务中间写入的数据。
- 可用性(Availability)非故障节点在合理的时间内返回合理的响应(不是错误和超时响应)。不能是错误或者是超时,结果是合理的,并不是一定是"正确"的结果。
- 分区容错性(Partition tolerance)当出现网络分区后,系统能够继续“履行职责”。发生分区现象,不管什么原因,可能是丢包、连接中断、阻塞等,系统都应该能够继续“履行职责”。总结:网络分区后,节点之间就出现隔离。要提高分区容忍性,就要把数据多分布在各个节点中,分区容忍性就提高了。各节点复制数据,就会带来数据不一致的问题。数据分布的节点数越多,容忍性越高,复制数据带来不一致的问题发生的概率就越高,总之,是需要一个权衡的问题。2. CAP为什么不能同时满足?假如现在两个节点A、B同时满足CAP理论,C:AB节点数据同时更新。A:AB同时保证可用性。P:当出现网络分区时,必须保证对外可用。现在假如出现网络分区,A 肯定满足不了,AB不能互相通信,得不到最新的数据。假如必须满足C,就必须同时停止A和B,这时候A就满足不了。总结:分布式系统中,必然选择P,也是选择AP或CP。如果不选择P,当发生网络分区时,为了满足C,系统需要禁止写入,当写入请求时,系统会返回error,这和A冲突了。正常运行情况下,不存在CP和AP的选择,可以同时满足CA。CAP理论说只能选择CP或者AP,前提是系统发生了分区现象。如果没发生分区,我们没必要放弃C和A。也就是说,设计架构时,既要考虑分区发生时选择CP和AP,也要考虑分区没有发生时如何保证CA。
2. CAP为什么不能同时满足?
假如现在两个节点A、B同时满足CAP理论,C:AB节点数据同时更新。A:AB同时保证可用性。P:当出现网络分区时,必须保证对外可用。
现在假如出现网络分区,A 肯定满足不了,AB不能互相通信,得不到最新的数据。假如必须满足C,就必须同时停止A和B,这时候A就满足不了。
总结:分布式系统中,必然选择P,也是选择AP或CP。如果不选择P,当发生网络分区时,为了满足C,系统需要禁止写入,当写入请求时,系统会返回error,这和A冲突了。
正常运行情况下,不存在CP和AP的选择,可以同时满足CA。CAP理论说只能选择CP或者AP,前提是系统发生了分区现象。如果没发生分区,我们没必要放弃C和A。也就是说,设计架构时,既要考虑分区发生时选择CP和AP,也要考虑分区没有发生时如何保证CA。
事务连接中断_一文搞懂分布式事务-CAP理论相关推荐
- python语言语句快的标记是什么_一文搞懂Python程序语句
原标题:一文搞懂Python程序语句 程序流 Python 程序中常用的基本数据类型,包括: 内置的数值数据类型 Tuple 容器类型 String 容器类型 List 容器类型 自然的顺序是从页面或 ...
- pythonxpath定位_一文搞懂 XPath 定位
一文搞懂XPath 定位 XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历. XPath定位在爬虫和自动化测试中 ...
- 25 张图,1.4 w字!彻底搞懂分布式事务原理
本文提纲如下: 0. 前言 1. 单数据源事务 & 多数据源事务 2. 常见分布式事务解决方案 2.1. 分布式事务模型 2.2. 二将军问题和幂等性 2.3. 两阶段提交(2PC) & ...
- 分布式事务详解【分布式事务的几种解决方案】彻底搞懂分布式事务
文章目录 一.基本概念 什么是事务 本地事务 分布式事务 分布式事务产生的场景 二.分布式事务基础理论 CAP理论 CP - Consistency/Partition Tolerance AP - ...
- 多个mapper的事务回滚_揭秘蚂蚁金服分布式事务 Seata 的AT、Saga和TCC模式
作者| 屹远(陈龙),蚂蚁金服分布式事务核心研发 . 导语 本文根据 8月11日 SOFA Meetup#3 广州站 <分布式事务 Seata 及其三种模式详解>主题分享整理,着重分享分布 ...
- 事务连接中断_漫画——你还记得原生的JDBC怎么连接数据库吗?
原创: 阿音 数据表的设计范式 在实际开发中最为常见的设计范式有三个: 第一范式是最基本的范式.如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式: 第二范式需要确保数据库 ...
- mysql 默认事务隔离级别_一文读懂MySQL的事务隔离级别及MVCC机制
回顾前文: <一文学会MySQL的explain工具> <一文读懂MySQL的索引结构及查询优化> (同时再次强调,这几篇关于MySQL的探究都是基于5.7版本,相关总结与结论 ...
- 6 张图带你彻底搞懂分布式事务 XA 模式
作者 | 朱晋君 来源 | 阿里巴巴云原生公众号 XA 协议是由 X/Open 组织提出的分布式事务处理规范,主要定义了事务管理器 TM 和局部资源管理器 RM 之间的接口.目前主流的数据库,比如 o ...
- 一篇文章彻底搞懂“分布式事务”
在如今的分布式盛行的时代,分布式事务永远都是绕不开的一个话题,今天就谈谈分布式事务相关的一致性与实战解决方案. 01 为什么需要分布式事务 由于近十年互联网的发展非常迅速,很多网站的访问越来越大,集中 ...
最新文章
- linux小白-基础命令-useradd
- SEO网络优化的三个博客优化技巧
- python飞机大战源代码-python版飞机大战代码分享
- DbExpressionBinding requires an input expression with a collection ResultType. 参数名: input
- R语言实战应用精讲50篇(九)-正态分布的检验
- 成功解决urllib.error.URLError urlopen error Errno 11004 getaddrinfo failed
- 金额与数字转化常用实用几个JS方法
- 用c语言实现二叉树的三种遍历_利用循环和递归实现二叉树的三种遍历
- 结构体的成员偏移地址和字节对齐
- mindspore-ResNet101使用GPU进行训练时报错
- SD和SDHC和SDXC卡的区别, class与u1/u3关系
- 如何在EXCEL表格中加斜线表头
- 大于23的男生女生都该看.看完你会变一个人
- 推荐一款超快的Android模拟器
- 错误0x800700E1:无法成功完成操作,因为文件包含病毒或潜在的垃圾软件。
- 爱的魔力转圈圈计算机音乐,抖音爱的魔力转圈圈什么歌谁唱的 爱的魔力转圈圈歌名歌词介绍...
- flash 接口_Flash接口设计变得简单
- Outlook附件自动存储
- 海康EHOME5.0协议无法成功注册EasyCVR平台的原因排查
- 统计学习方法笔记-隐马尔可夫模型(内含Python代码实现)
热门文章
- php7引用计数,PHP7 引用计数 读书笔记
- bootstrapselect使用 Bootstrap's dropdowns require Popper.js
- mongoose 联表、及联查询 使用populate
- QC无法启动,实战记录
- Superset单点登录调整源码
- consul docker方式搭建
- html页面text固定长度,HTML中input type=text和type=password 显示的长度不一样
- oracle rac添加用户组,oracle 11g rac 与 oracle 10 rac所需要建立的组和用户
- 【Makefile由浅入深完全学习记录3】伪目标的引入
- 研发中会使用到的工具