首页 / 系统架构 / Java 平台架构

技术栈与定位

选型说明
语言/版本Java 17根工程版本 2026.01-SNAPSHOT
框架Spring Boot 3.5.9 + Spring Cloud Alibaba云原生微服务与单体双形态
持久化MyBatis Plus + MySQL(多数据源)业务库 yinshi_cloud;报表只读 TDengine
缓存/状态RedisToken、设备在线、缓存与本地总线
配置/注册Nacos配置中心 + 服务发现(含 gRPC 端口 metadata)
消息RocketMQ / NATS / Redis Stream按模块与 profile 启用;启动器统一封装
RPCgRPC(protobuf)IoT、Alarm、Prod-GPS、Subscription 四个模块暴露
任务XXL-JOB@XxlJob 处理器统一注册

控制面架构图

Java 业务控制面架构图
Java 业务控制面参考图:展示 HTTP/gRPC/NATS/RocketMQ 接入、聚合业务模块、基础设施依赖与典型请求路径。图中模块关系用于方案沟通,运行时启用情况仍以代码和配置为准。来源:architecture/ChatGPT Image 2026年8月19日 15_17_54 (3).png

仓库布局

cloud-java/
  entrax-dependencies/   # 依赖版本 BOM
  entrax-framework/      # 公共 starter:Web、安全、MyBatis、Redis、MQ、gRPC、任务、租户、数据权限
  entrax-gateway/        # Spring Cloud Gateway(微服务部署参考入口)
  entrax-server/         # 单体启动容器(默认开发路径)
  entrax-module-*/       # 十一个业务模块(api / core / server 分层)
  nacos-config/          # Nacos 配置版本化快照
  cicd/                  # 多环境 Jenkins、Docker、Compose
  script/ scripts/ sql/  # 工程脚本与 SQL

根 POM 聚合:system、infra、member、pay、iot、sim、prod-gps、notify、alarm、mcp、subscription。历史 IoT Gateway 已从聚合构建排除,设备接入由外部 Go 服务承接。

单体与微服务部署形态

形态说明端口
单体 entrax-server默认开发主路径:依赖各业务模块,把 Controller/Service/DAL/任务/消费者装入同一进程48080 HTTP、49080 gRPC、49202 MCP
网关 entrax-gatewaySpring Cloud Gateway,微服务形态的统一入口48081
独立 *-server按模块拆分的微服务部署,端口从 48090 递增48090–48103(gRPC = HTTP + 1000)
除非任务明确要求微服务部署,否则不要将独立 *-server 当作本地启动主路径;端口与配置以 .wiki/、各模块 application*.yaml 与 Nacos 快照为准。

模块内部结构与请求链路

常规模块采用 api / server 分层(IoT 额外有 core 承载消息总线与共享 gRPC 代码):

entrax-module-<name>/
  entrax-module-<name>-api/     # DTO、枚举、Feign/gRPC 契约、proto
  entrax-module-<name>-server/  # Controller、Service、DAL、Convert、Job、消息消费者

典型请求链路:

Controller → Service → Mapper/DO/XML
                  → Convert (MapStruct)
                  → Feign / gRPC / MQ / Job / Redis
  • Controllercontroller/admin(自动加 /admin-api 前缀,面向 system_users)与 controller/app(自动加 /app-api 前缀,面向 member_user)。
  • Service:业务编排与事务边界;跨模块调用走 API 契约、Feign/gRPC 或单体直接 Bean 调用。
  • DALdal/mysql/ + dal/dataobject/,SQL 位于 resources/mapper/
  • 消息与任务mq/consumer/messagebus/job/,绑定、支付、订阅等异步流程由此驱动。

排查功能时优先从 Controller 的 @RequestMapping 进入,再追 Service、DAL、消息/任务入口;不要仅凭目录名推断运行时是否启用。

公共框架能力

Starter能力
Web接口前缀规则、统一响应、参数校验、错误码与 i18n
SecurityJWT、登录态、@PreAuthorize 权限、租户上下文
MyBatis多数据源、逻辑删除、自动填充(creator/updater)
Redis缓存封装与分布式锁
MQRocketMQ/NATS/Redis Stream 统一抽象与消息总线
gRPCserver/client 封装、proto 生成、Nacos 注册(entrax.grpc.server.*
JobXXL-JOB 执行器集成
Tenant多租户上下文与数据隔离(TenantUtils.execute
Data Permission行级数据权限过滤