分布式事务「2020年」必学,升职加薪你准备好了吗?

你是否学习了微服务架构Spring Cloud、Dubbo,但是分布式事务却没有了解过?

你是否尝试学习了分布式的概念,但是学习完却还不知所以然,一头雾水?

你是否尝试使用了TXLCN、Fescar/Seata,但是却不知道它们的原理?

?

你不努力让自己过上想要的生活, 以后就会用大把的时间去应付自己不想要的生活。

记得几年前 ,那时候微服务Spring Cloud也刚出来没多久,我有幸,在早期就了解了Spring Cloud,学习了Spring Cloud中的各个组件:注册中心Eureka、服务消费Ribbon、Feign、网关Zuul/Gateway、配置中心config等等。

学习完之后,感觉自己都膨胀了,也凑巧有一个面试机会,也是就去挑战了一下。在问到微服务架构相关的都回答的比较顺畅,但是在问到:微服务中的分布式事务是怎么解决的,瞬间就蒙圈了,在面试中直接回答不会,也不好,于是乎,就回答说:这块是别的同事设计的,自己不是很清楚怎么落地实施的。很明显这样的回答,自己都不满意,所以这次面试,也就不了而终了。

知之为知之,不知为不知,是知也。对于不懂的知识,就要敢于发问,不懂装懂,似懂非懂,都是在无形中,让自己退步了。

?

1.01和0.99,到底相差多少。表面看起来只是相差了0.02,实在是微乎其微,不足道哉。但是当与365乘方后,结果却是天差地别。

对于分布式事务,如果要学习的话,那么都要学习什么呢?

?

基础概念-初入江湖

磨刀不误砍柴工,要对于分布式具体的方案有一个透彻的了解,那么基础概念就是你第一步要了解的,一开始的时候,都需要了解什么呢?

(1)事务的基本概念:什么是事务?本地事务?数据库事务?分布式事务?

(2)事务的四大特性ACID:事务的四大特性、四大特性在数据库层面是怎么体现的。

(3)分布式产生的场景。

(4)分布式事务的理论:CAP理论、BASE理论。

?

2PC/3PC-征战沙场

有了基本理论知识的加持,就可以开始学习具体的方案了,分布式提出的方案一就是两阶段提交2PC,那么对于TCC要学习什么呢?

(1)概念:要了解什么是2PC/3PC?

(2)方案原理:XA方案、Seata方案、TXLCN的lcn方案。

(3)实战:对于方案还是要进行实际操作下,才能有一个感官的认知。

?

TCC-勇者无敌

对于2PC中的方案的,是在实际项目还是使用的比较多的,但是如果碰到不同数据源的问题,那么2PC可能就无能为力了(2PC的分布式事务解决方案大多依赖于本地事务),那么如果在项目中有mysql、redis、mongodb的话,那么2PC就无法控制这个流程的分布式事务了,但是TCC方案就是一种不太依赖本地事务的方案。

(1)概念:要了解什么是TCC ?

(2)TCCC的异常处理:幂等性、空回滚、悬挂的产生原因以及怎么处理。

(3)TCC的常用框架:了解TCC的常用框架,如何使用TXLCN的TCC进行实战。

?

可靠消息最终一致性-所向披靡

上面的方案基本上都是使用同步的思路,就是整个事务在同一个请求当中,A服务通过远程调用B服务,A服务需要B服务执行完成之后才能进行返回,有些流程中,我们可能不关心当下下个服务的执行情况,比如用户注册送积分。

送积分的这个事情就可以使用异步的方式进行操作,我们的核心就是确保用户能够注册成功,减少用户的等待时间,那么我们就可以:用户填写完信息,发起注册流程,注册流程在异步通知积分服务进行积分操作,在这个异步的过程中,要确保消息能够送达到积分服务,也要确保积分服务能够接收到消息,这就是可靠消息最终一致性要解决的问题。

那在学习可靠消息最终一致性的解决方案的话,都需要学习什么呢?

(1)概念:了解清楚什么是可靠消息最终一致性。

(2)可靠消息最终一致性的方案:通过本地消息表和RocketMQ进行可靠消息最终最终一致性的方案有什么区别,以及怎么使用RocketMQ进行实战。

?

最大努力通知-叱咤风云

在学会了可靠消息最终一致性之后,在学习最大努力通知,那么转换思路问题了,只要稍微转换下可靠消息最终一致性的代码就是最大努力通知了。

以上这些就是要学习分布式事务要了解的技术知识,一方面是自己学习,逐个攻克各个知识点,另外一方面就是站在前人的肩膀上进行学习

博主对于这块知识也录制了相应的课程,如果有需要的可以进行报名学习,感谢大家的支持。

知识大纲

?

使用技术

?

付出行动,升职涨薪从此开始!!!

为自己的人生负责,为自己的梦想买单,快点进「阅读原文」上课了哦~

分布式事务解决方案「手写代码」:http://t.cn/AieNUirK

原文地址:https://www.cnblogs.com/springboot-wuqian/p/12028984.html

时间: 2024-10-04 08:27:33

分布式事务「2020年」必学,升职加薪你准备好了吗?的相关文章

Python分布式爬虫必学框架Scrapy打造搜索引擎

