项目结构
- pom
- baseCommon
- baseInterface
- serviceAdmin
- serviceLog
- serviceWorkOrder
- bffController
代码介绍
调用规则
公共实体类代码
企业用户注册
跨模块查询问题
- 问题
企业模块和工单模块进行微服务后,相关表无法进行关联查询 - 方案
企业用户创建工单后,为工单建立子表,通过子表来维护工单相关的企业信息、企业用户信息(设当前用户100w,则工单子表最多也为100w)
后期企业用户信息发生变更,通过RocketMQ消息队列异步的更新工单子表即可、xxl_job定时扫描同步
全局事务
当前项目的事务还是使用单机事务,后期如果对模块进行拆分以及模块的表进行拆分则会出现分布式事务问题
- Seata(强一致)
因为seate是基于数据源的(所配置的服务必须要配置数据源),所以在BBF模式下不建议使用Seata来实现分布式事务,如果使用则会存在各服务模块之间相互调用的问题,后期不好维护 - RocketMQ(最终一致性)
1、RocketMQ的消息重投失败机制,超过指定次数进入死性队列,通过死性队列人为干预
2、对含有分布式事务的业务模块建立事务执行记录表,记录当前事务执行的日志记录,如果存在失败的,则可以通过日志记录进行补偿,以达到最终一致