跳到主要内容
约 4 分钟2 张卡

配置中心

配置中心分发应用参数,并管理变更历史。本文负责快照校验、刷新方式与版本回退。

1. 面试核心​

先记住这几条,再读正文
  • 原子切换。 动态配置通过校验后的不可变快照切换生效。卡 · 启动配置与运行时配置
  • 版本与进度。 发布版本标识一次配置内容,实例版本反映实际应用进度。
  • 环境变量。 环境变量引用 ConfigMap 时,更新需要重建 Pod。卡 · ConfigMap 刷新方式
  • 挂载文件。 ConfigMap 普通卷最终更新文件,应用仍需重新读取。
  • 回退范围。 配置回退恢复后续行为,已有数据变化需单独修复。

2. 启动配置与运行时配置​

JVM 启动参数在进程创建时读取。限流阈值与功能开关可由应用实现动态刷新。

每项声明读取时机、默认值和合法范围。动态项还需说明副作用与资源替换方式。协议和表结构变更交由兼容迁移处理。

3. 完整快照​

通知与拉取快照是一种配置分发方案。通知表示需要检查更新,客户端随后拉取完整内容。周期校正可恢复漏掉的通知。

解析与业务校验在候选快照上完成。通过后原子替换引用,请求读取同一份快照。逐字段更新会暴露中间组合。

有可靠增量协议时,也可维护版本化增量。恢复失败则重新获取完整状态。

4. schema 校验​

发布前校验类型、必填项、范围和字段关系。资源引用与应用版本兼容性也需检查。

客户端再次校验,以覆盖不同版本的能力差异。校验失败时保留旧快照,并报告拒绝原因。配置结构正确后,还需验证其业务值是否安全。

5. 版本与审计​

发布记录保存内容摘要、环境、作者和原因。实例暴露已接收版本与实际生效版本。

应用版本分布能定位未更新实例。发布成功表示控制面接受变更,实例生效需独立确认。

版本语义由协议定义。自建系统可用单调发布序号,避免按客户端时间排序。

6. 配置灰度​

配置可以按集群或实例标签分批应用。需要用户级开关时,应用按稳定用户键选择配置。

高风险参数一次改变一个主要变量。观察错误、延迟和资源占用后再扩大范围。放量判断见灰度发布。

7. 回滚​

在不可变发布模型中,回滚重新发布旧内容。新发布保留审计关系,并使用新的发布标识。

回退前检查旧值仍适配当前代码。配置已触发数据转换时,兼容读取与补偿另行处理。

8. 密钥管理​

密钥使用独立存储、权限和审计。配置中心保存密钥引用,或提供隔离的密钥能力。

配置 diff、日志与诊断接口需脱敏。轮换时允许新旧凭据短期并存。所有实例完成切换后,再撤销旧凭据。

9. 刷新监控​

监控接收延迟、应用延迟、拒绝原因和版本分布。业务指标可关联到配置版本。

连接池等对象需先构造并验证,再切换引用。旧资源按在途使用情况关闭。部分刷新失败时,按预设策略回退或转为未就绪。

10. ConfigMap 刷新方式​

Kubernetes 中的读取方式决定更新行为。

读取方式更新行为
环境变量现有进程保持原值,需要重建 Pod
普通卷挂载kubelet 最终更新文件,应用自行重读
subPath 挂载现有挂载不接收 ConfigMap 更新
直接调用 API应用订阅或轮询,并负责应用新值

文件更新有 kubelet 同步与缓存传播延迟。只在启动时读取文件的应用仍保留旧配置。滚动重启可用于尚未实现动态重载的应用。

11. 常见问题​

11.1 启动时的配置可用性​

有效本地快照可支持普通参数的离线启动。授权和密钥配置需验证期限。缺少有效安全配置时,实例保持未就绪。

11.2 动态线程池配置​

12 · 面试题卡片​

12.1 动态配置如何安全生效并支持回滚​

出现公司:美团、阿里巴巴

考察重点

  • 理解完整快照、版本与原子替换。
  • 理解schema、客户端校验和最后有效配置。
  • 理解灰度、审计、回滚与不可逆副作用。

相关内容:启动配置与运行时配置至刷新监控。

参考回答

安全刷新需要校验、完整状态切换和实例生效确认。

配置项先声明读取时机与动态更新能力。候选快照通过本地校验后,再切换共享引用。失败时保留旧快照并报告原因。

发布按稳定分组推进,指标关联配置版本。回滚重新发布旧内容,并检查代码兼容性。已经触发的数据变化通过对账或补偿处理。

12.2 ConfigMap 更新后,环境变量和挂载文件都会立即变化吗?​

出现公司:暂无已核验的公开来源(本站自测)

考察重点:读取方式、传播延迟与应用重载。

相关内容:ConfigMap 刷新方式。

参考回答

环境变量保留原值,普通卷挂载最终更新文件。

subPath 挂载不接收更新。应用还需重新读取文件并应用配置。只在启动时读取的应用需要滚动重启。

13. 参考资料​