链氪巴士
  1. 首页
  2. 站点导航
  3. 文章
  4. 快讯
  5. 软件
  6. 书刊
  7. 关于

prontera/spring-cloud-rest-tcc:基于Spring Cloud Netflix展示TCC思想的分布式事务解决方案

prontera/spring - cloud - rest - tcc项目聚焦于随着业务和架构变动带来的进程间一致性需求增加的问题,以Spring Cloud Netflix为服务治理基础,结合C4Model展示基于TCC思想的分布式事务解决方案。其中提出TCC变体TCD并阐述...

访问官网 →

【Github】项目名:prontera/spring – cloud – rest – tcc:基于Spring Cloud Netflix展示TCC思想的分布式事务解决方案

项目简介

随着业务发展和组织架构变动,系统析构拆分后进程间一致性需求增加。本项目以Spring Cloud Netflix作为服务治理基础,贯穿C4Model,展示如何用TCC解决分布式事务。文中提出TCC的变体TCD,阐述了其在模型、流程、原则方面的理念,如将HTTP语义下沉到请求体等。同时给出了一个购入PS4涉及多服务的场景示例,还介绍了项目的技术栈、前置条件、部署演示以及可能出现的事务冲突情况处理等内容。

项目核心技术

主要技术包括Java 8、Spring Boot 2.x、Spring Cloud Netflix – Hoxton、MySQL 8.0。利用Spring Cloud Netflix进行服务治理,基于TCC思想(以及变体TCD)处理分布式事务。在项目中,采用MySQL进行数据存储,通过在Java环境下的编码实现各个服务功能以及事务协调等相关逻辑。

项目实践案例

假设有购入PS4的场景,涉及Order、Account和Product服务,分别对应生单、扣减余额和扣减库存过程。在这个过程中可能会遇到网络故障等问题暴露矛盾。例如在演示中,以Customer角色通过Order服务的Swagger面板下单,在Try阶段根据Participant响应时间设计资源预留时长,考虑各种耗时因素。人为模拟confirm阶段的超时情况,如用账户scott下单时无法扣减余额,购买gba时无法扣减库存,在出现conflict终态时可通过diagnose接口定位问题。

项目总结

该项目详细地阐述了基于Spring Cloud Netflix和TCC思想解决分布式事务的方案,包括理论、变体以及实践。对于想要深入了解分布式事务处理的开发者来说是一个很好的学习案例。如果大家对项目中的编码风格或者设计思路等有任何想法或者建议,欢迎在GitHub Issue留言讨论。

项目地址

GitHub链接直达