互联网系统中,分布式事务是无法避免的,目前多数解决方案是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理论相关推荐

  1. python语言语句快的标记是什么_一文搞懂Python程序语句

    原标题:一文搞懂Python程序语句 程序流 Python 程序中常用的基本数据类型,包括: 内置的数值数据类型 Tuple 容器类型 String 容器类型 List 容器类型 自然的顺序是从页面或 ...

  2. pythonxpath定位_一文搞懂 XPath 定位

    一文搞懂XPath 定位 XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历. XPath定位在爬虫和自动化测试中 ...

  3. 25 张图,1.4 w字!彻底搞懂分布式事务原理

    本文提纲如下: 0. 前言 1. 单数据源事务 & 多数据源事务 2. 常见分布式事务解决方案 2.1. 分布式事务模型 2.2. 二将军问题和幂等性 2.3. 两阶段提交(2PC) & ...

  4. 分布式事务详解【分布式事务的几种解决方案】彻底搞懂分布式事务

    文章目录 一.基本概念 什么是事务 本地事务 分布式事务 分布式事务产生的场景 二.分布式事务基础理论 CAP理论 CP - Consistency/Partition Tolerance AP - ...

  5. 多个mapper的事务回滚_揭秘蚂蚁金服分布式事务 Seata 的AT、Saga和TCC模式

    作者| 屹远(陈龙),蚂蚁金服分布式事务核心研发 . 导语 本文根据 8月11日 SOFA Meetup#3 广州站 <分布式事务 Seata 及其三种模式详解>主题分享整理,着重分享分布 ...

  6. 事务连接中断_漫画——你还记得原生的JDBC怎么连接数据库吗?

    原创: 阿音 数据表的设计范式 在实际开发中最为常见的设计范式有三个: 第一范式是最基本的范式.如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式: 第二范式需要确保数据库 ...

  7. mysql 默认事务隔离级别_一文读懂MySQL的事务隔离级别及MVCC机制

    回顾前文: <一文学会MySQL的explain工具> <一文读懂MySQL的索引结构及查询优化> (同时再次强调,这几篇关于MySQL的探究都是基于5.7版本,相关总结与结论 ...

  8. 6 张图带你彻底搞懂分布式事务 XA 模式

    作者 | 朱晋君 来源 | 阿里巴巴云原生公众号 XA 协议是由 X/Open 组织提出的分布式事务处理规范,主要定义了事务管理器 TM 和局部资源管理器 RM 之间的接口.目前主流的数据库,比如 o ...

  9. 一篇文章彻底搞懂“分布式事务”

    在如今的分布式盛行的时代,分布式事务永远都是绕不开的一个话题,今天就谈谈分布式事务相关的一致性与实战解决方案. 01 为什么需要分布式事务 由于近十年互联网的发展非常迅速,很多网站的访问越来越大,集中 ...

最新文章

  1. linux小白-基础命令-useradd
  2. SEO网络优化的三个博客优化技巧
  3. python飞机大战源代码-python版飞机大战代码分享
  4. DbExpressionBinding requires an input expression with a collection ResultType. 参数名: input
  5. R语言实战应用精讲50篇(九)-正态分布的检验
  6. 成功解决urllib.error.URLError urlopen error Errno 11004 getaddrinfo failed
  7. 金额与数字转化常用实用几个JS方法
  8. 用c语言实现二叉树的三种遍历_利用循环和递归实现二叉树的三种遍历
  9. 结构体的成员偏移地址和字节对齐
  10. mindspore-ResNet101使用GPU进行训练时报错
  11. SD和SDHC和SDXC卡的区别, class与u1/u3关系
  12. 如何在EXCEL表格中加斜线表头
  13. 大于23的男生女生都该看.看完你会变一个人
  14. 推荐一款超快的Android模拟器
  15. 错误0x800700E1:无法成功完成操作,因为文件包含病毒或潜在的垃圾软件。
  16. 爱的魔力转圈圈计算机音乐,抖音爱的魔力转圈圈什么歌谁唱的 爱的魔力转圈圈歌名歌词介绍...
  17. flash 接口_Flash接口设计变得简单
  18. Outlook附件自动存储
  19. 海康EHOME5.0协议无法成功注册EasyCVR平台的原因排查
  20. 统计学习方法笔记-隐马尔可夫模型(内含Python代码实现)

热门文章

  1. php7引用计数,PHP7 引用计数 读书笔记
  2. bootstrapselect使用 Bootstrap's dropdowns require Popper.js
  3. mongoose 联表、及联查询 使用populate
  4. QC无法启动,实战记录
  5. Superset单点登录调整源码
  6. consul docker方式搭建
  7. html页面text固定长度,HTML中input type=text和type=password 显示的长度不一样
  8. oracle rac添加用户组,oracle 11g rac 与 oracle 10 rac所需要建立的组和用户
  9. 【Makefile由浅入深完全学习记录3】伪目标的引入
  10. 研发中会使用到的工具