跳到主要内容

设计配置中心

需求分析

配置中心统一管理所有服务的配置,支持动态更新无需重启。

架构设计

核心功能

功能说明
多环境dev / staging / production 配置隔离
灰度发布配置变更先推送到部分实例
版本回滚配置变更历史 + 一键回滚
权限控制不同团队只能修改自己的配置
审计日志谁改了什么配置
加密存储数据库密码等敏感配置加密

三级回退机制

远程配置中心 → 本地缓存文件 → 代码内默认值
↓ ↓ ↓
正常使用 配置中心不可用 首次启动兜底
警告

配置中心自身挂了不能导致业务不可用。客户端 SDK 必须有本地缓存文件兜底。

方案对比

维度NacosApolloSpring Cloud Configetcd
动态刷新✅ 长轮询✅ 长轮询需配合 BusWatch
Web UI✅ 功能丰富
灰度发布
多语言 SDKJava/Go/PythonJava 为主Java多语言
服务发现✅ 集成

常见面试问题

Q1: 配置变更如何做到不重启生效?

答案

  1. 长轮询(Apollo/Nacos):客户端定期轮询服务端,有变更立即返回
  2. WebSocket:服务端主动推送变更
  3. Watch(etcd/ZooKeeper):监听 key 变化事件

客户端收到变更后,更新内存中的配置对象,应用通过统一的配置接口读取,无需重启。

相关链接