其他
一种基于柔性事务的分布式事务解决方案设计探究
来源 | OSCHINA 社区
作者 | 京东云开发者-郑朋辉
原文链接:https://my.oschina.net/u/4090830/blog/5585963
1 背景
2 常见分布式事务场景
2.1 同步场景
图 1 分布式事务同步场景
2.2 异步场景
图 2 分布式事务异步场景
3 解决方案
3.1 数据模型设计
图 3 事务服务数据模型
3.2 设计原理
图 4 回滚原理图
3.3 执行时序
图 5 回滚执行时序图
3.4 回滚失败处理方案:
事务服务的高可用保障:柔性事务前提是保证事务服务高可用性,重点保障;
回滚服务重试机制:回滚接口失败重试机制,保证数据一致性;
为了避免架构复杂度,做日志记录、报警、人工处理。
4 注意问题
回滚服务的幂等性:回滚做好业务防重和系统防重,防止因为回滚带来的业务数据不一致;
脏数据:整个事务中某一方法执行失败,前面调用方法的数据作为脏数据使用。简单的解决方案:依赖事务表整个事务执行状态来决定能否使用脏数据。但缺点就是这样会耦合业务逻辑;
中心化:整个事务的维护完全依赖事务服务完成,需要保证事务服务的高可用性;
实时性:事务维护本方案通过定时任务维护,如果业务场景有实时性要求,方式可以改为:在整个事务中某一方法执行失败时,catch 异常,catch 内更新任务状态成功时,直接进行回滚逻辑调用。
5 总结
END
往期精彩SSO 单点登录和 OAuth2.0 的区别和理解
使用 Jenkins 持续集成的一些经验总结
Spring Boot 项目如何按模块进行拆分?
云原生时代的 Java 虚拟机
关注后端面试那些事,回复【2022面经】
获取最新大厂Java面经