zhangjf
|
8190887de8
|
feat: 数据库脚本优化、前端部署脚本、租户ID支持
- 数据库脚本优化
- 新增01_create_user.sql创建fundsp用户
- 新增02_grant_user.sql授权脚本
- 新增fund_exp_init.sql、fund_receipt_init.sql
- 修复SQL脚本与实体类一致性
- 密码更新为fundSP@123
- 前端部署脚本
- 新增build-frontend.sh前端构建脚本
- 新增deploy-frontend-nginx.sh Nginx部署脚本
- 打包输出到deploy目录
- 租户ID支持
- fund-admin/fund-mobile支持query参数读取tid
- 新增tenant.ts store管理租户状态
- 请求拦截器添加X-Tenant-Id header
- 启动脚本修复
- 修复INSTANCE_NAME变量替换问题
- 更新所有service.properties配置
- 配置更新
- 更新所有服务数据库密码
- 更新docker-compose.yml配置
|
2026-02-22 19:45:52 +08:00 |
|
zhangjf
|
480c052ff1
|
feat: Docker容器化部署配置
- 添加所有后端服务的application-docker.yml配置文件
- 添加前端fund-admin和fund-mobile的Dockerfile和nginx配置
- 更新docker-compose.yml添加前端服务
- 添加.dockerignore优化构建
- 添加deploy.sh一键部署脚本
|
2026-02-20 10:13:52 +08:00 |
|
zhangjf
|
8233ff8040
|
feat: 支持多租户专属实例(逗号分隔的租户ID列表)
功能增强:
- TENANT_ID 支持逗号分隔的多个租户 ID
- 一个实例可以服务多个指定租户
实例类型:
共享实例: TENANT_ID = "" (空)
单租户专属: TENANT_ID = "VIP_001"
多租户专属: TENANT_ID = "VIP_001,VIP_002,VIP_003"
路由逻辑:
1. 解析实例 metadata.tenant-id 为租户列表
2. 检查请求 tenantId 是否在列表中
3. 匹配成功 → 专属实例
4. 匹配失败 → 回退共享实例
使用场景:
- 大客户独占实例(单租户)
- 多个小客户共享一个实例(多租户)
- 普通客户使用公共实例(共享)
|
2026-02-19 21:39:30 +08:00 |
|
zhangjf
|
5a2154c1a1
|
refactor: 简化路由逻辑,直接使用 tenantId 匹配实例
问题:tenantGroup 是 tenantId 的简单转换,造成冗余
tenantGroup = "TENANT_" + tenantId.toUpperCase()
解决方案:
1. 直接使用 tenantId 匹配实例
- 移除 tenantGroup 概念
- 负载均衡器直接匹配 metadata.tenant-id
2. 简化配置
- JWT 只需 tenantId 一个字段
- 实例元数据只有 tenant-id
3. 前端简化
- 请求头只需 X-Tenant-Id
- 不再需要 X-Tenant-Group
路由规则:
共享实例: metadata.tenant-id = "" (空)
VIP实例: metadata.tenant-id = "VIP_001"
匹配逻辑: 找到匹配实例 → VIP专属,找不到 → 共享实例
|
2026-02-19 21:33:51 +08:00 |
|
zhangjf
|
e52e2ba801
|
refactor: 简化租户元数据,移除冗余的 tenant-id
问题:metadata 中同时配置 tenant-id 和 tenant-group,但 tenant-id 未被使用
分析:
- tenant-id: 用于数据隔离,但实际由 TenantContextHolder 提供,元数据中的值无意义
- tenant-group: 用于服务路由,负载均衡器实际只使用此字段
解决方案:
1. 移除 metadata.tenant-id 配置
2. 只保留 metadata.tenant-group
3. 更新 NacosMetadataConfig,移除 tenant-id 处理
4. 更新 docker-compose.yml,移除 TENANT_ID 环境变量
配置简化:
修改前: tenant-id + tenant-group 两个字段
修改后: 只有 tenant-group 一个字段
实例类型:
共享实例: tenant-group = "" (空)
VIP实例: tenant-group = "TENANT_VIP_001"
|
2026-02-19 21:26:06 +08:00 |
|
zhangjf
|
5843cc050e
|
feat: Docker Compose配置多租户混合模式负载均衡
## 主要改动
### docker-compose.yml
- fund-sys 服务改为混合模式部署:
- fund-sys-shared: 共享实例(8100端口),供所有租户使用
- fund-sys-vip001: VIP_001专属实例(8101端口)
- 预留VIP_002模板(注释状态)
- 添加TENANT_ID、TENANT_GROUP环境变量
### NacosMetadataConfig
- 支持从环境变量读取租户元数据(优先级最高)
- 动态注册租户标签到Nacos
- 区分共享实例和VIP专属实例
### Prometheus配置
- 监控共享实例和VIP实例
- 添加tenant_mode、tenant_group标签
## 混合模式说明
- 共享实例(TENANT_GROUP为空): 所有普通租户请求路由到此类实例
- VIP实例(TENANT_GROUP有值): VIP租户请求路由到专属实例
|
2026-02-19 20:04:21 +08:00 |
|
zhangjf
|
5b80e237b9
|
feat: Docker容器化部署和Prometheus+Grafana监控
## Docker 容器化部署
### 新增文件
- Dockerfile: 多阶段构建镜像,支持 Java 21
- docker-compose.yml: 完整服务编排配置
- 基础设施: MySQL 8.0, Redis 7, Nacos 3.0
- 监控: Prometheus, Grafana
- 业务服务: Gateway + 9个微服务
- docker/.env: 环境变量配置
- docker/mysql/init/01-init.sql: 数据库初始化脚本
### Docker 特性
- 多阶段构建优化镜像大小
- 非 root 用户运行服务
- 健康检查配置
- 统一时区设置 (Asia/Shanghai)
## Prometheus + Grafana 监控
### Prometheus 配置
- docker/prometheus/prometheus.yml: 服务发现配置
- docker/prometheus/rules/alerts.yml: 告警规则
- 服务可用性告警
- JVM 内存告警
- HTTP 请求告警
- 数据库连接池告警
- 系统资源告警
### Grafana 配置
- docker/grafana/provisioning/: 数据源和Dashboard自动导入
- docker/grafana/dashboards/fund-platform-dashboard.json
- 服务概览面板
- JVM 内存监控
- 数据库连接池监控
### Spring Boot Actuator 集成
- pom.xml: 添加 spring-boot-starter-actuator 和 micrometer-registry-prometheus
- application-docker.yml: Prometheus 端点配置
## 服务端口规划
- Gateway: 8000
- fund-sys: 8100
- fund-cust: 8200
- fund-proj: 8300
- fund-req: 8400
- fund-exp: 8500
- fund-receipt: 8600
- fund-report: 8700
- fund-file: 8800
- Prometheus: 9090
- Grafana: 3000
- Nacos: 8848
|
2026-02-19 18:48:15 +08:00 |
|