通过AOP动态管理Seata分布式事务
本文作者:FUNKYE(陈健斌),杭州某互联网公司主程。
前言
通过GA大会上滴滴出行的高级研发工程陈鹏志的在滴滴两轮车业务中的实践,发现动态降级的必要性是非常的高,所以这边简单利用spring boot aop来简单的处理降级相关的处理,这边非常感谢陈鹏志的分享!
可利用次demo项目地址
more >>平凡的一枚程序员
本文作者:FUNKYE(陈健斌),杭州某互联网公司主程。
Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。
Seata AT 模式:
一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。
二阶段:提交异步化,非常快速地完成。回滚通过一阶段的回滚日志进行反向补偿
Seata 官网使用介绍:
项目地址:https://gitee.com/itCjb/springboot-dubbo-mybatisplus-seata
本文作者:FUNKYE(陈健斌),杭州某互联网公司主程。
Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
MP配置:
1 | <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean"> |
Seata:Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。
AT模式机制:
一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。
二阶段:
本文作者:FUNKYE(陈健斌),杭州某互联网公司主程。
事务:事务是由一组操作构成的可靠的独立的工作单元,事务具备ACID的特性,即原子性、一致性、隔离性和持久性。
分布式事务:当一个操作牵涉到多个服务,多台数据库协力完成时(比如分表分库后,业务拆分),多个服务中,本地的Transaction已经无法应对这个情况了,为了保证数据一致性,就需要用到分布式事务。
Seata :是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。
本文目的:现如今微服务越来越流行,而市面上的分布式事务的方案可谓不少,参差不齐,比较流行的以MQ代表的保证的是消息最终一致性的解决方案(消费确认,消息回查,消息补偿机制等),以及TX-LCN的LCN模式协调本地事务来保证事务统一提交或回滚(已经停止更新,对Dubbo2.7不兼容)。而MQ的分布式事务太过复杂,TX-LCN断更,这时候需要一个高效可靠及易上手的分布式事务解决方案,Seata脱颖而出,本文要介绍的就是如何快速搭建一个整合Seata的Demo项目,一起来吧!
本文作者:FUNKYE(陈健斌),杭州某互联网公司主程。
先上错误demo
1 | @LcnTransaction |
可以运行类似代码,会发现这时候并没有事务回滚,上面的save对象会被插入到数据库.
解决方法有2种:
1.改用 @TccTransaction来替换lcn模式
2.使用DTXUserControls.rollbackCurrentGroup();来替换TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
首先在你的java项目中引入
1 | <dependency> |
本文作者:FUNKYE(陈健斌),杭州某互联网公司主程。
首先说下为什么要使用docker,因为在你没有资金买更多的服务器的时候,docker就可以让你实现一台机子进行装无数相同的程序.所以就可以在一台服务器上轻松装2个mysql,然后进行主从配置.
docker安装文章可以直接百度,https://www.cnblogs.com/rookie404/p/5965518.html
more >>tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true