docs: 架构设计文档v1.6,新增单机部署配置章节

- 新增 6.3 单机部署配置章节
  - 6.3.1 配置文件架构:统一配置+个性化配置分离
  - 6.3.2 统一配置 env.properties
  - 6.3.3 个性化配置 service.properties
  - 6.3.4 打包目录结构
  - 6.3.5 多租户部署配置示例
  - 6.3.6 日志配置集中化
  - 6.3.7 脚本加载逻辑
This commit is contained in:
zhangjf 2026-02-22 16:21:06 +08:00
parent 7909daf8a4
commit 84a14b118b

View File

@ -1,7 +1,8 @@
# 资金服务平台 (FundPlatform) - 架构设计文档
> **文档版本**: v1.0
> **文档版本**: v1.6
> **创建日期**: 2026-02-13
> **更新日期**: 2026-02-13
> **项目名称**: 资金服务平台
> **项目代号**: fundplatform
@ -3562,6 +3563,197 @@ services:
- REDIS_HOST=redis
```
### 6.3 单机部署配置
#### 6.3.1 配置文件架构
项目采用**统一配置 + 个性化配置**分离架构:
```
fundplatform/
├── scripts/
│ └── env.properties # 统一配置(所有服务共用)
├── fund-sys/src/main/resources/
│ └── service.properties # 个性化配置(每服务独立)
├── fund-gateway/src/main/resources/
│ └── service.properties
└── ...其他服务
```
| 配置文件 | 位置 | 用途 | 打包后 |
|----------|------|------|--------|
| `env.properties` | scripts/ | 统一配置(所有服务共用) | conf/env.properties |
| `service.properties` | 各服务 src/main/resources/ | 个性化配置(每服务独立) | conf/service.properties |
**加载顺序**: 先加载 `env.properties`,后加载 `service.properties`(个性化覆盖统一)
#### 6.3.2 统一配置 (env.properties)
```properties
# ============================================
# 环境变量配置文件(所有服务共用)
# ============================================
# Nacos配置
NACOS_SERVER_ADDR=localhost:8848
NACOS_NAMESPACE=fund-platform
NACOS_GROUP=DEFAULT_GROUP
NACOS_USERNAME=nacos
NACOS_PASSWORD=nacos
# Redis配置
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=zjf@123456
REDIS_DATABASE=0
REDIS_TIMEOUT=10000
REDIS_POOL_MAX_ACTIVE=8
REDIS_POOL_MAX_WAIT=-1
REDIS_POOL_MAX_IDLE=8
REDIS_POOL_MIN_IDLE=0
# Hikari连接池配置
HIKARI_MINIMUM_IDLE=5
HIKARI_CONNECTION_TIMEOUT=30000
# Sentinel配置Gateway使用
SENTINEL_DASHBOARD=localhost:8080
SENTINEL_PORT=8719
# 网关限流配置
GATEWAY_RATE_LIMIT_REPLENISH_RATE=100
GATEWAY_RATE_LIMIT_BURST_CAPACITY=200
# 日志配置
LOG_PATH=/datacfs/applogs
LOG_LEVEL_ROOT=INFO
LOG_LEVEL_APP=DEBUG
LOG_PATTERN=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId:-}][%X{spanId:-}] %-5level %logger{50} - %msg%n
# 多租户路由配置
TENANT_ROUTING_ENABLED=true
TENANT_HEADER=X-Tenant-Id
DEFAULT_TENANT_ID=1
```
#### 6.3.3 个性化配置 (service.properties)
```properties
# ============================================
# 服务个性化配置
# 此文件随服务打包,每个服务独立配置
# ============================================
# 服务名称
APP_NAME=fund-sys
# 实例名称多租户场景使用默认与APP_NAME相同
# 多租户示例fund-sys-shared, fund-sys-vip001
INSTANCE_NAME=${APP_NAME}
# 租户标识多租户场景使用用于Nacos元数据路由
# 空值=共享实例,有值=VIP专属实例
TENANT_ID=
# 服务端口可覆盖application.yml中的配置
# SERVER_PORT=8100
```
#### 6.3.4 打包目录结构
使用 Maven Assembly 打包后的目录结构:
```
fund-sys/ # 服务根目录
├── bin/ # 脚本目录
│ ├── start.sh # 启动脚本
│ ├── stop.sh # 停止脚本
│ ├── restart.sh # 重启脚本
│ └── status.sh # 状态查看脚本
├── lib/ # 依赖JAR目录
│ └── fund-sys.jar # 服务JAR包
└── conf/ # 配置文件目录
├── env.properties # 统一配置
├── service.properties # 个性化配置
├── application.yml # 主配置
├── bootstrap.yml # 启动配置
└── logback-spring.xml # 日志配置
```
#### 6.3.5 多租户部署配置
**共享实例配置**:
```properties
# service.properties
APP_NAME=fund-sys
INSTANCE_NAME=fund-sys
TENANT_ID= # 空值表示共享实例
```
**VIP专属实例配置**:
```properties
# service.properties
APP_NAME=fund-sys
INSTANCE_NAME=fund-sys-vip001 # 实例名称带租户标识
TENANT_ID=vip001 # 租户ID用于Nacos路由
```
**多实例部署目录**:
```
/opt/fundplatform/deploy/
├── fund-sys/ # 共享实例
│ └── conf/
│ └── service.properties # INSTANCE_NAME=fund-sys, TENANT_ID=
├── fund-sys-vip001/ # VIP实例1
│ └── conf/
│ └── service.properties # INSTANCE_NAME=fund-sys-vip001, TENANT_ID=vip001
└── fund-sys-vip002/ # VIP实例2
└── ...
```
#### 6.3.6 日志配置集中化
日志管理统一由 `logback-spring.xml` 控制,从环境变量读取配置:
```xml
<!-- 从环境变量读取配置 -->
<springProperty scope="context" name="APP_NAME" source="spring.application.name"/>
<springProperty scope="context" name="LOG_PATH" source="logging.file.path" defaultValue="/datacfs/applogs"/>
<springProperty scope="context" name="LOG_LEVEL_ROOT" source="logging.level.root" defaultValue="INFO"/>
<springProperty scope="context" name="LOG_LEVEL_APP" source="logging.level.app" defaultValue="DEBUG"/>
<!-- 日志文件路径 -->
<property name="LOG_FILE" value="${LOG_PATH}/${APP_NAME}"/>
```
**注意**: `application.yml` 中不再配置 `logging` 节点,完全由 `logback-spring.xml` 管理。
#### 6.3.7 脚本加载逻辑
启动脚本统一使用 `load_properties` 函数加载配置:
```bash
# 加载函数读取properties文件
load_properties() {
local file="$1"
if [ -f "$file" ]; then
while IFS='=' read -r key value; do
[[ "$key" =~ ^#.*$ ]] && continue
[[ -z "$key" ]] && continue
key=$(echo "$key" | xargs)
value=$(echo "$value" | xargs)
export "$key=$value"
done < "$file"
fi
}
# 1. 加载统一配置
load_properties "${APP_HOME}/conf/env.properties"
# 2. 加载个性化配置(覆盖统一配置)
load_properties "${APP_HOME}/conf/service.properties"
```
---
## 七、监控与运维
@ -3785,6 +3977,7 @@ public class GlobalExceptionHandler {
| v1.3 | 2026-02-13 | 补充 HikariCP 连接池、支持异步场景的 UserContext 封装 | zhangjf |
| v1.4 | 2026-02-13 | 补充统一全局上下文 GlobalContext统筹 tid/uid/uname 获取和异步传递 | zhangjf |
| v1.5 | 2026-02-13 | 补充模块通信与 OpenFeign 参数对象管理策略、分层架构职责说明、MyBatis-Plus 使用规范、Controller 与参数校验规范、事务与测试规范及开发规则总览 | zhangjf |
| v1.6 | 2026-02-13 | 补充单机部署配置配置文件分离架构env.properties+service.properties、打包目录结构、多租户部署配置、日志配置集中化、脚本加载逻辑 | zhangjf |
---