JJava 知识库
JAVA INTERVIEW

高频面试题

架构高级约 1 分钟

如果让你设计一个配置中心,要求秒级推送、灰度发布和快速回滚,你会怎么做?

参考回答约 1 分钟 · 口语表达
我的判断

配置中心需要持久化版本、推拉结合的秒级通知、客户端本地快照,以及按实例/标签灰度和一键回滚。

控制面保存 namespace、key、版本、内容摘要、发布人和审计记录。发布不是直接覆盖:先创建不可变版本,完成格式、范围和依赖校验,再把“某环境当前指向哪个版本”原子切换。

服务端通过长轮询或流式连接推送版本通知,客户端收到后再拉取内容、校验摘要,完整构建新配置后原子替换本地快照。连接断开时按退避重连并定期拉取兜底;配置中心不可用时继续使用最近一次成功快照,而不是清空配置。

灰度按应用、机房、实例标签或用户桶建立发布规则:先 1%,观察错误率、延迟和业务指标,再逐步放量。回滚只需把指针切回旧版本并再次通知,不能依赖人工重新编辑旧内容。

需要防止推送风暴:通知只携带版本,客户端随机抖动拉取;大规模发布分批执行。整个链路记录每个实例当前版本,能回答“哪些机器还没生效”。

方案主链路从目标到落地
01配置控制台
02校验与审批
03不可变版本库
04发布状态机
05消息总线
思路拆解问题分析

配置中心不是一个带通知的数据库。真正难点是 发布版本化、客户端断网语义、全量推送风暴、灰度选择和回滚可证明