配置优先级怎么定
配置往往有多个来源:内置默认、环境配置、租户配置、请求级覆盖。不明确优先级就会互相覆盖出意外,尤其是请求级参数能改安全相关设置时。规则要写进文档,并在启动与每次发布后打印生效值快照,排查问题时先看这份快照而不是猜。
基本信息
| 层级顺序 | 内置默认 < 环境配置 < 租户配置 < 请求级覆盖 |
|---|---|
| 合并方式 | 逐键合并,不是整份替换 |
| 请求级范围 | 只允许白名单参数,安全相关设置一律不可覆盖 |
| 生效值快照 | 启动与发布后打印:来源层级、参数名、生效值 |
| 排查方式 | 先看快照确认生效值,再复现请求 |
典型使用场景
- 多租户平台:租户级参数覆盖平台默认,但不能绕过安全基线
- 排查线上差异:同一请求在不同租户下行为不同,用快照比对来源层
- 灰度对比:请求级带上实验参数,仅白名单内的可生效
- 容量调整:环境配置改超时与并发,不需要动模板与代码
- 变更复核:发布前后对比快照差异,防止低层配置被意外改写
优先级与生效值核对
优先级与生效值核对
1 内置默认值 # 安全与合规基线,任何层都不可覆盖
2 环境配置 prod.yaml # 模型名、端点、超时
3 租户配置 # 配额、温度等业务参数
4 请求级覆盖 # 仅白名单参数,例如输出语言
生效值打印: 来源层 | 参数名 | 生效值
变更后对比快照差异,防止低层配置被意外改写,例如超时被请求级改短分层与可覆盖范围
| 层级 | 典型内容 | 是否可被覆盖 |
|---|---|---|
| 内置默认 | 安全与合规基线 | 不可覆盖 |
| 环境配置 | 模型名、超时、端点 | 可由租户层覆盖 |
| 租户配置 | 配额、温度等业务参数 | 可由请求层白名单覆盖 |
| 请求级 | 单次调用参数 | 仅限白名单 |
请求级能覆盖的参数清单要保守。一旦允许覆盖安全相关设置,外部的每次调用都成了潜在绕过通道。