778 lines
28 KiB
Markdown
778 lines
28 KiB
Markdown
# ERP Java微服务系统 - 项目开发汇总报告
|
||
|
||
> 📅 报告生成时间:2026年4月5日
|
||
> 📌 版本:v1.0
|
||
|
||
---
|
||
|
||
## 1. 项目概述
|
||
|
||
| 属性 | 值 |
|
||
|------|-----|
|
||
| **开发时间** | 2026年4月 |
|
||
| **项目规模** | 31个微服务 |
|
||
| **代码总量** | 约10.9万行Java代码 |
|
||
| **技术栈** | Java 17 + Spring Boot 3.x + Spring Cloud Alibaba 2023.x |
|
||
| **文档数量** | 31个README + 部署文档 + 数据库设计文档 |
|
||
| **构建工具** | Maven |
|
||
| **基础设施** | MySQL 8.0 / Redis 7.x / Nacos 2.x / RocketMQ 5.x / Seata 1.7 / MinIO |
|
||
|
||
### 核心特性
|
||
|
||
- ✅ **微服务架构**:基于Spring Cloud Alibaba的完整微服务解决方案
|
||
- ✅ **多租户支持**:完整的租户隔离体系
|
||
- ✅ **分布式事务**:Seata AT模式保证数据一致性
|
||
- ✅ **消息队列**:RocketMQ实现异步解耦
|
||
- ✅ **配置中心**:Nacos统一管理所有配置
|
||
- ✅ **API网关**:Spring Cloud Gateway统一入口
|
||
- ✅ **监控体系**:SkyWalking全链路追踪
|
||
- ✅ **对象存储**:MinIO私有化文件存储
|
||
|
||
---
|
||
|
||
## 2. 微服务清单
|
||
|
||
| 序号 | 服务名 | 端口 | 容器端口 | 功能描述 | API数量 | 数据库 |
|
||
|------|--------|------|----------|----------|---------|--------|
|
||
| 1 | gateway | 8080 | 8080 | API网关 - 统一入口,路由转发、鉴权、限流 | - | erp_java |
|
||
| 2 | admin-service | 8081 | 8081 | 总控服务 - 租户管理、套餐管理、系统配置 | - | erp_java |
|
||
| 3 | user-service | 8082 | 8082 | 用户服务 - 用户管理、认证、权限 | 6 | erp_java |
|
||
| 4 | product-service | 8083 | 8083 | 商品服务 - 商品管理、分类、品牌、供应商 | 14 | erp_java |
|
||
| 5 | order-service | 8084 | 8082 | 订单服务 - 订单管理、订单结算 | 54 | erp_java |
|
||
| 6 | inventory-service | 8085 | 8084 | 库存服务 - 库存管理、盘点、预警 | 25 | erp_java |
|
||
| 7 | tenant-service | 8086 | 8083 | 租户服务 - 多租户管理、套餐、权限隔离 | 55 | erp_db |
|
||
| 8 | file-service | 8090 | 8082 | 文件服务 - 文件上传、下载、预览、管理 | 13 | erp_db |
|
||
| 9 | scheduled-task-service | 8091 | 8088 | 定时任务服务 - 分布式任务调度(兼容XXL-Job) | 36 | erp_task |
|
||
| 10 | aftersale-service | 8087 | 8087 | 售后管理服务 - 退款/退货/换货/维修全流程 | 22 | erp_db |
|
||
| 11 | ai-service | 8087 | 8087 | AI助手服务 - 智能对话、模型管理、任务执行 | 17 | erp_db |
|
||
| 12 | approval-flow-service | 8086 | 8086 | 审核流服务 - 审核规则、流程、日志 | 15 | erp_db |
|
||
| 13 | audit-log-service | 8098 | 8098 | 操作日志审计服务 - 审计日志、敏感操作告警 | 20 | erp_audit |
|
||
| 14 | category-service | 8096 | 8085 | 分类管理服务 - 层级分类完整CRUD | 0 | - |
|
||
| 15 | customer-service | 8086 | 8086 | 客户关系管理服务 - 客户、跟进、联系人、地址 | 67 | erp_db |
|
||
| 16 | dashboard-service | 8086 | 8086 | 仪表盘服务 - 首页数据、统计、预警 | 1 | erp_db |
|
||
| 17 | data-import-export-service | 8088 | 8088 | 数据导入导出服务 - Excel/CSV、批量处理 | 17 | erp_java |
|
||
| 18 | finance-service | 8007 | 8007 | 财务服务 - 收款/退款、应付/付款、财务报表 | 55 | erp_db |
|
||
| 19 | invoice-service | 8086 | 8086 | 发票管理服务 - 发票申请、开具、作废全生命周期 | 16 | erp_db |
|
||
| 20 | logistics-service | 8086 | 8086 | 物流轨迹服务 - 轨迹同步、多物流商适配 | 9 | erp_db |
|
||
| 21 | notification-service | 8087 | 8087 | 通知服务 - 消息推送、通知模板 | 0 | - |
|
||
| 22 | permission-service | 8084 | 8084 | 权限服务 - RBAC角色权限管理 | 10 | erp_db |
|
||
| 23 | print-service | 8089 | 8089 | 打印服务 - 打印模板、打印任务、多打印机支持 | 28 | erp_db |
|
||
| 24 | purchase-service | 8010 | 8010 | 采购管理服务 - 采购订单、供应商、入库、退货 | 35 | purchase_db |
|
||
| 25 | reconciliation-service | 8018 | 8018 | 对账管理服务 - 账单核对、差异处理 | 27 | erp_db |
|
||
| 26 | report-service | 8084 | 8084 | 报表统计服务 - 订单/销售/库存/采购/资金统计 | 28 | erp_db |
|
||
| 27 | sku-match-service | 8084 | 8084 | SKU匹配服务 - 平台商品管理、规则匹配、AI匹配 | 23 | erp_db |
|
||
| 28 | supplier-service | 8086 | 8086 | 供应商管理服务 - 供应商信息、联系人、银行账户、评级 | 34 | erp_db |
|
||
| 29 | system-tool-service | 8087 | 8087 | 系统工具服务 - 配置、日志、监控、数据清理 | 35 | erp_db |
|
||
| 30 | warehouse-service | 8084 | 8084 | 云仓服务 - 仓库管理、云仓集成、库存同步 | 53 | erp_db |
|
||
| 31 | waybill-service | 8086 | 8086 | 运单服务 - 运单管理、电子面单、打印、状态跟踪 | 16 | erp_db |
|
||
|
||
**API总计**:约 **620+** 个REST接口
|
||
|
||
---
|
||
|
||
## 3. 基础设施
|
||
|
||
### 3.1 服务注册与配置中心 - Nacos
|
||
|
||
| 属性 | 值 |
|
||
|------|-----|
|
||
| 版本 | nacos/nacos-server:v2.2.3 |
|
||
| 端口 | 8848(主控)、9848(gRPC)、9849(gRPC) |
|
||
| 控制台 | http://localhost:8848/nacos |
|
||
| 账号 | nacos / nacos |
|
||
| 模式 | 单机模式(开发)/ 集群模式(生产) |
|
||
|
||
**Nacos配置管理**:
|
||
- 共享配置:`common-config.yaml`、`datasource-config.yaml`、`redis-config.yaml`
|
||
- 服务专属配置:每个服务有独立的`{service}-config.yaml`
|
||
- 命名空间:支持多环境(dev/test/prod)
|
||
|
||
### 3.2 消息队列 - RocketMQ
|
||
|
||
| 属性 | 值 |
|
||
|------|-----|
|
||
| 版本 | apache/rocketmq:5.1.4 |
|
||
| Namesrv端口 | 9876 |
|
||
| Broker端口 | 10911 |
|
||
| 控制台 | http://localhost:8080 |
|
||
| 特色 | 支持事务消息、延迟消息、定时消息 |
|
||
|
||
**主题设计**:
|
||
- `erp-order-topic` - 订单事件
|
||
- `erp-inventory-topic` - 库存变动
|
||
- `erp-notification-topic` - 通知消息
|
||
- `erp-payment-topic` - 支付回调
|
||
|
||
### 3.3 分布式事务 - Seata
|
||
|
||
| 属性 | 值 |
|
||
|------|-----|
|
||
| 版本 | seataio/seata-server:1.7.1 |
|
||
| TC端口 | 8091 |
|
||
| 控制台端口 | 7091 |
|
||
| 事务模式 | AT模式 |
|
||
| 存储 | DB模式(MySQL) |
|
||
|
||
**应用场景**:
|
||
- 订单创建 + 库存扣减
|
||
- 采购入库 + 财务记账
|
||
- 多服务数据一致性保障
|
||
|
||
### 3.4 API网关 - Spring Cloud Gateway
|
||
|
||
| 属性 | 值 |
|
||
|------|-----|
|
||
| 端口 | 8080 |
|
||
| 路由策略 | Path路径匹配 |
|
||
| 鉴权 | JWT Token验证 |
|
||
| 限流 | Redis +令牌桶算法 |
|
||
| 健康检查 | /actuator/health |
|
||
|
||
---
|
||
|
||
## 4. 项目结构
|
||
|
||
```
|
||
erp-java-backend/
|
||
│
|
||
├── docker-compose.yml # 开发环境全量Docker配置
|
||
├── docker-compose.cluster.yml # 集群模式Docker配置
|
||
│
|
||
├── pom.xml # 父级Maven配置
|
||
├── README.md # 项目主文档
|
||
├── DEVELOPMENT.md # 开发指南
|
||
├── project-structure.md # 项目结构说明
|
||
│
|
||
├── gateway/ # API网关(Spring Cloud Gateway)
|
||
│ ├── pom.xml
|
||
│ ├── README.md
|
||
│ ├── src/
|
||
│ │ └── main/
|
||
│ │ ├── java/com/erp/gateway/
|
||
│ │ └── resources/application.yml
|
||
│ └── docker/Dockerfile
|
||
│
|
||
├── common/ # 公共模块
|
||
│ ├── common-core/ # 核心工具类、异常、常量
|
||
│ ├── common-web/ # Web响应封装、异常处理
|
||
│ ├── common-mybatis/ # MyBatis Plus配置
|
||
│ └── common-redis/ # Redis配置模板
|
||
│
|
||
├── services/ # 31个业务微服务
|
||
│ ├── admin-service/ # 总控服务(租户/套餐)
|
||
│ │ ├── src/main/java/com/erp/admin/
|
||
│ │ ├── src/main/resources/
|
||
│ │ │ ├── bootstrap.yml # Nacos配置引导
|
||
│ │ │ └── application.yml
|
||
│ │ ├── Dockerfile
|
||
│ │ ├── docker-compose.yml
|
||
│ │ ├── k8s/deployment.yaml # K8s部署配置
|
||
│ │ └── README.md
|
||
│ │
|
||
│ ├── user-service/ # 用户服务
|
||
│ ├── product-service/ # 商品服务
|
||
│ ├── order-service/ # 订单服务
|
||
│ ├── inventory-service/ # 库存服务
|
||
│ ├── finance-service/ # 财务服务
|
||
│ ├── tenant-service/ # 租户服务
|
||
│ ├── customer-service/ # 客户管理服务
|
||
│ ├── supplier-service/ # 供应商服务
|
||
│ ├── purchase-service/ # 采购服务
|
||
│ ├── warehouse-service/ # 云仓服务
|
||
│ ├── logistics-service/ # 物流服务
|
||
│ ├── waybill-service/ # 运单服务
|
||
│ ├── invoice-service/ # 发票服务
|
||
│ ├── aftersale-service/ # 售后管理服务
|
||
│ ├── permission-service/ # 权限服务
|
||
│ ├── print-service/ # 打印服务
|
||
│ ├── file-service/ # 文件服务
|
||
│ ├── notification-service/ # 通知服务
|
||
│ ├── schedule-task-service/ # 定时任务服务
|
||
│ ├── report-service/ # 报表统计服务
|
||
│ ├── reconciliation-service/ # 对账服务
|
||
│ ├── sku-match-service/ # SKU匹配服务
|
||
│ ├── ai-service/ # AI助手服务
|
||
│ ├── approval-flow-service/ # 审核流服务
|
||
│ ├── audit-log-service/ # 审计日志服务
|
||
│ ├── category-service/ # 分类管理服务
|
||
│ ├── dashboard-service/ # 仪表盘服务
|
||
│ ├── data-import-export-service/ # 数据导入导出服务
|
||
│ ├── system-tool-service/ # 系统工具服务
|
||
│ └── api-gateway/ # API网关(占位)
|
||
│
|
||
├── infrastructure/ # 基础设施配置
|
||
│ ├── kubernetes/ # K8s集群配置
|
||
│ │ ├── erp-global-infra.yaml # 全局ConfigMap/Secret/Ingress
|
||
│ │ ├── erp-db-init-job.yaml # 数据库初始化Job
|
||
│ │ └── kustomization.yaml # Kustomization配置
|
||
│ ├── mysql/ # MySQL初始化脚本
|
||
│ │ └── init.sql
|
||
│ ├── nacos/ # Nacos配置
|
||
│ │ ├── docker-compose.standalone.yml
|
||
│ │ ├── docker-compose.cluster.yml
|
||
│ │ └── examples/
|
||
│ │ ├── shared-config/ # 共享配置(公共/数据源/Redis)
|
||
│ │ └── client-config/ # 客户端引导配置
|
||
│ ├── redis/ # Redis配置
|
||
│ └── rocketmq/ # RocketMQ配置
|
||
│
|
||
├── scripts/ # 部署脚本
|
||
│ ├── init-db.sh # 数据库初始化
|
||
│ ├── setup-config-center.sh # 配置中心初始化
|
||
│ ├── start-dev.sh # 开发环境启动
|
||
│ └── update-microservices-config.sh # 更新微服务配置
|
||
│
|
||
└── docs/ # 文档目录
|
||
├── DEPLOYMENT.md # 部署文档
|
||
├── 微服务架构与数据库设计报告.md
|
||
├── database-split-design.md # 数据库拆分设计
|
||
├── 前后端功能对比分析.md
|
||
├── 缺失功能清单.md
|
||
├── api-docs/ # API文档
|
||
├── database/ # 数据库设计文档
|
||
└── deployment/ # 部署相关文档
|
||
```
|
||
|
||
---
|
||
|
||
## 5. 快速启动
|
||
|
||
### 5.1 环境要求
|
||
|
||
| 组件 | 版本要求 |
|
||
|------|----------|
|
||
| JDK | 17+ |
|
||
| Maven | 3.8+ |
|
||
| Docker | 20.10+ |
|
||
| MySQL | 8.0+ |
|
||
| Redis | 7.0+ |
|
||
|
||
### 5.2 Docker Compose 一键启动
|
||
|
||
```bash
|
||
# 进入项目根目录
|
||
cd /root/.openclaw/workspace/erp-java-backend
|
||
|
||
# 启动所有基础设施服务(推荐首次运行)
|
||
docker-compose up -d mysql redis nacos rocketmq seata minio elasticsearch
|
||
|
||
# 启动API网关
|
||
docker-compose up -d gateway
|
||
|
||
# 按需启动业务服务
|
||
docker-compose up -d user-service product-service order-service inventory-service
|
||
|
||
# 查看服务状态
|
||
docker-compose ps
|
||
|
||
# 查看特定服务日志
|
||
docker-compose logs -f user-service
|
||
|
||
# 停止所有服务
|
||
docker-compose down
|
||
```
|
||
|
||
### 5.3 全量启动
|
||
|
||
```bash
|
||
# 构建所有镜像
|
||
docker-compose build
|
||
|
||
# 启动全部服务
|
||
docker-compose up -d
|
||
|
||
# 查看健康状态
|
||
docker-compose ps
|
||
```
|
||
|
||
### 5.4 开发环境 IDE 启动
|
||
|
||
```bash
|
||
# 1. 启动基础设施
|
||
docker-compose up -d mysql redis nacos
|
||
|
||
# 2. 在IDE中导入项目(根pom.xml)
|
||
# 3. 启动顺序:
|
||
# ① Nacos → ② user-service → ③ product-service → ④ order-service → ...
|
||
|
||
# 4. 访问Nacos控制台确认服务注册
|
||
open http://localhost:8848/nacos
|
||
```
|
||
|
||
### 5.5 基础设施访问地址
|
||
|
||
| 服务 | 地址 | 账号 |
|
||
|------|------|------|
|
||
| Nacos控制台 | http://localhost:8848/nacos | nacos / nacos |
|
||
| RocketMQ控制台 | http://localhost:8080 | - |
|
||
| MinIO控制台 | http://localhost:9001 | minioadmin / minioadmin123 |
|
||
| SkyWalking UI | http://localhost:8081 | - |
|
||
| Elasticsearch | http://localhost:9200 | - |
|
||
|
||
---
|
||
|
||
## 6. API文档
|
||
|
||
### 6.1 Swagger / Knife4j API文档
|
||
|
||
各服务均集成 Knife4j(增强版Swagger),可通过以下地址访问:
|
||
|
||
| 序号 | 服务名 | Swagger地址 | 文档模式 |
|
||
|------|--------|-------------|---------|
|
||
| 1 | gateway | http://localhost:8080/doc.html | Knife4j |
|
||
| 2 | admin-service | http://localhost:8081/doc.html | Knife4j |
|
||
| 3 | user-service | http://localhost:8082/doc.html | Knife4j |
|
||
| 4 | product-service | http://localhost:8083/doc.html | Knife4j |
|
||
| 5 | order-service | http://localhost:8082/doc.html (容器内) | Knife4j |
|
||
| 6 | inventory-service | http://localhost:8084/doc.html (容器内) | Knife4j |
|
||
| 7 | tenant-service | http://localhost:8083/doc.html (容器内) | Knife4j |
|
||
| 8 | finance-service | http://localhost:8007/doc.html | Knife4j |
|
||
| 9 | customer-service | http://localhost:8086/doc.html | Knife4j |
|
||
| 10 | supplier-service | http://localhost:8086/doc.html | Knife4j |
|
||
| 11 | purchase-service | http://localhost:8010/doc.html | Knife4j |
|
||
| 12 | warehouse-service | http://localhost:8084/doc.html (容器内) | Knife4j |
|
||
| 13 | print-service | http://localhost:8089/doc.html | Knife4j |
|
||
| 14 | file-service | http://localhost:8082/doc.html (容器内) | Knife4j |
|
||
| 15 | report-service | http://localhost:8084/doc.html (容器内) | Knife4j |
|
||
| 16 | aftersale-service | http://localhost:8087/doc.html | Knife4j |
|
||
| 17 | ai-service | http://localhost:8087/doc.html | Knife4j |
|
||
| 18 | approval-flow-service | http://localhost:8086/doc.html | Knife4j |
|
||
| 19 | invoice-service | http://localhost:8086/doc.html | Knife4j |
|
||
| 20 | logistics-service | http://localhost:8086/doc.html | Knife4j |
|
||
| 21 | sku-match-service | http://localhost:8084/doc.html (容器内) | Knife4j |
|
||
| 22 | system-tool-service | http://localhost:8087/doc.html | Knife4j |
|
||
|
||
> **说明**:外部端口映射方式:`http://{主机IP}:{外部端口}/doc.html`
|
||
> 内部端口方式需通过API网关统一暴露,或在`docker-compose.yml`中调整端口映射。
|
||
|
||
### 6.2 网关路由配置
|
||
|
||
API网关默认路由规则:
|
||
|
||
```
|
||
/api/auth/** → erp-auth(认证服务)
|
||
/api/user/** → erp-user(用户服务)
|
||
/api/admin/** → erp-admin(总控服务)
|
||
/api/product/** → erp-product(商品服务)
|
||
/api/order/** → erp-order(订单服务)
|
||
/api/finance/** → erp-finance(财务服务)
|
||
/api/tenant/** → erp-tenant(租户服务)
|
||
```
|
||
|
||
---
|
||
|
||
## 7. 数据库设计
|
||
|
||
### 7.1 数据库总览
|
||
|
||
| 数据库名 | 服务 | 字符集 | 连接地址 |
|
||
|----------|------|--------|----------|
|
||
| `erp_java` | user/product/order/inventory/admin等核心服务 | utf8mb4 | localhost:3307 |
|
||
| `erp_db` | 多数业务服务(租户隔离) | utf8mb4 | 111.229.80.149:3306 |
|
||
| `erp_task` | 定时任务服务 | utf8mb4 | 111.229.80.149:3306 |
|
||
| `erp_audit` | 审计日志服务 | utf8mb4 | localhost:3306 |
|
||
| `purchase_db` | 采购服务专属 | utf8mb4 | 111.229.80.149:3306 |
|
||
|
||
### 7.2 核心数据表(erp_java)
|
||
|
||
```
|
||
erp_java/
|
||
├── 用户模块
|
||
│ ├── users # 用户表
|
||
│ ├── roles # 角色表
|
||
│ ├── permissions # 权限表
|
||
│ ├── user_roles # 用户角色关联表
|
||
│ └── login_logs # 登录日志
|
||
│
|
||
├── 商品模块
|
||
│ ├── products # 商品表
|
||
│ ├── categories # 商品分类
|
||
│ ├── brands # 品牌表
|
||
│ └── product_skus # SKU表
|
||
│
|
||
├── 订单模块
|
||
│ ├── orders # 订单主表
|
||
│ ├── order_items # 订单明细
|
||
│ └── order_operations # 订单操作记录
|
||
│
|
||
├── 库存模块
|
||
│ ├── inventory # 库存表
|
||
│ ├── inventory_logs # 库存变动日志
|
||
│ └── warehouses # 仓库表
|
||
│
|
||
└── 公共模块
|
||
├── tenants # 租户表
|
||
├── files # 文件表
|
||
└── system_configs # 系统配置
|
||
```
|
||
|
||
### 7.3 数据库连接配置
|
||
|
||
**开发环境(Docker Compose)**:
|
||
```yaml
|
||
Host: mysql (容器内) / localhost:3307 (宿主机)
|
||
Database: erp_java
|
||
Username: erp_user
|
||
Password: erp123456
|
||
```
|
||
|
||
**生产环境(示例)**:
|
||
```yaml
|
||
Host: 111.229.80.149
|
||
Port: 3306
|
||
Database: erp_db
|
||
Username: root
|
||
Password: nihao588+
|
||
```
|
||
|
||
### 7.4 读写分离与分库分表规划
|
||
|
||
- **读写分离**:订单、商品等高并发表支持读写分离
|
||
- **分库策略**:按租户ID分库(tenant_id)
|
||
- **分表策略**:订单表按月分表(orders_YYYYMM)
|
||
- **NoSQL补充**:Redis缓存热点数据,Elasticsearch支持商品搜索
|
||
|
||
---
|
||
|
||
## 8. 部署架构
|
||
|
||
### 8.1 Kubernetes 部署
|
||
|
||
所有服务均提供K8s部署配置,位于各服务的 `k8s/deployment.yaml` 或 `kubernetes/deployment.yaml`。
|
||
|
||
**前置要求**:
|
||
- Kubernetes 1.25+
|
||
- kubectl已配置
|
||
- Ingress Controller(nginx-ingress)
|
||
- StorageClass(持久化存储)
|
||
|
||
**一键部署**:
|
||
```bash
|
||
# 1. 创建命名空间
|
||
kubectl apply -f infrastructure/kubernetes/erp-global-infra.yaml
|
||
|
||
# 2. 使用Kustomization部署
|
||
kubectl apply -k infrastructure/kubernetes/
|
||
|
||
# 3. 部署业务服务
|
||
for svc in user product order inventory tenant; do
|
||
kubectl apply -f services/${svc}-service/k8s/deployment.yaml
|
||
done
|
||
|
||
# 4. 验证部署
|
||
kubectl get pods -n erp-prod
|
||
kubectl get svc -n erp-prod
|
||
kubectl get ingress -n erp-prod
|
||
```
|
||
|
||
### 8.2 HPA 自动扩缩容
|
||
|
||
所有服务均配置HPA(Horizontal Pod Autoscaler):
|
||
|
||
```yaml
|
||
spec:
|
||
minReplicas: 3 # 最小3个副本
|
||
maxReplicas: 10 # 最大10个副本
|
||
metrics:
|
||
- type: Resource
|
||
resource:
|
||
name: cpu
|
||
target:
|
||
type: Utilization
|
||
averageUtilization: 70 # CPU 70%时扩容
|
||
```
|
||
|
||
### 8.3 PDB 滚动更新保护
|
||
|
||
```bash
|
||
# 查看Pod中断预算
|
||
kubectl get pdb -n erp-prod
|
||
|
||
# 确保滚动更新时最少可用副本
|
||
```
|
||
|
||
### 8.4 生产环境 Ingress 配置
|
||
|
||
| 服务 | Ingress域名 | 路径 |
|
||
|------|------------|------|
|
||
| gateway | api.erpzbbh.cn | / |
|
||
| user-service | user.erpzbbh.cn | / |
|
||
| admin-service | admin.erpzbbh.cn | / |
|
||
| product-service | product.erpzbbh.cn | / |
|
||
| order-service | order.erpzbbh.cn | / |
|
||
| inventory-service | inventory.erpzbbh.cn | / |
|
||
| tenant-service | tenant.erpzbbh.cn | / |
|
||
| file-service | file.erpzbbh.cn | / |
|
||
|
||
### 8.5 服务健康检查
|
||
|
||
| 检查项 | 路径 | 期望状态 |
|
||
|--------|------|---------|
|
||
| 网关健康 | GET /actuator/health | UP |
|
||
| Nacos心跳 | HTTP GET nacos:8848/nacos/ | 200 |
|
||
| MySQL连接 | mysqladmin ping | pong |
|
||
| Redis连接 | redis-cli ping | PONG |
|
||
| Seata事务 | GET seata:8091/health | UP |
|
||
|
||
---
|
||
|
||
## 9. 开发规范
|
||
|
||
### 9.1 命名规范
|
||
|
||
#### 9.1.1 Java类命名
|
||
|
||
| 类型 | 规范 | 示例 |
|
||
|------|------|------|
|
||
| Controller | `{Entity}Controller` | `UserController` |
|
||
| Service | `{Entity}Service` | `UserService` |
|
||
| ServiceImpl | `{Entity}ServiceImpl` | `UserServiceImpl` |
|
||
| Mapper/Repository | `{Entity}Mapper` | `UserMapper` |
|
||
| Entity | `{Entity}` | `User` |
|
||
| DTO | `{Entity}DTO` | `UserDTO` |
|
||
| VO | `{Entity}VO` | `UserVO` |
|
||
| Config | `{Entity}Config` | `RedisConfig` |
|
||
|
||
#### 9.1.2 数据库表命名
|
||
|
||
- 表名:`{模块}_{实体}`,全小写,下划线分隔
|
||
- 示例:`sys_user` `ord_order` `fin_invoice`
|
||
- 公共前缀:`sys_`(系统)`ord_`(订单)`fin_`(财务)
|
||
|
||
#### 9.1.3 API路径命名
|
||
|
||
- 格式:`/api/{module}/{entity}`
|
||
- 示例:`GET /api/user/users` `POST /api/order/orders`
|
||
- 分页:`GET /api/product/products/page`
|
||
|
||
### 9.2 Git规范
|
||
|
||
#### 9.2.1 分支策略
|
||
|
||
```
|
||
main # 生产分支(保护)
|
||
├── develop # 开发主分支
|
||
│ ├── feature/xxx # 功能分支
|
||
│ ├── fix/xxx # 修复分支
|
||
│ ├── hotfix/xxx # 热修复分支
|
||
│ └── release/xxx # 发布分支
|
||
```
|
||
|
||
#### 9.2.2 Commit规范
|
||
|
||
```
|
||
<type>(<scope>): <subject>
|
||
|
||
# type: feat | fix | docs | style | refactor | test | chore
|
||
# scope: 模块名,如 user | order | product
|
||
# subject: 简短描述(不超过50字)
|
||
|
||
示例:
|
||
feat(user): 添加用户注册短信验证码功能
|
||
fix(order): 修复订单支付超时未释放库存问题
|
||
docs(product): 更新商品API文档
|
||
```
|
||
|
||
#### 9.2.3 MR/PR流程
|
||
|
||
1. 从`develop`创建功能分支
|
||
2. 完成开发并自测
|
||
3. 提交MR/PR到`develop`
|
||
4. 至少1人Code Review通过
|
||
5. 合并前运行CI流水线
|
||
6. 合并后删除源分支
|
||
|
||
### 9.3 代码规范
|
||
|
||
#### 9.3.1 常用注解
|
||
|
||
```java
|
||
// 实体类
|
||
@Data // Lombok自动生成getter/setter
|
||
@TableName("sys_user") // MyBatis Plus表名映射
|
||
public class User { }
|
||
|
||
// Mapper
|
||
@Mapper // MyBatis Mapper接口
|
||
public interface UserMapper extends BaseMapper<User> { }
|
||
|
||
// Service
|
||
@Service // Spring服务注解
|
||
@Slf4j // Lombok日志
|
||
public class UserServiceImpl implements UserService { }
|
||
|
||
// Controller
|
||
@RestController // RESTful控制器
|
||
@RequestMapping("/api/user/users")
|
||
public class UserController { }
|
||
```
|
||
|
||
#### 9.3.2 统一响应格式
|
||
|
||
```java
|
||
// 成功响应
|
||
{
|
||
"code": 200,
|
||
"message": "success",
|
||
"data": { ... }
|
||
}
|
||
|
||
// 失败响应
|
||
{
|
||
"code": 400,
|
||
"message": "参数错误",
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 9.3.3 分布式事务注解
|
||
|
||
```java
|
||
@GlobalTransactional(name = "erp-order-create", rollbackFor = Exception.class)
|
||
public void createOrder(OrderDTO orderDTO) {
|
||
// 订单创建 + 库存扣减 保证原子性
|
||
}
|
||
```
|
||
|
||
### 9.4 Docker镜像规范
|
||
|
||
```dockerfile
|
||
# 多阶段构建示例
|
||
FROM maven:3.9-eclipse-temurin-17 AS builder
|
||
WORKDIR /build
|
||
COPY pom.xml .
|
||
RUN mvn dependency:go-offline
|
||
COPY src ./src
|
||
RUN mvn clean package -DskipTests
|
||
|
||
FROM eclipse-temurin:17-jre-alpine
|
||
WORKDIR /app
|
||
COPY --from=builder /build/target/*.jar app.jar
|
||
EXPOSE 8080
|
||
ENTRYPOINT ["java", "-jar", "-Xms256m", "-Xmx512m", "app.jar"]
|
||
```
|
||
|
||
---
|
||
|
||
## 10. 后续优化建议
|
||
|
||
### 10.1 高可用与稳定性
|
||
|
||
| 优先级 | 优化项 | 说明 |
|
||
|--------|--------|------|
|
||
| 🔴 高 | **服务注册中心集群** | Nacos生产环境切换为集群模式(3节点),避免单点故障 |
|
||
| 🔴 高 | **数据库主从复制** | 搭建MySQL主从复制,实现读写分离,提高查询性能 |
|
||
| 🔴 高 | **Seata Server集群** | Seata TC部署为集群模式,保证分布式事务高可用 |
|
||
| 🟡 中 | **RocketMQ集群** | 部署多Master多Slave Broker,提高消息可靠性 |
|
||
| 🟡 中 | **Redis Sentinel/Cluster** | Redis Sentinel或Cluster模式保证缓存高可用 |
|
||
| 🟢 低 | **SkyWalking集群** | 扩大SkyWalking存储集群规模,支持更大追踪数据量 |
|
||
|
||
### 10.2 性能优化
|
||
|
||
| 优先级 | 优化项 | 说明 |
|
||
|--------|--------|------|
|
||
| 🔴 高 | **热点数据缓存** | 对商品信息、分类、配置等热点数据增加Redis二级缓存 |
|
||
| 🔴 高 | **分库分表** | 订单表(ord_order)按月分表,解决单表数据量过大问题 |
|
||
| 🟡 中 | **Elasticsearch搜索** | 商品搜索、订单搜索接入ES,支持全文检索和分词 |
|
||
| 🟡 中 | **接口限流优化** | 网关限流规则细化,按服务+用户维度分别限流 |
|
||
| 🟢 低 | **异步化改造** | 非核心流程(日志、通知)全面异步化,提升响应速度 |
|
||
|
||
### 10.3 安全加固
|
||
|
||
| 优先级 | 优化项 | 说明 |
|
||
|--------|--------|------|
|
||
| 🔴 高 | **敏感数据加密** | 用户密码、身份证号、银行卡号等敏感字段AES加密存储 |
|
||
| 🔴 高 | **API签名验证** | 对外接口增加RSA签名验签,防止请求篡改 |
|
||
| 🟡 中 | **操作日志脱敏** | 审计日志对敏感字段(密码、金额)打码处理 |
|
||
| 🟡 中 | **接口幂等性** | 所有写接口增加幂等Token,防止重复提交 |
|
||
| 🟢 低 | **HTTPS强制** | 生产环境所有HTTP流量强制跳转HTTPS |
|
||
|
||
### 10.4 可观测性增强
|
||
|
||
| 优先级 | 优化项 | 说明 |
|
||
|--------|--------|------|
|
||
| 🟡 中 | **统一日志平台** | 接入ELK(Elasticsearch+Logstash+Kibana)统一收集所有服务日志 |
|
||
| 🟡 中 | **业务监控告警** | 基于SkyWalking自定义业务指标告警(订单量暴跌/库存不足等) |
|
||
| 🟡 中 | **链路追踪完善** | 完善跨服务调用链路标记(traceId),实现全链路可观测 |
|
||
| 🟢 低 | **压力测试** | 使用JMeter/wrk对核心接口进行常态化压测 |
|
||
|
||
### 10.5 灰度发布与持续交付
|
||
|
||
| 优先级 | 优化项 | 说明 |
|
||
|--------|--------|------|
|
||
| 🟡 中 | **灰度发布** | 接入Nacos配置实现流量灰度(版本权重路由) |
|
||
| 🟡 中 | **CI/CD流水线** | 完善Jenkins/GitHub Actions自动化构建-测试-部署流水线 |
|
||
| 🟡 中 | **配置热更新** | 所有服务支持Nacos配置热更新,无需重启 |
|
||
| 🟢 低 | **蓝绿部署** | K8s蓝绿部署方案,减少发布停机时间 |
|
||
|
||
### 10.6 文档与知识沉淀
|
||
|
||
| 优先级 | 优化项 | 说明 |
|
||
|--------|--------|------|
|
||
| 🟡 中 | **API文档维护** | 建立API文档更新机制,确保文档与代码同步 |
|
||
| 🟡 中 | **架构设计文档** | 补充各服务详细设计文档(DDD领域建模) |
|
||
| 🟢 低 | **运维手册** | 编写生产环境运维手册(常见问题处理预案) |
|
||
| 🟢 低 | **新手指南** | 完善本地开发环境搭建文档,降低接入门槛 |
|
||
|
||
---
|
||
|
||
## 附录
|
||
|
||
### A. 快速命令参考
|
||
|
||
```bash
|
||
# 查看所有服务健康状态
|
||
docker-compose ps
|
||
|
||
# 重启指定服务
|
||
docker-compose restart user-service
|
||
|
||
# 查看服务日志(实时)
|
||
docker-compose logs -f order-service
|
||
|
||
# 进入服务容器调试
|
||
docker exec -it erp-user-service /bin/sh
|
||
|
||
# 重新构建单个服务
|
||
docker-compose build --no-cache user-service
|
||
|
||
# 清理所有容器和卷(慎用)
|
||
docker-compose down -v
|
||
```
|
||
|
||
### B. 服务依赖关系图
|
||
|
||
```
|
||
客户端请求
|
||
↓
|
||
[Gateway:8080] ← Nacos(8848) 注册/发现
|
||
↓
|
||
┌─────────────────────────────────────┐
|
||
│ 核心业务服务 │
|
||
│ user → product → order → inventory │
|
||
│ ↓ ↓ ↓ ↓ │
|
||
│ tenant supplier finance warehouse │
|
||
└─────────────────────────────────────┘
|
||
↓ ↓
|
||
[RocketMQ消息队列] [Seata分布式事务]
|
||
↓
|
||
[file-service] [notification-service]
|
||
↓
|
||
[MySQL/Redis]
|
||
```
|
||
|
||
### C. 相关文档链接
|
||
|
||
| 文档 | 路径 |
|
||
|------|------|
|
||
| 开发指南 | `DEVELOPMENT.md` |
|
||
| 部署文档 | `docs/DEPLOYMENT.md` |
|
||
| 数据库设计 | `docs/database-split-design.md` |
|
||
| 微服务架构报告 | `docs/微服务架构与数据库设计报告.md` |
|
||
| 缺失功能清单 | `docs/缺失功能清单.md` |
|
||
| 前后端对比 | `docs/前后端功能对比分析.md` |
|
||
|
||
---
|
||
|
||
*📝 本报告由系统自动生成,如有疑问请联系开发团队*
|