首页 / 系统架构 / Java 平台架构
Java 平台架构
cloud-java 的单体/微服务部署形态、模块划分、包结构与请求链路。
技术栈与定位
| 项 | 选型 | 说明 |
|---|---|---|
| 语言/版本 | Java 17 | 根工程版本 2026.01-SNAPSHOT |
| 框架 | Spring Boot 3.5.9 + Spring Cloud Alibaba | 云原生微服务与单体双形态 |
| 持久化 | MyBatis Plus + MySQL(多数据源) | 业务库 yinshi_cloud;报表只读 TDengine |
| 缓存/状态 | Redis | Token、设备在线、缓存与本地总线 |
| 配置/注册 | Nacos | 配置中心 + 服务发现(含 gRPC 端口 metadata) |
| 消息 | RocketMQ / NATS / Redis Stream | 按模块与 profile 启用;启动器统一封装 |
| RPC | gRPC(protobuf) | IoT、Alarm、Prod-GPS、Subscription 四个模块暴露 |
| 任务 | XXL-JOB | @XxlJob 处理器统一注册 |
控制面架构图
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-gateway | Spring 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
- Controller:
controller/admin(自动加/admin-api前缀,面向system_users)与controller/app(自动加/app-api前缀,面向member_user)。 - Service:业务编排与事务边界;跨模块调用走 API 契约、Feign/gRPC 或单体直接 Bean 调用。
- DAL:
dal/mysql/+dal/dataobject/,SQL 位于resources/mapper/。 - 消息与任务:
mq/consumer/、messagebus/、job/,绑定、支付、订阅等异步流程由此驱动。
排查功能时优先从 Controller 的 @RequestMapping 进入,再追 Service、DAL、消息/任务入口;不要仅凭目录名推断运行时是否启用。
公共框架能力
| Starter | 能力 |
|---|---|
| Web | 接口前缀规则、统一响应、参数校验、错误码与 i18n |
| Security | JWT、登录态、@PreAuthorize 权限、租户上下文 |
| MyBatis | 多数据源、逻辑删除、自动填充(creator/updater) |
| Redis | 缓存封装与分布式锁 |
| MQ | RocketMQ/NATS/Redis Stream 统一抽象与消息总线 |
| gRPC | server/client 封装、proto 生成、Nacos 注册(entrax.grpc.server.*) |
| Job | XXL-JOB 执行器集成 |
| Tenant | 多租户上下文与数据隔离(TenantUtils.execute) |
| Data Permission | 行级数据权限过滤 |