Appearance
分布式事务处理
**本文引用的文件** - [baseUrl.js](file://app/devicemate-app/config/baseUrl.js) - [index.js](file://app/devicemate-app/store/modules/index.js) - [common.js](file://app/devicemate-app/store/modules/common.js) - [repair.js](file://app/devicemate-app/store/modules/repair.js) - [apply.vue(维修)](file://app/devicemate-app/modules/repair/apply.vue) - [execute.vue(保养)](file://app/devicemate-app/modules/maintain/execute.vue) - [process.vue(维修过程)](file://app/devicemate-app/modules/repair/components/process.vue) - [en.json](file://app/devicemate-app/locale/en.json) - [zh-Hans.json](file://app/devicemate-app/locale/zh-Hans.json) - [AGENTS.md](file://app/devicemate-app/AGENTS.md) - [manifest.json](file://app/devicemate-app/manifest.json) - [index.js(前端配置)](file://app/devicemate-app/config/index.js) - [jsencrypt.js](file://app/devicemate-app/lib/jsencrypt.js) - [lemes-business-devicemate 模块说明](file://lemes-cloud/lemes-business-devicemate/readme.md) - [lemes-framework 核心模块说明](file://lemes-cloud/lemes-framework/README.md) - [lemes-gateway 网关说明](file://lemes-cloud/lemes-gateway/README.md) - [lemes-auth 认证说明](file://lemes-cloud/lemes-auth/README.md) - [lemes-websocket 说明](file://lemes-cloud/lemes-websocket/README.md) - [lemes-service-common 说明](file://lemes-cloud/lemes-service-common/README.md) - [lemes-job-devicemate 说明](file://lemes-cloud/lemes-job-devicemate/README.md) - [docker-compose.yml](file://lemes-cloud/src/devops/docker-compose/docker-compose.yml) - [nacos.yml](file://lemes-cloud/src/devops/docker-compose/nacos.yml) - [lemes-job.yml](file://lemes-cloud/src/devops/docker-compose/lemes-job.yml) - [install.sh](file://lemes-cloud/src/devops/docker-compose/install.sh) - [load-config.sh](file://lemes-cloud/src/devops/docker-compose/load-config.sh) - [devops-ci.yml](file://lemes-cloud/devops-ci.yml) - [Jenkinsfile](file://lemes-cloud/Jenkinsfile) - [lemes-auth pom.xml](file://lemes-cloud/lemes-auth/pom.xml) - [lemes-gateway pom.xml](file://lemes-cloud/lemes-gateway/pom.xml) - [lemes-business-devicemate pom.xml](file://lemes-cloud/lemes-business-devicemate/pom.xml) - [lemes-framework pom.xml](file://lemes-cloud/lemes-framework/pom.xml) - [lemes-service-common pom.xml](file://lemes-cloud/lemes-service-common/pom.xml) - [lemes-websocket pom.xml](file://lemes-cloud/lemes-websocket/pom.xml) - [lemes-job-devicemate pom.xml](file://lemes-cloud/lemes-job-devicemate/pom.xml)目录
引言
本文件面向DeviceMate项目的分布式事务处理,围绕以下目标展开:系统性阐述分布式事务的挑战与权衡(CAP/BASE)、TCC与Saga两种主流模式在设备与仓储业务中的落地策略、事务协调器与参与者注册机制、异常处理与性能优化、以及事务监控与审计能力。由于当前前端仓库未包含后端分布式事务实现代码,本文以现有前端交互与后端微服务模块为依据,给出可落地的架构建议与实施路径,并在“附录”中提供后端模块清单以便进一步扩展。
项目结构
DeviceMate采用前后端分离架构:
- 前端:基于uni-app的移动端应用,负责用户交互、表单提交、调用后端接口。
- 后端:基于Spring Cloud微服务,包含认证、网关、设备、仓储、工作流、公共组件、WebSocket、定时任务等模块。
图表来源
- lemes-gateway 网关说明
- lemes-business-devicemate 模块说明
- lemes-framework 核心模块说明
- lemes-auth 认证说明
- lemes-websocket 说明
- lemes-service-common 说明
- lemes-job-devicemate 说明
章节来源
- AGENTS.md
- lemes-business-devicemate 模块说明
- lemes-framework 核心模块说明
- lemes-gateway 网关说明
- lemes-auth 认证说明
- lemes-websocket 说明
- lemes-service-common 说明
- lemes-job-devicemate 说明
核心组件
- 前端配置与国际化
- 接口基础地址统一管理,便于切换环境与网关代理。
- 多语言资源覆盖设备、维修、保养、巡检等模块文案。
- 状态管理
- Vuex模块化组织,包含通用状态、登录、设备、维修、保养等。
- 业务页面
- 维修申请、保养执行、维修过程记录等页面通过HTTP调用后端接口完成业务闭环。
- 安全与加密
- 前端包含RSA密钥与加密库,用于敏感数据传输安全。
章节来源
- baseUrl.js
- index.js
- common.js
- repair.js
- apply.vue(维修)
- execute.vue(保养)
- process.vue(维修过程)
- en.json
- zh-Hans.json
- index.js(前端配置)
- jsencrypt.js
架构总览
DeviceMate的分布式事务处理建议采用“混合策略”:
- 对于短事务且强一致需求的场景(如库存扣减),优先采用TCC两阶段提交,确保业务幂等与补偿可控。
- 对于长事务或跨多个微服务的复杂流程(如维修工单流转),采用Saga长事务编排,拆分为多个本地事务,通过补偿动作回滚。
图表来源
详细组件分析
TCC(Try-Confirm-Cancel)模式在设备与仓储中的应用
- 业务活动定义
- 仓储出库:Try阶段冻结库存并生成预占单;Confirm阶段正式扣减并落库;Cancel阶段释放预占。
- 设备部件更换:Try阶段校验部件可用性与寿命;Confirm阶段更新设备部件清单;Cancel阶段回滚部件变更。
- 补偿机制设计
- 通过事件驱动与消息队列实现异步补偿,确保失败时自动触发Cancel。
- 幂等性保障:基于业务唯一键与状态机,防止重复执行。
- 事务状态管理
- 引入状态机与持久化存储,记录Try/Confirm/Canceled各阶段状态,支持重试与人工干预。
图表来源
章节来源
Saga模式的适用场景与实现要点
- 适用场景
- 维修工单从创建到完成涉及多个服务(设备、仓储、工作流、通知),适合拆分为多个本地事务。
- 步骤回滚
- 通过补偿动作逆向执行,如撤销已扣减的库存、回退设备部件、删除临时记录等。
- 最终一致性
- 基于事件驱动与消息队列,确保跨服务的数据最终一致。
图表来源
章节来源
事务协调器设计与参与者注册
- 协调器职责
- 统一编排TCC/Saga流程,跟踪事务状态,调度补偿动作,提供查询与人工干预接口。
- 参与者注册
- 服务启动时向注册中心注册自身能力与补偿接口,协调器按需调用。
- 事件驱动
- 通过消息中间件发布/订阅事件,降低耦合度,提升可扩展性。
章节来源
异常处理策略与性能优化
- 异常处理
- Try阶段失败立即触发Cancel;Confirm阶段失败记录错误并重试;对网络抖动与超时设置指数退避。
- 性能优化
- 缓存热点数据(如字典、产品线、仓库列表);批量提交减少网络往返;异步处理非关键路径。
- 前端侧优化
- 使用分页组件与懒加载;对输入进行前端校验,减少无效请求;国际化文案集中管理,避免重复请求。
章节来源
事务监控与审计
- 日志与追踪
- 为每个事务分配全局ID,贯穿Try/Confirm/Canceled全流程;记录关键事件与补偿动作。
- 状态查询
- 提供事务状态查询接口,支持按业务单号、时间范围、状态筛选。
- 人工干预
- 支持强制推进/回滚、重试失败步骤、查看补偿详情等运维操作。
章节来源
依赖分析
- 前端依赖
- uni-app生态、uView UI、mescroll-uni分页、国际化资源、Vuex模块化。
- 后端依赖
- Spring Cloud生态(网关、注册发现、配置中心、消息中间件、分布式事务框架)。
图表来源
章节来源
性能考虑
- 前端
- 减少不必要的网络请求,合并多次提交;对大字段采用延迟加载;合理使用缓存。
- 后端
- 读写分离、索引优化、连接池配置;异步化非关键路径;限流与熔断保护。
- DevOps
- 容器化部署、弹性伸缩、灰度发布;CI/CD流水线自动化测试与部署。
章节来源
故障排查指南
- 常见问题
- 接口超时:检查网关与下游服务健康状态;查看消息队列积压情况。
- 数据不一致:核对补偿动作是否执行;检查事务状态是否被正确持久化。
- 前端国际化缺失:确认语言包加载顺序与键值是否存在。
- 排查步骤
- 从前端请求链路定位到网关,再到具体服务;结合日志与追踪ID定位问题节点。
- 对TCC/Saga流程,重点检查Try阶段是否成功、Confirm阶段是否幂等、补偿是否回放。
章节来源
结论
DeviceMate的分布式事务处理应以“TCC强一致 + Saga长流程编排”的混合策略为核心,结合事件驱动与补偿机制,确保在设备与仓储业务中的高可用与最终一致性。前端通过统一配置与状态管理提升用户体验,后端通过微服务与基础设施实现弹性与可观测性。建议尽快完善后端分布式事务实现与监控审计能力,形成闭环。
附录
- 后端模块清单(便于后续扩展分布式事务实现)
- 认证服务、网关服务、设备服务、仓储服务、工作流服务、公共组件服务、WebSocket服务、定时任务服务。
- 部署与运维
- 使用docker-compose与k8s部署,集成Nacos作为注册与配置中心,支持Job与配置加载脚本。
章节来源