https://blog.csdn.net/u010425776/article/details/79516298

目录

一、什么是分布式事务?

二、CAP理论

三、BASE理论

酸碱平衡----ACID  VS  BASE


一、什么是分布式事务?

目前的数据库仅支持单库事务,并不支持跨库事务。而随着微服务架构的普及,一个大型业务系统往往由若干个子系统构成,这些子系统又拥有各自独立的数据库。往往一个业务流程需要由多个子系统共同完成,而且这些操作可能需要在一个事务中完成。在微服务系统中,这些业务场景是普遍存在的。此时,我们就需要在数据库之上通过某种手段,实现支持跨数据库的事务支持,这也就是大家常说的“分布式事务”。

这里举一个分布式事务的典型例子——用户下单过程。 
当我们的系统采用了微服务架构后,一个电商系统往往被拆分成如下几个子系统:商品系统、订单系统、支付系统、积分系统等。整个下单的过程如下:

1、用户通过商品系统浏览商品,他看中了某一项商品,便点击下单
2、此时订单系统会生成一条订单
3、订单创建成功后,支付系统提供支付功能
4、当支付完成后,由积分系统为该用户增加积分

上述步骤2、3、4需要在一个事务中完成。对于传统单体应用而言,实现事务非常简单,只需将这三个步骤放在一个方法A中,再用Spring的@Transactional注解标识该方法即可。Spring通过数据库的事务支持,保证这些步骤要么全都执行完成,要么全都不执行。但在这个微服务架构中,这三个步骤涉及三个系统,涉及三个数据库,此时我们必须在数据库和应用系统之间,通过某项黑科技,实现分布式事务的支持。

二、CAP理论

CAP理论说的是:在一个分布式系统中,最多只能满足C、A、P中的两个需求。

CAP的含义:

C:Consistency 一致性 
同一数据的多个副本是否实时相同。
A:Availability 可用性 
可用性:一定时间内 & 系统返回一个明确的结果 则称为该系统可用。
P:Partition tolerance 分区容错性 
将同一服务分布在多个系统中,从而保证某一个系统宕机,仍然有其他系统提供相同的服务。

CAP理论告诉我们,在分布式系统中,C、A、P三个条件中我们最多只能选择两个。那么问题来了,究竟选择哪两个条件较为合适呢?

对于一个业务系统来说,可用性和分区容错性是必须要满足的两个条件,并且这两者是相辅相成的。业务系统之所以使用分布式系统,主要原因有两个:

提升整体性能 :当业务量猛增,单个服务器已经无法满足我们的业务需求的时候,就需要使用分布式系统,使用多个节点提供相同的功能,从而整体上提升系统的性能,这就是使用分布式系统的第一个原因。

实现分区容错性 :单一节点 或 多个节点处于相同的网络环境下,那么会存在一定的风险,万一该机房断电、该地区发生自然灾害,那么业务系统就全面瘫痪了。为了防止这一问题,采用分布式系统,将多个子系统分布在不同的地域、不同的机房中,从而保证系统高可用性。

这说明分区容错性是分布式系统的根本,如果分区容错性不能满足,那使用分布式系统将失去意义。

此外,可用性对业务系统也尤为重要。在大谈用户体验的今天,如果业务系统时常出现“系统异常”、响应时间过长等情况,这使得用户对系统的好感度大打折扣,在互联网行业竞争激烈的今天,相同领域的竞争者不甚枚举,系统的间歇性不可用会立马导致用户流向竞争对手。因此,我们只能通过牺牲一致性来换取系统的可用性和分区容错性。这也就是下面要介绍的BASE理论。

三、BASE理论

CAP理论告诉我们一个悲惨但不得不接受的事实——我们只能在C、A、P中选择两个条件。而对于业务系统而言,我们往往选择牺牲一致性来换取系统的可用性和分区容错性。不过这里要指出的是,所谓的“牺牲一致性”并不是完全放弃数据一致性,而是牺牲强一致性换取弱一致性。下面来介绍下BASE理论。

BA:Basic Available 基本可用 
整个系统在某些不可抗力的情况下,仍然能够保证“可用性”,即一定时间内仍然能够返回一个明确的结果。只不过“基本可用”和“高可用”的区别是: 
(1)“一定时间”可以适当延长 
         当举行大促时,响应时间可以适当延长
(2)给部分用户返回一个降级页面 
         给部分用户直接返回一个降级页面,从而缓解服务器压力。但要注意,返回降级页面仍然是返回明确结果。
S:Soft State:柔性状态 
同一数据的不同副本的状态,可以不需要实时一致。
E:Eventual Consisstency:最终一致性 
同一数据的不同副本的状态,可以不需要实时一致,但一定要保证经过一定时间后仍然是一致的。

酸碱平衡----ACID  VS  BASE

ACID能够保证事务的强一致性,即数据是实时一致的。这在本地事务中是没有问题的,在分布式事务中,强一致性会极大影响分布式系统的性能,因此分布式系统中遵循BASE理论即可。但分布式系统的不同业务场景对一致性的要求也不同。如交易场景下,就要求强一致性,此时就需要遵循ACID理论,而在注册成功后发送短信验证码等场景下,并不需要实时一致,因此遵循BASE理论即可。因此要根据具体业务场景,在ACID和BASE之间寻求平衡。

