基于Maven的SpringBoot单应用项目(考虑到后期做微服务,内部已经做了拆分)

创建项目
项目地址

项目结构

基于Maven的SpringBoot单应用项目(考虑到后期做微服务,内部已经做了拆分)_第1张图片

  • pom
    基于Maven的SpringBoot单应用项目(考虑到后期做微服务,内部已经做了拆分)_第2张图片
  • baseCommon
    基于Maven的SpringBoot单应用项目(考虑到后期做微服务,内部已经做了拆分)_第3张图片
  • baseInterface
    基于Maven的SpringBoot单应用项目(考虑到后期做微服务,内部已经做了拆分)_第4张图片
  • serviceAdmin
    基于Maven的SpringBoot单应用项目(考虑到后期做微服务,内部已经做了拆分)_第5张图片
  • serviceLog
    基于Maven的SpringBoot单应用项目(考虑到后期做微服务,内部已经做了拆分)_第6张图片
  • serviceWorkOrder
    基于Maven的SpringBoot单应用项目(考虑到后期做微服务,内部已经做了拆分)_第7张图片
  • bffController
    基于Maven的SpringBoot单应用项目(考虑到后期做微服务,内部已经做了拆分)_第8张图片

代码介绍

调用规则

基于Maven的SpringBoot单应用项目(考虑到后期做微服务,内部已经做了拆分)_第9张图片

公共实体类代码

基于Maven的SpringBoot单应用项目(考虑到后期做微服务,内部已经做了拆分)_第10张图片

企业用户注册

基于Maven的SpringBoot单应用项目(考虑到后期做微服务,内部已经做了拆分)_第11张图片
基于Maven的SpringBoot单应用项目(考虑到后期做微服务,内部已经做了拆分)_第12张图片

跨模块查询问题

  • 问题
    企业模块和工单模块进行微服务后,相关表无法进行关联查询
  • 方案
    企业用户创建工单后,为工单建立子表,通过子表来维护工单相关的企业信息、企业用户信息(设当前用户100w,则工单子表最多也为100w)
    后期企业用户信息发生变更,通过RocketMQ消息队列异步的更新工单子表即可、xxl_job定时扫描同步

全局事务

当前项目的事务还是使用单机事务,后期如果对模块进行拆分以及模块的表进行拆分则会出现分布式事务问题

  • Seata(强一致)
    因为seate是基于数据源的(所配置的服务必须要配置数据源),所以在BBF模式下不建议使用Seata来实现分布式事务,如果使用则会存在各服务模块之间相互调用的问题,后期不好维护
  • RocketMQ(最终一致性)
    1、RocketMQ的消息重投失败机制,超过指定次数进入死性队列,通过死性队列人为干预
    2、对含有分布式事务的业务模块建立事务执行记录表,记录当前事务执行的日志记录,如果存在失败的,则可以通过日志记录进行补偿,以达到最终一致

你可能感兴趣的:(微服务,spring,boot,微服务,java)