Python分布式爬虫必学框架Scrapy打造搜索引擎 未来是什么时代?是数据时代!数据分析服务.互联网金融,数据建模.自然语言处理.医疗病例分析……越来越多的工作会基于数据来做,而爬虫正是快速获取数据最重要的方式,相比其它语言,Python爬虫更简单.高效 具体的学习scrapy之前,我们先对scrapy的架构做一个简单的了解,之后所有的内容都是基于此架构实现的,在初学阶段只需要简单的了解即可,之后的学习中,你会对此架构有更深的理解.下面是scrapy官网给出的最新的架构图示. 基本组件 引擎

「苦练基本功」超级大佬推荐工程师必看的书感悟

背景 最近看了三本书<启示录-打造用户喜爱的产品>.<学会提问-批判性思维指南>.<写给大家看的设计书>.本来超级大佬要求我们「苦练基本功」的功课是前两本加上<金字塔原理>.因为<金字塔原理>之前看过很多遍,这次不用看.正好有热心博友反馈静儿的文章排版不太好,静儿就把最后一本改成了<写给大家看的设计书>,感觉收获挺大. 上面提到的四本书都上传了,有需要的可以自己下载. 链接: https://pan.baidu.com/s/1E7zM

大厂面试必知必会:图解分布式事务实现原理

问题场景 什么是事务? 事务是数据库从一个稳定状态变迁到另一个稳定状态的保证,具备 ACID 这 4 个特性: 原子性(Atomicity):一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节.事务在执行过程中发生错误,会被回滚到事务开始前的状态. 一致性(Consistency):在事务开始之前和事务结束以后,数据库的完整性限制没有被破坏. 隔离性(Isolation):两个事务的执行是互不干扰的,两个事务时间不会互相影响. 持久性(Durability):在事务完成以

关于分布式事务

前些日子看到一篇关于乐观锁和悲观锁的blog,看了关于乐观锁和悲观锁的讨论以及在真实项目里的一些例子,也勾引起了我写篇blog的欲望,既然乐观锁和悲观锁是关于并发控制机制相关的知识,那我就来写一篇关于分布式事务的blog,我个人觉得分布式事务是乐观锁悲观锁的延伸阅读. 乐观锁和悲观锁多数是在处理与单个数据库读写交互时的并发控制解决方案,但是现在分布式的场景已经越来越多地占据了我们工作的重点,所以分布式场景下的并发控制怎么做?这就涉及到分布式事务的相关知识了,我觉得理解了分布式事务的相关知识绝对能

深度 | 邢波教授谈人工智能科学路径:为人工智能装上「无穷动」引擎

深度 | 邢波教授谈人工智能科学路径:为人工智能装上「无穷动」引擎 本文由邢波教授 授权转载 微信公众号:猫匣子 作者:邢波 有些人是因为对人工智能的原理不理解而导致,有些人是为了个人名望而宣扬人工智能威胁论,有些人则是为了商业的利益推动人工智能威胁论.——Yann LeCun   人工智能算法本身这个计算任务像登山,它是有明确的目标的,可以用数学描述和比较的目标,它本身有弹性.容错性.随机性.和客观的量化的可评估性 … 人工智能功能的提升和突破来源于理论模型,算法,和计算引擎的不断创新,缺一不

架构之路—java开发必学知识点详细梳理

大家好,今天为大家带来了java开发必学的知识点的梳理,希望对小伙伴们在技术成长的道路上有所帮助. 数据库 mysql 1.sql基本语法(数据类型.增删改查.join.函数等). 2.索引(分类,失效条件,explain的使用,优化条件). 3.引擎的对比(InnoDB,MyISAM). 4.事物.隔离级别. 5.数据库的锁(行锁,表锁,读锁,写锁,悲观锁,乐观锁,以及加锁的select sql方式). 6.分库分表,主从复制,读写分离. 7.mysql的中间件 mycat nosql red

构建基于RocketMQ的分布式事务服务

说在前面 Apache RocketMQ-4.3.0正式Release了事务消息的特性,顺着最近的这个热点.第一篇文章,就来聊一下在软件工程学上的长久的难题--分布式事务(Distributed Transaction). 这个技术也在各个诸如阿里,腾讯等大厂的内部,被广泛地实现,利用及优化.但是由于理论上就有难点,所以分布式事务就隐晦得成了大厂对于小厂的技术壁垒.相信来看这篇文章的同学,一定都听过很多关于分布式事务的术语,比较二阶段提交,TCC,最终一致性等,所以这里也不多普及概念. 基于Ro

分布式事务特性,分布式事务处理

1:分布式事物的理解: 分布式事务就是指事务的参与者.支持事务的服务器.资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上.就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务节点上,分布式事务需要保证这些小操作要么全部成功,要么全部失败;本质上来说,分布式事务就是为了保证不同数据库的数据一致性. 2:分布式失误产生的原因: a)数据库分库分表; 当数据库单表一年产生的数据超过1000W,那么就要考虑分库分表,简单的说就是原来的一个数据库变成了多个数据库,这时候,如果一个

[转帖]如何选择分布式事务形态(Fescar、TCC、SAGA、补偿、基于消息的最终一致

如何选择分布式事务形态(Fescar.TCC.SAGA.补偿.基于消息的最终一致 https://blog.csdn.net/zhangjunli/article/details/100015236 各种形态的分布式事务分布式事务有多种主流形态,包括: 基于消息实现的分布式事务基于补偿实现的分布式事务基于TCC实现的分布式事务基于SAGA实现的分布式事务基于2PC实现的分布式事务这些形态的原理已经在很多文章中进行了剖析,用“分布式事务”关键字就能搜到对应的文章,本文不再赘述这些形态的原理,并将重