项目简介
本项目是基于Spring Cloud Netflix框架构建的分布式事务管理系统,主要用于解决微服务架构里的分布式事务一致性问题。采用TCC(Try-Confirm-Cancel)设计思想,借助HTTP协议实现跨服务的分布式事务管理。运用Spring Cloud Netflix进行服务治理,并结合C4 Model设计系统架构,以简洁方式展示如何用TCC解决分布式事务问题。
项目的主要特性和功能
- TCC事务管理:采用TCC设计思想,通过Try-Confirm-Cancel三个阶段实现分布式事务管理,借助HTTP协议进行服务间事务协调,保证事务的一致性和可靠性。
- 服务治理:利用Spring Cloud Netflix实现服务注册与发现,达成微服务间的动态调用;通过Eureka进行服务注册与发现,确保服务具备高可用性和可扩展性。
- 状态机管理:实现状态机管理,保证事务在不同阶段的状态转换符合预期,处理事务的中间状态和最终状态,确保事务的完整性。
- 并发控制:通过并发控制机制,保证在多线程环境下事务操作的正确性和一致性,使用线程池和并发工具类优化并发操作的性能和稳定性。
- 异常处理:实现统一的异常处理机制,确保事务操作中出现的异常能被正确捕获和处理,通过自定义异常类和异常处理器提供友好的错误响应和日志记录。
- 数据持久化:使用MyBatis进行数据库操作,保证事务数据的持久化和一致性,通过MyBatis的Mapper接口和注解简化数据库操作的代码编写。
安装使用步骤
环境准备
- 确保已安装Java 8及以上版本。
- 确保已安装MySQL 8.0及以上版本,并配置好数据库连接。
- 若使用Docker进行环境搭建,需确保已安装Docker和Docker Compose。
项目构建
- 复制项目:
bash cd yourrepository
- 配置数据库:
- 若使用Docker,可在
assets/docker
目录下找到database.yml
文件,通过以下命令启动MySQL容器:bash docker-compose -f database.yml up
- 若手动配置数据库,将
assets/docker/mysql/db
目录下的init_mysql_user.sql
文件导入到MySQL数据库中。
- 若使用Docker,可在
- 启动服务:将项目导入IDE中,按顺序启动以下服务:
rest-tcc-service-discovery
:服务发现中心。rest-tcc-account
:账户服务。rest-tcc-product
:产品服务。rest-tcc-order
:订单服务。
服务调用
- 服务注册与发现:启动服务后,访问
http://localhost:8255/
,查看Eureka服务注册中心的管理界面,确认服务已成功注册。 - API调用:通过Swagger UI访问各个服务的API文档进行服务调用。例如,访问
http://localhost:8295/swagger-ui.html
可查看订单服务的API文档。 - 事务操作:通过订单服务发起结账请求,系统会自动进行分布式事务管理,确保事务的一致性;通过诊断接口查询事务状态,确保事务的完整性和正确性。
示例操作
- 结账操作:通过订单服务的Swagger UI发起结账请求,输入订单信息,系统将自动进行分布式事务管理。示例请求体:
json { "guid": 1, "price": 47, "productName": "ps4", "quantity": 1, "username": "chris" }
- 诊断操作:通过订单服务的Swagger UI发起诊断请求,输入订单GUID,系统将返回事务的状态信息。示例请求体:
json { "guid": 1 }
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】