Java充电社
专辑
博文
联系我
本人继续续收门徒,亲手指导
分布式事务专题
-> 什么是分布式事务?
1、什么是分布式事务?
2、CAP原则
3、BASE理论
4、分布式事务常见5种解决方案
5、分布式事务解决方案之 2PC(二阶段提交)
6、分布式事务解决方案之 3PC(三阶段提交)
7、分布式事务解决方案之 TCC
8、分布式事务解决方案之可靠消息最终一致性
9、分布式事务解决方案之最大努力通知型
10、分布式事务学习视频
下一篇:CAP原则
<div style="display:none"></div> ## 目录 [TOC] ## 1. 前言 **什么是分布式事务?介绍这个之前,先来了解一下这几个问题** 1. 什么是事务? 2. 什么是本地事务? 3. 什么是分布式? 4. 什么是分布式事务? ## 2. 什么是事务? 完成某件事情,可能有多个参与者需要执行多个步骤,最终多个步骤要么全部成功,要么全部失败。 举个例子:微信上A给B转账100元,A账户减少100,B账户增加100,这就是一个事务,这个操作中要么都成功,要么都失败。 事务的场景有很多,参与者也是多种多样 1. 用户注册成功发送邮件,包含2个操作:db中插入用户信息,给用户发送邮件,主要的2个参与者:db、邮件服务器 2. 使用支付宝充值话费,包含2个操作:支付宝账户资金减少,手机余额增加,主要的2个参与者:支付宝账户、手机号服务商账户 事务的参与者是多种多样的,不过本文我们主要以db中的事务来做说明。 ## 3. 什么是本地事务? 本地事务,通俗点理解:即事务中所有操作发生在同一个数据库中的情况。 比如A给B转账,A和B的账户位于同一个数据库中。 通常我们用的都是关系型数据库,比如:MySQL、Oracle、SQL Server,这些数据库默认情况,这些db已经实现了事务的功能,即在一个db中执行一个事务操作,db本身就可以确保这个事务的正确性,而不需要我们自己去考虑如何确保事务的正确性。 ## 4. 数据库事务的4大特性 ### 4.1. 一致性(Consistency) 事务操作之后的结果和期望的结果是一致的,A给B转账100,事务结束之后,看到A的账户应该减少100,B的账户应该增加100,不会出现其他情况 ### 4.2. 原子性(Atomicity) 事务的整个过程如原子操作一样,最终要么全部成功,或者全部失败,这个原子性是从最终结果来看的,从最终结果来看这个过程是不可分割的。 ### 4.3. 隔离性(Isolation) 一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 ### 4.4. 持久性(Durability) 一个事务一旦提交,他对数据库中数据的改变就应该是永久性的。当事务提交之后,数据会持久化到硬盘,修改是永久性的。 ## 5. 什么是分布式? 完成某件事情有多个参与者,多个参与者分布在不同的机器中,这些机器之间通过网络或者其他方式进行通讯。 比如使用工行卡给支付宝充值,工行卡的账户位于工商银行的db中,而支付宝账户位于支付宝的db中,2个db位于不同的地方。 ## 6. 什么是分布式事务? 分布式、事务这2个概念大家都理解了,那么分布式事务很容易理解了:事务的多个参与者分布在不同的地方。 单个db中我们很容易确保事务的正确性,但是当事务的参与者位于多个db中的时候,如何确保事务的正确性呢? 比如:A给B转账,A位于DB1中,B位于DB2中 ```java step1.通过网络,给DB1发送指令:给A账户减少100 step2.通过网络,给DB2发送指令:给B账户增加100 ``` step1成功之后,执行step2的时,网络出现故障,导致step2执行失败,最终:A减少了100,B却没有增加100,最终的结果和期望的结果不一致,导致了事务的失败。 在介绍分布式事务的解决方案之前,我们需要先了解另外2个概念:**CAP和Base理论**,这2个理论为分布式事务的解决提供了依据。 <a style="display:none" target="_blank" href="https://mp.weixin.qq.com/s/_S1DD2JADnXvpexxaBwLLg" style="color:red; font-size:20px; font-weight:bold">继续收门徒,亲手带,月薪 4W 以下的可以来找我</a> ## 最新资料 1. <a href="https://mp.weixin.qq.com/s?__biz=MzkzOTI3Nzc0Mg==&mid=2247484964&idx=2&sn=c81bce2f26015ee0f9632ddc6c67df03&scene=21#wechat_redirect" target="_blank">尚硅谷 Java 学科全套教程(总 207.77GB)</a> 2. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247484192&idx=1&sn=505f2faaa4cc911f553850667749bcbb&scene=21#wechat_redirect" target="_blank">2021 最新版 Java 微服务学习线路图 + 视频</a> 3. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247484573&idx=1&sn=7f3d83892186c16c57bc0b99f03f1ffd&scene=21#wechat_redirect" target="_blank">阿里技术大佬整理的《Spring 学习笔记.pdf》</a> 4. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247484544&idx=2&sn=c1dfe907cfaa5b9ae8e66fc247ccbe84&scene=21#wechat_redirect" target="_blank">阿里大佬的《MySQL 学习笔记高清.pdf》</a> 5. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247485167&idx=1&sn=48d75c8e93e748235a3547f34921dfb7&scene=21#wechat_redirect" target="_blank">2021 版 java 高并发常见面试题汇总.pdf</a> 6. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247485664&idx=1&sn=435f9f515a8f881642820d7790ad20ce&scene=21#wechat_redirect" target="_blank">Idea 快捷键大全.pdf</a> ![](https://itsoku.oss-cn-hangzhou.aliyuncs.com/itsoku/blog/article/1/2883e86e-3eff-404a-8943-0066e5e2b454.png)
#custom-toc-container