youngerone123
这个作者很懒,什么都没留下…
展开
-
分布式事务实战八(Spring事务失效场景)
我们是不是在方法上加了@Transactional注解,那么事务就一定会生效吗?事务失效的场景有非常非常多,这里主要介绍几种常见的事务失效场景:首先我们来看最简单的一种事务失效场景,如下图:如果我们像上图一样,将FlowRechargeCenterServiceImpl类中的@Service注解给注释掉的话,那么这个FlowRechargeCenterServiceImpl就不会交给Spring管理,那么此时就会导致事务失效!那么为什么会失效呢?我们知道,@Transactional是基于AOP来实原创 2022-04-14 20:51:51 · 747 阅读 · 0 评论 -
分布式事务实战八(Spring事务框架源码初探五)
经过前边几节的讲解,我们知道,@Transactional的核心其实就是BeanFactoryTransactionAttributeSourceAdvisor这个Advisor了。而这个BeanFactoryTransactionAttributeSourceAdvisor中有几个极为重要的方法,比如getPointcut()方法会返回切点信息,用于匹配判断一个bean在初始化过程中是否需要创建代理对象,再比如getAdvice方法会返回TransactionInterceptor拦截器,事务处理的核心逻原创 2022-04-13 20:08:28 · 347 阅读 · 0 评论 -
分布式事务实战八(Spring事务框架源码初探四)
在前边几节的分析,我们知道,@Transactional是基于AOP实现的,而在创建事务代理之前,会为@Transactional所在的类匹配相应的增强,匹配的时候呢,会分别在类级别和方法级别进行匹配。而在类级别和方法级别都满足后,就会将匹配成功的增强返回,而这里返回的增强其实就是BeanFactoryTransactionAttributeSourceAdvisor,我们知道,在BeanFactoryTransactionAttributeSourceAdvisor中有一个非常关键的属性,那就是advic原创 2022-04-12 20:27:12 · 501 阅读 · 0 评论 -
分布式事务实战八(Spring事务框架源码初探三)
上节我们分析了TransactionInterceptor增强的匹配过程,我们知道,其实在匹配的时候,和之前的AOP一样,也分为了类级别的方法级别的匹配。并且通过上节的分析,我们知道,在方法级别匹配的时候,判断方法级别是否匹配成功,依赖于是否获取到事务属性。这一节我们就来分析下,在方法级别匹配时,获取事务属性的过程。我们就接着上节,继续往下分析吧,那么分析的入口就是下边这行代码,如下图:可以看到,上图红框中的代码,就是上节分析方法级别匹配时,获取事务属性的代码了。我们就直接进去getTransacti原创 2022-04-12 20:24:27 · 336 阅读 · 0 评论 -
分布式事务实战八(Spring事务框架源码初探二)
上节我们分析了TransactionInterceptor控制事务的内部实现细节,简单一句话来总结的话,那就是TransactionInterceptor其实是通过jdbc的API来控制数据库事务的。那么到目前为止,我们知道,@Transactional注解是基于AOP来实现的,而我们知道AOP的核心,就是为目标方法添加一些增强,比如TransactionInterceptor增强,那怎么判断,应该为目标方法添加哪些增强呢?其实,应该添加哪些增强,是通过与目标类和目标方法匹配的结果来判断的,比如我们之前就讲原创 2022-04-11 22:57:19 · 547 阅读 · 0 评论 -
分布式事务实战八(Spring事务框架源码初探之基于AOP思想与动态代理无缝插入事务支持)
spring对我们的service组件创建了一个动态代理,你加了@Transactional注解之后,就对这个动态代理插入了事务管理的增强逻辑,开始执行方法之前先开启事务,方法中有报错就回滚事务,如果没有报错就提提交事务。如下图:我们可以基于AOP先来模拟下@Transactional的效果,其实AOP的本质就是动态代理,而动态代理说白了就是一种代理模式,通过代理模式我们可以额外添加一些增强逻辑。因此我们可以利用代理类中的增强逻辑来实现@Transactional注解的效果,那么这个是什么意思呢?我们可原创 2022-04-10 14:41:59 · 551 阅读 · 0 评论 -
分布式事务实战七(为流量充值中心加入事务)
我们看下我们流量充值中心执行步骤,哪些步骤是需要进行事务管理的:(1)完成支付转账。(2)创建充值订单:充值订单显示的是支付成功(3)调用第三方运营商系统完成流量充值。(4)发送短信通知用户,流量充值成功:系统还给用户发了一个短信,提示用户流量已经充值成功了。(5)给用户增加一次抽奖的机会:用户新增一次抽奖的机会。(6)给用户增加充值面额5%的积分:用户增加了积分。(7)如果使用了流量券的话,要将流量券的状态更新为:流量券状态也改变了,已经使用了。(8)如果充值的流量套餐有赠送流量券的活动,原创 2022-04-10 10:34:06 · 384 阅读 · 1 评论 -
分布式事务实战六(事务的基础知识介绍)
在学习分布式事务之前,我们需要先了解下事务的相关知识。事务的ACIDAtomic:原子性,就是很多的sql一起执行,要么一起成功,要们都不执行,不允许某个SQL执行成功,某个SQL执行失败了。Consistency:一致性,这个是针对数据一致性来说的,就是一组SQL执行之前,数据是没有问题的,执行之后,这个数据也必须是没有问题的,不要执行完了SQL结果应该需要修改的数据没有执行。Isolation: 隔离性,这个说的是多个事务在执行的时候是不能相互干扰的,不要事务A操作了某个数据,事务B过来把这数原创 2022-03-23 10:25:24 · 1293 阅读 · 0 评论 -
分布式事务实战五(流量充值中心的确认支付进行流量充值的功能)
上个功能,我们获取到了用户的优惠券信息了,现在我们对购买的流程进行设计和梳理。在支付的过程中我们需要完成以下流程:1、将用户账号中的金额转到第三方boss系统的账号中去。新增金额表:账号金额表(account_amount):id,user_account_id,amount,created_time,modified_timeDROP TABLE IF EXISTS `account_amount`;CREATE TABLE `account_amount` ( `id` int(11)原创 2022-03-20 12:08:59 · 2097 阅读 · 0 评论 -
分布式事务实战四(流量套餐商品后准备付款的功能)
当用户进入到支付界面的时候,会发送请求到流量充值中心的后台系统。后台系统需要计算该用户具体需要支付多少钱。1、首先在手机APP上面,需要将用户账号ID、用户选择的流量套餐的ID、流量套餐当前价格(或者是优惠后的价格)这三个参数发送到后台系统。2、后台系统会根据用户账号ID查询面额最高的流量券。比如某个流量套餐50元 20G 流量,优惠后的价格是 45元,用户有一张5元的流量券和一张 10元的流量券。3、手机APP获取到了面额最高的一张流量券之后,在手机APP端直接用优惠金额扣减掉流量券金额,显示出来最原创 2022-03-18 17:58:29 · 413 阅读 · 0 评论 -
分布式事务实战三(展示流量充值商品的功能)
我们刚开始做的是一个单块的系统,所以之分析出来的10个服务,都是放在一个单块系统里的,也就是我们刚才创建的flow-recharge-center流量充值中心的系统。详细分析用户进入流量充值界面的流程:1、用户打开手机APP,进入到流量充值的页面2、手机APP发送请求到后端的流量服务模块中3、流量服务需要从商品服务获取所有的流量商品套餐4、对每一个流量商品套餐,都要获取对应的优惠活动,要求是关联当前流量套餐商品的优惠活动,而且状态是处于“进行中”的优惠活动,在创建优惠活动的时候,一个流量套餐最多只原创 2022-03-17 21:19:08 · 305 阅读 · 0 评论 -
分布式事务实战二
上一篇我们介绍了量充值中心操作的流程,分析了流量充值中心需要哪些服务支撑,我们还梳理了整个流量充值中心运转的流程。今天我们基于Spring Boot快速的搭建一个单块的工程,我们从单块工程起步,给大家一步一步来演示整个事务的问题出现的过程。我们新建一个工程: flow-recharge-center修改项目的字符编码注解生效激活java编译版本选择修改pom文件:<?xml version="1.0" encoding="UTF-8"?><project xml原创 2022-03-17 18:49:25 · 700 阅读 · 0 评论 -
分布式事务实战一
我们会通过流量充值中心的案例背景讲解分布式事务,分析一下这个系统在事务这块有哪些技术难题,面临着哪些技术问题,我们针对这些问题,来学习分布式事务相关的技术,应用到我们这个案例中来,结合一些业务让大家来好好的体会一下技术。我们先体验一下流量充值中心的使用流程:我们首先会到流量充值页面,选择流量套餐。然后选择付款购买。最后我们可以在订单记录里面看到我们的充值记录,整体的一个操作流程还是比较简单的。流量充值中心架构如何设计我们从一个系统的角度来分析, 需要拆分多少个服务来完成这个流量充值的过程。原创 2022-03-17 18:07:59 · 334 阅读 · 0 评论 -
分布式事务介绍
分布式理论基础、分布式事务、JTA事务、全局事务原创 2022-02-24 22:59:09 · 190 阅读 · 0 评论 -
常见的分布式唯一ID生成方案的优缺点对比
分布式唯一ID方案对比原创 2022-02-21 21:20:10 · 482 阅读 · 0 评论