分布式事务

分布式事务:
https://blog.csdn.net/zzti_erlie/article/details/121041751

1.TCC:基于业务的层面
2.SeaTa-AT模式:基于数据库undo log,1.基于SQL解析实现自动补偿,业务入侵少;2.将TC(事务协调者)独立部署 ,通过RPC远程调用,且是同步的操作
Seata处理分布式事务(非常重要-AT模式):Transaction ID(XID),TC,TM,RM(资源管理器) @GlobalTransaction
step1:本地事务中,一并提交业务数据的更新和回滚日志记录;
step2:马上成功结束,自动异步批量清理回滚日志;
step3:通过回滚日志自动回滚数据
3.消息事务:rocketMQ
1-先给broker发生事务消息即半消息,这个消息是对消费者不可见,发送成功后发送方再执行本地事务
2-再根据本地事务结果向broker发送Commit或者是rollback命令
3-并且rocketMQ的发送方会提供一个反查事务状态接口,若一段时间内没收到任何操作请求,broker反查得知发送方是否执行成功,然后执行commit或rollback命令
4-若是commit命令,那么订阅方就能收到消息,再做相关操作,做完后再消费此消息即可;若是rollback命令,那么订阅方看不到此消息等于失败了
TCC与2PC,3PC和消息事务的区别:
1-可以看出 2PC 和 3PC 是一种强一致性事务,不过还是有数据不一致,阻塞等风险,而且只能用在数据库层面
2-而 TCC 是一种补偿性事务思想,适用的范围更广,在业务层面实现,因此对业务的侵入性较大,每一个操作都需要实现对应的三个方法
3-本地消息、事务消息和最大努力通知其实都是最终一致性事务,因此适用于一些对时间不敏感的业务

4.sharding-jdbc分布式事务:
1.Atomikos实现了JTA/XA规范中的事务管理器(Transaction Manager)实现相关接口
2.JTA Java transaction api ,允许应用程序执行分布式事务,处理两个以上的不同网络资源的更新数据
1-TransactionManager 常用方法,可以开启begin(),rollback()
2-XAResource 资源管理,通过session来管理事务,commit(xid)
3-XID 每个事务分配一个特定的XID
3.JTA主要原理是分两阶段提交
4.由于使用的是XA事务,所以除了Sharding依赖外还要引入事务依赖
5.配置文件中需要加上是按照那个字段进行分库事务控制,比如user_id
6.解决事务一致性可以通过@ShardingTransactionType(TransactionType.XA)注解实现,我们需要在对应的方法上加上即可

5.mycat分布式事务:
1.基于XA实现分布式事务
2.mycat实现的缺陷:
1-每次将内存的所有日志全部写入,导致随着XA事务次数的增加,性能越来越差,且日志写入是同步的,加大了写入的延迟
2-内存中维护所有的协调日志,无法释放, 哪怕重启也不行
3-数据节点未全部prepare就进行commit,导致数据不一致
4-maycat启动时,回滚所有的prepare的XA事务,导致数据不一致
5-单节点事务未记录协调日志
6-XA COMMIT 部分节点挂了重新恢复后,未进一步处理

分布式调度的解决方案:xxl-job;elastic-job;staturn
xxl-job 内置jetty作为RPC服务调用,mysql、SSM(Spring+SpringMVC+MyBatis),内置jetty作为RPC服务调用、quartz

XXL-job:
1.技术栈:mysql,SSM,内置jetty作为RPC服务调用,quartz
2.xxl-job结合spring boot,启动xxl-job项目,spring boot添加XxlJobConfig.java ;编写执行器代码;在xxl-job界面配置调度参数
https://blog.csdn.net/chenmingxu438521/article/details/89313190?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-89313190-blog-104714692.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-89313190-blog-104714692.pc_relevant_paycolumn_v3&utm_relevant_index=2

分布式单点登录和安全框架:
shiro:Java安全框架
四大基石:身份认证,授权,会话管理,加密
可以做什么:身份验证,用户访问控制,
spring security:

xxl-sso:一套成熟的单点登录系统,我们需要主机部署然后在我们的项目中集成

SSM + Shiro和Spring Boot/Spring Cloud + SpringSecurity

springsecurity+oauth2
shiro+cas
单点登录中间件:xxl-sso

分布式数据库事务:
1.TCC:try阶段预留资源;commit阶段默认成功;失败,即进入cancel阶段 ,需要写补偿代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值