Apollo配置管理实战
2026/1/15大约 6 分钟ApolloApollo配置管理分布式配置中心灰度发布动态配置
1. Namespace 管理
1.1 Namespace 类型
Apollo 支持两种类型的 Namespace:
| 类型 | 说明 | 使用场景 |
|---|---|---|
| 私有 Namespace | 只能被所属应用使用 | 应用专属配置 |
| 公共 Namespace | 可以被其他应用关联使用 | 公共配置、中间件配置 |
1.2 创建私有 Namespace
- 进入应用配置页面
- 点击左下角「添加Namespace」
- 选择「创建Namespace」
- 填写 Namespace 名称,如
datasource - 选择类型为「私有」
1.3 创建公共 Namespace
公共 Namespace 适合存放多个应用共享的配置,如:
- 中间件配置(Redis、MQ 等)
- 公共组件配置
- 全局开关配置
创建步骤:
- 点击「创建Namespace」
- 填写 Namespace 名称,如
common.redis - 选择类型为「公共」
- 选择所属部门
1.4 关联公共 Namespace
其他应用使用公共 Namespace:
- 进入应用配置页面
- 点击「添加Namespace」
- 选择「关联公共Namespace」
- 选择要关联的公共 Namespace
1.5 Namespace 配置格式
Apollo 支持多种配置格式:
| 格式 | 说明 | 示例 |
|---|---|---|
| Properties | 默认格式,key=value | app.name=demo |
| YAML | 支持层级结构 | app:\n name: demo |
| JSON | JSON 格式 | {"app":{"name":"demo"}} |
| XML | XML 格式 | <app><name>demo</name></app> |
创建非 Properties 格式的 Namespace:
- 创建 Namespace 时,名称带上后缀,如
datasource.yml - Apollo 会自动识别格式
2. 灰度发布
2.1 什么是灰度发布
灰度发布是指在配置变更时,先让部分实例使用新配置,验证无误后再全量发布。这样可以降低配置变更带来的风险。
2.2 创建灰度规则
- 进入应用的 Namespace 配置页面
- 点击「灰度」按钮
- 点击「新增灰度规则」
- 选择灰度方式:
- 按 IP 灰度:指定 IP 地址
- 按 Label 灰度:指定标签
2.3 按 IP 灰度
灰度规则:
IP: 192.168.1.100, 192.168.1.101只有这两个 IP 的实例会获取到灰度配置。
2.4 按 Label 灰度
首先在客户端配置 Label:
apollo:
label: gray # 设置标签然后在 Portal 创建灰度规则:
灰度规则:
Label: gray2.5 灰度发布流程
3. 配置发布与回滚
3.1 发布配置
配置修改后需要发布才能生效:
- 修改配置项
- 点击「发布」按钮
- 填写发布说明(可选)
- 确认发布
注意
发布是一个敏感操作,建议在发布前仔细检查配置变更内容。
3.2 查看发布历史
- 进入 Namespace 配置页面
- 点击「发布历史」
- 可以查看每次发布的:
- 发布时间
- 发布人
- 发布说明
- 配置变更内容
3.3 配置回滚
如果发布后发现问题,可以快速回滚:
- 进入「发布历史」
- 找到要回滚到的版本
- 点击「回滚」按钮
- 确认回滚
提示
回滚操作会创建一个新的发布版本,而不是删除历史记录。
4. 权限管理
4.1 权限模型
Apollo 的权限分为两个维度:
| 维度 | 说明 |
|---|---|
| 应用权限 | 控制谁可以管理应用 |
| Namespace 权限 | 控制谁可以编辑/发布配置 |
4.2 应用权限
应用权限包括:
- 应用管理员:可以管理应用的所有配置和权限
- 普通成员:可以查看配置,但需要授权才能编辑/发布
4.3 Namespace 权限
Namespace 权限分为两种:
| 权限 | 说明 |
|---|---|
| 编辑权限 | 可以修改配置,但不能发布 |
| 发布权限 | 可以发布配置 |
这种设计实现了配置变更的四眼原则:修改和发布由不同的人完成。
4.4 配置权限
- 进入应用管理页面
- 点击「管理应用」
- 在「权限管理」中配置:
- 添加/删除应用成员
- 配置 Namespace 的编辑/发布权限
5. 集群管理
5.1 什么是集群
集群是指同一个应用在同一个环境下的不同分组。典型场景:
- 不同机房使用不同的配置
- 不同租户使用不同的配置
- A/B 测试
5.2 创建集群
- 进入应用配置页面
- 点击左上角的集群下拉框
- 点击「添加集群」
- 填写集群名称,如
SHAJQ(上海机房)
5.3 客户端指定集群
apollo:
cluster: SHAJQ # 指定集群或者通过 JVM 参数:
java -Dapollo.cluster=SHAJQ -jar your-app.jar5.4 集群配置继承
如果客户端指定的集群不存在某个配置,会自动从 default 集群获取。
6. 多环境配置
6.1 环境配置
Apollo 支持的环境:
| 环境 | 说明 |
|---|---|
| DEV | 开发环境 |
| FAT | 功能验收测试环境 |
| UAT | 用户验收测试环境 |
| PRO | 生产环境 |
6.2 配置不同环境
每个环境的配置是完全隔离的,需要分别配置:
- 在 Portal 切换环境(右上角环境选择器)
- 分别配置各环境的配置项
- 分别发布
6.3 环境同步
如果需要将一个环境的配置同步到另一个环境:
- 进入源环境的 Namespace
- 点击「同步配置」
- 选择目标环境
- 选择要同步的配置项
- 确认同步
注意
同步后还需要在目标环境手动发布才能生效。
7. 配置监控
7.1 查看实例列表
可以查看哪些实例正在使用配置:
- 进入应用配置页面
- 点击「实例列表」
- 可以看到:
- 实例 IP
- 实例所在集群
- 配置获取时间
- 配置版本
7.2 配置使用情况
查看某个配置项被哪些实例使用:
- 在配置列表中找到配置项
- 点击配置项右侧的「查看」
- 可以看到使用该配置的实例列表
8. 最佳实践
8.1 Namespace 规划
建议按照以下方式规划 Namespace:
8.2 配置命名规范
# 推荐:使用点号分隔,小写字母
spring.datasource.url=xxx
app.feature.enabled=true
# 不推荐:使用下划线或大写
SPRING_DATASOURCE_URL=xxx
App_Feature_Enabled=true8.3 敏感配置处理
对于敏感配置(如密码),建议:
- 使用加密存储
- 限制访问权限
- 定期轮换
8.4 配置变更流程
9. 总结
本节我们学习了 Apollo 的配置管理实战:
- Namespace 管理:私有/公共 Namespace 的创建和使用
- 灰度发布:降低配置变更风险
- 配置发布与回滚:安全的配置变更流程
- 权限管理:细粒度的权限控制
- 集群管理:支持多机房部署
- 多环境配置:环境隔离和配置同步
下一节我们将学习 Apollo 与 Spring Cloud 的深度集成。
