3.2 KiB
3.2 KiB
Nacos 配置中心方案
一、配置架构
1.1 配置文件结构
application.yml (本地,极简)
├── Nacos: common.yaml (公共配置)
├── Nacos: common-redis-${profile}.yaml (按环境的Redis配置)
└── Nacos: ${spring.application.name}.yaml (服务专属配置)
1.2 Data ID 设计
| Data ID | 说明 |
|---|---|
| common.yaml | 公共配置(MySQL连接池、MyBatis、Feign等) |
| common-redis-dev.yaml | 开发环境Redis单机配置 |
| common-redis-ha.yaml | 生产环境Redis Sentinel配置 |
| video-gateway.yaml | Gateway服务专属配置 |
| video-auth.yaml | Auth服务专属配置 |
| video-user.yaml | User服务专属配置 |
| video-content.yaml | Content服务专属配置 |
| video-comment.yaml | Comment服务专属配置 |
| video-recommend.yaml | Recommend服务专属配置 |
| video-admin.yaml | Admin服务专属配置 |
二、使用方式
2.1 初始化 Nacos 配置
方式一:执行 SQL 脚本
# 连接 Nacos 数据库
mysql -u root -p nacos_config < sql/nacos-config-init.sql
方式二:通过 Nacos 控制台手动创建
- 登录 Nacos 控制台:http://localhost:8848/nacos(默认账号:nacos/nacos)
- 进入「配置管理」->「配置列表」
- 点击「+」创建配置,Data ID 和内容参考
sql/nacos-config-init.sql
2.2 环境切换
通过 SPRING_PROFILES_ACTIVE 环境变量切换环境:
开发环境:
environment:
- SPRING_PROFILES_ACTIVE=dev
会加载 common-redis-dev.yaml,使用单机 Redis。
生产/高可用环境:
environment:
- SPRING_PROFILES_ACTIVE=ha
- REDIS_SENTINEL_NODES=192.168.1.101:26379,192.168.1.102:26379,192.168.1.103:26379
会加载 common-redis-ha.yaml,使用 Sentinel 哨兵模式。
2.3 配置热更新
修改 Nacos 中的配置后,服务会自动感知并更新(refreshEnabled=true),无需重启!
三、配置优先级
环境变量 > Nacos 配置 > 本地 application.yml
四、本地开发
本地开发时,启动 Nacos 后:
- 确保 Nacos 中已有配置
- 启动服务,默认使用
devprofile - 自动连接开发环境的 Redis
五、生产部署
# 1. 执行 SQL 初始化配置
mysql -u root -p nacos_config < sql/nacos-config-init.sql
# 2. 构建镜像
mvn clean package -DskipTests
docker-compose -f docker-compose-node-01.yml build
# 3. 启动服务
docker-compose -f docker-compose-node-01.yml up -d
六、常见问题
Q1: 配置没有生效?
检查以下几点:
- Nacos 是否正常运行
- 服务启动日志是否显示连接 Nacos 成功
- 配置的 Data ID 是否正确
spring.config.import是否正确配置
Q2: 如何查看当前使用的配置?
# 查看服务日志
docker logs -f video-auth | grep -i nacos
Q3: 如何动态修改配置?
- 登录 Nacos 控制台
- 找到对应配置
- 编辑并发布
- 服务自动感知更新
七、核心优势
| 优势 | 说明 |
|---|---|
| 配置集中管理 | 所有配置在 Nacos 统一管理 |
| 环境隔离 | 通过 profile 区分环境 |
| 热更新 | 修改配置无需重启 |
| 无需重构镜像 | 改配置只需在 Nacos 操作 |
| 代码精简 | 本地只留 Nacos 连接配置 |