← 中文资源

简体中文版本

构建分层覆盖的配置中心

配置服务:文件、环境变量、数据库三层深合并,显式优先级加 schema 校验,校验不过拒绝对外服务。

阅读英文原文

目标

构建配置中心:加载基础 JSON 文件、叠加环境变量、再叠加数据库覆盖,按文档化优先级解析合并树,经 schema 校验后才对外提供,无效合并一律拒绝服务。

要点

合并顺序是核心契约:文件默认值、环境覆盖部署差异、数据库覆盖运行时调参;对象深合并、标量与数组整体替换。校验只跑在最终合并结果上(分层各自合法仍可能合并出违规树),失败返回 503 并带精确路径;缓存以引用交换更新,读方永远拿到完整旧树或新树。

提示

环境变量映射 APP_DATABASE__POOL__MAX 展开为嵌套键,前缀必须含应用名避免串台;布尔 true/false 字符串需特判解析。

验证

来源报告随 GET 返回,逐叶指出获胜层;破坏 schema 的覆盖写入返回 422 且旧树继续服务。 项目目录骨架:

config-center/
├── src/
│   ├── server.js
│   ├── merge.js
│   ├── layers/
│   │   ├── fileLayer.js
│   │   ├── envLayer.js
│   │   └── dbLayer.js
│   └── validate.js
├── schemas/app.json
├── base/app.json
├── test/
│   ├── merge.test.js
│   └── api.test.js
└── package.json

实施阶段:Deep merge with origins → Environment layer mapping → Schema gate and serving → Override writes and cache swap。