扫码阅读
手机扫码阅读

手把手带领小伙伴们写一个分布式事务案例!

55 2024-11-28

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:手把手带领小伙伴们写一个分布式事务案例!
文章来源:
江南一点雨
扫码关注公众号

松哥正忙于录制TienChin项目视频,该项目基于Spring Boot+Vue3技术栈,并包含多种技术,旨在实现一个完成度超过90%的项目。

松哥之前分享了一篇文章和视频,介绍了如何通过自定义注解实现多数据源的动态切换。问题来了,若在一个Service方法中切换数据源,传统的事务解决方案将不再适用,尤其是在微服务场景中。对此,可以借鉴分布式事务的处理方式。松哥计划写几篇文章并录制视频详细讲解分布式事务,视频将包含在TienChin项目中。

1. AT模式原理

AT模式是两阶段提交协议的演变。第一阶段涉及业务数据和回滚日志同时提交,并释放资源。第二阶段分为提交和回滚两种情况,提交异步化,而回滚则通过一阶段的回滚日志进行反向补偿。通过一个具体的更新操作案例,松哥解释了AT模式工作的具体步骤。

2. AT模式实践

松哥以商品下单业务为例,介绍了五个服务:eureka(服务注册中心)、account(账户服务)、order(订单服务)、storage(仓储服务)和business(业务操作)。案例中,用户下单操作触发business接口,该接口调用其它服务,若任何环节出错(如余额不足、库存不足),将触发整体的事务回滚。此案例突出了分布式事务问题,多个服务中的事务虽属不同微服务,但需保证同步成功或失败。

接下来,松哥介绍了准备工作,包括搭建Seata服务端,并配置file.conf和registry.conf文件。紧接着,创建了maven工程作为微服务的parent项目,并解释了Spring Cloud中的版本冲突问题及其解决方法。然后,详细描述了eureka、business、order、account和storage服务的配置,并创建了对应的数据库表。

在模块开发部分,松哥先后介绍了account、order、storage和business模块的实现细节。特别是在business模块中,通过@GlobalTransactional注解开启全局事务。还提供了一个公共模块处理全局异常。

最后,松哥提供了测试步骤,展示了在不同情况下的事务回滚情况,并解释了undo log表在分布式事务中的作用。

参考资料:seata.io

想要了解更多内容?

查看原文:手把手带领小伙伴们写一个分布式事务案例!
文章来源:
江南一点雨
扫码关注公众号