网站网页宽度多少合适,手机发布 wordpress文章,wordpress手机端菜单被挤到第二行,网站开发语言排行榜Seata
Seata 是一款开源的分布式事务解决方案#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 官网地址#xff1a;https://seata.io/zh-cn/index.html 为什么会产生分布式事务#xff1f; 示例#xff1a;用户下单后需要创建订单#xff0c;同时…Seata
Seata 是一款开源的分布式事务解决方案致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 官网地址https://seata.io/zh-cn/index.html 为什么会产生分布式事务 示例用户下单后需要创建订单同时会员积分对应增加库存数量相应减少。如果是在一个数据库单个事务中没有问题。一旦涉及分布式环境下需要保证所有的数据要么全局提交要么全局回滚。
分布式解决方案需要增加一个事务协调者。
二阶段提交
第一个阶段如下 第二个阶段如下 分布式事务体系三个重要角色
事务管理器TM决定什么时候全局提交/回滚 司令官事务协调者TC负责通知命令的中间件Seata-Server传令官资源管理器RM做具体事儿的工具人大头兵 事务边界 操作成功全局提交操作出现异常全局回滚。 Seata AT模式下如何实现数据自动提交、回滚
通过SQL Parser对SQL语句进行解析实现UNDO_LOG。 Seata如何避免并发场景的脏读与脏写
利用TC自带的分布式锁 怎么使用Seata框架来保证事务的隔离性
因seata一阶段本地事务已提交为防止其他事务脏读脏写需要加强隔离。
脏读 select语句加for update代理方法增加GlobalLockTransactional或GlobalTransactional脏写必须使用GlobalTransactional
注如果你查询的业务的接口没有GlobalTransactional 包裹也就是这个方法上压根没有分布式事务的需求这时你可以在方法上标注GlobalLockTransactional 注解并且在查询语句上加 for update。 如果你查询的接口在事务链路上外层有GlobalTransactional注解那么你查询的语句只要加for update就行。设计这个注解的原因是在没有这个注解之前需要查询分布式事务读已提交的数据但业务本身不需要分布式事务。 若使用GlobalTransactional注解就会增加一些没用的额外的rpc开销比如begin 返回xid提交事务等。GlobalLock简化了rpc过程使其做到更高的性能。