分布式事务系列02--分布式事务定义,理论基础--CAP,BASE,酸碱平衡相关推荐

  1. 事务例子_Redis事务系列之一Redis事务详解

    一.前言 本章是redis事务系列知识第一章,redis事务系列主要讲解以下内容: redis 事务 redis乐观锁讲解 redis乐观锁实现秒杀 我们一步一步来,本章主要讲解事务. 二.事务 2. ...

  2. 【分布式事务系列九】聊聊分布式事务

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# 分布式事务 [分布式事务系列一]提出疑问和研究过程 [分布式事务系列二]Spring事务管理器PlatformTra ...

  3. 事务对性能影响_不是事务的事务!(分布式事务系列-完结篇)

    虽然我们都把最大努力通知型作为分布式事务的一种,但是各位同学心里要明白,这个完完全全和事务没有任何关系,为了确保我们这个分布式事务系列的完整性,我有必要用这篇最大努力通知型来做整个系列的收尾. 到现在 ...

  4. 分布式事务系列一:BASE,一种ACID的替代方案(eBay分布式事务解决方案)

    前言 对于很多业务系统来说,整个系统其实是由多个独立的系统构成的.这些独立的系统由各自的研发小组进行研发和维护,数据往往也存储在各自独立的数据库中. 我们以下单流程为例.下单往往涉及到订单系统.库存系 ...

  5. WCF系列_分布式事务(下)

    1. WCF分布式事务例子 这里也用转账的例子说事. 用户在系统A和系统B都有账户,账户间的资金可以互转,系统A的资金减少多少,系统B的相应账户的资金就增加多少. 系统A机器上有数据库AccountA ...

  6. mysql分布式事务wcf_[转载]WCF系列_分布式事务(下)

    浏览到chnking的WCF的分布式事务处理不错,转载过来分享一下.1. WCF分布式事务例子这里也用转账的例子说事. 用户在系统A和系统B都有账户,账户间的资金可以互转,系统A的资金减少多少,系统B ...

  7. 【分布式系列】分布式事务:TX-LCN分布式事务框架整合实践

    热门系列: [分布式系列]分布式锁原理篇-Redisson.Zookeeper.Database 程序人生,精彩抢先看 目录 1.前序 2.过程 2.1 TX-LCN框架介绍 2.2 环境搭建 2.2 ...

  8. Spring Cloud Alibaba系列之分布式事务Seata

    Spring Cloud Alibaba系列之分布式事务Seata 1.分布式事务 分布式事务不是在现在微服务分布式架构上才产生的问题,在单体应用同样存在分布式事务问题,典型的场景就是单体应用使用了多 ...

  9. 分布式事务系列(一):Seata的AT模式整体流程

    微服务架构 关于微服务,ThoughtWorks 公司的首席科学家 Martin Fowler 有如下解释: In short, the microservice architectural styl ...

  10. 如果你还不知道SAGA,那这篇不容错过!|分布式事务系列(五)

    这是分布式事务系列的第五篇,如果之前文章没读请自行前往.精华专题,强烈建议收藏. ‍本文详细讲解了分布式事务解决方案--SAGA. 点击上方"后端开发技术",选择"设为星 ...

最新文章

  1. 计算机网络犯罪特点,计算机网络犯罪有哪些特征
  2. HTTP and HTML
  3. Spring 入门知识点笔记整理
  4. ES6箭头函数中的this指向
  5. python当中的生成器
  6. 1075 链表元素分类 (25 分)
  7. ValueError: Shapes () and (1, 1) are incompatible
  8. emc re 整改 超标_两种常见EMC整改流程
  9. 一幅图告诉你C-C++注释转换有多简单
  10. Android PreferenceActivity添加ToolBar
  11. 75道逻辑思维题及答案--计算机面试大全
  12. 似乎可以破解软件代码
  13. Windows域服务权限提升漏洞(CVE-2021-42287, CVE-2021-42278)
  14. 【日常】解决问题:SSR1080端口被占用的问题
  15. 计算机主机cpu内存,两分钟看懂计算机中CPU、内存、硬盘的工作原理
  16. steamcommunity 本地 443端口被占用解决方案
  17. 手机软件测试分类(测试分类)
  18. ​李德毅:自动驾驶炒作这么久为什么老百姓仍没有坐上
  19. 文件实时同步备份软件那个比较好用?
  20. 《痞子衡嵌入式半月刊》 第 48 期

热门文章

  1. 纯白之恋故事梗概,纯白之恋在线观看
  2. [附源码]计算机毕业设计JAVA合租吧管理系统
  3. 如何看懂HijackThis扫描日志
  4. 为什么Arduino独占鳌头并站稳脚跟?
  5. 物流SaaS是大势所趋,oTMS抢占先发优势
  6. 全球与中国事件追踪软件市场深度研究分析报告
  7. 怎样看待活文档“ATDD”---记敏捷中国2012 open space
  8. ios备忘录下载安卓版_PanDownload 安卓手机版,解决百度网盘下载速度慢
  9. reactNative集成极验(GeeTest)
  10. couse2610_lab6-Linux进程管理