分布式事务「2020年」必学

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

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

       你是否尝试使用了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/A6ZaBnIr

 

悟纤 CSDN认证博客专家 知远公司创始人 架构师 访问1000万+
「公众号SpringBoot」:
①阿里巴巴前高级研发工程师;
②估值20亿美金的Blued架构师;
③北京知远公司创始人;
④浙江甄才公司架构师;
⑤云课堂学员10000+;
⑥博客访问量1000万+;
⑦10年互联网行业从业;
⑧360万的访问《从零开始学SprngBoot》作者;
⑨技术加盟多个独立项目。
已标记关键词 清除标记
【为什么还需要学习C++?】 你是否接触很多语言,但从来没有了解过编程语言的本质? 你是否想成为一名资深开发人员,想开发别人做不了的高性能程序? 你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹?   那么C++就是你个人能力提升,职业之路进阶的不二之选。 【课程特色】 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。 2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。 3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。 【学完后我将达到什么水平?】 1.对C++的各个知识能够熟练配置、开发、部署; 2.吊打一切关于C++的笔试面试题; 3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。 【面向人群】 1.希望一站式快速入门的C++初学者; 2.希望快速学习 C++、掌握编程要义、修炼内功的开发者; 3.有志于挑战更高级的开发项目,成为资深开发的工程师。 【课程设计】 本课程包含3大模块 基础篇 本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。 进阶篇 本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。 提升篇: 本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值