跳转到内容
Alibaba Cloud AI Agent Handbook 已开源,汇集50+工程师的一手实践经验点此了解

配置管理概览

Nacos 配置管理用于保存和分发应用运行所需的动态配置。应用可以从 Nacos 查询配置,也可以监听配置变更,避免把环境差异、开关、限流参数等内容写死在代码中。

配置管理关注的是配置资源本身的生命周期,包括发布、查询、监听、灰度、历史、回滚、导入、导出、克隆和容量控制。它不是文档库、对象存储、密钥生命周期系统,也不是服务发现模型。

资源模型

一个配置由三个字段标识:

namespaceId -> groupName -> dataId
字段说明
namespaceId命名空间,常用于隔离环境、租户或业务域。默认命名空间为 public。
groupName配置分组,常用于区分应用、模块或业务分组。
dataId配置名。它是配置内容的主要资源名。

配置内容是一个整体。Nacos 保存并分发 content,但不会理解配置文件内部某个业务字段的含义。type 只表示内容类型,例如 TEXT、JSON 或 YAML,用于展示和客户端处理。

运行面和管理面

Nacos 3.x 将运行面和管理面区分得更清楚。

接口面面向对象适合做什么
Client SDK应用程序查询已知配置、监听配置变更、读取本地快照。
Client OpenAPI不方便使用 gRPC SDK 的客户端查询单个已知配置。
Admin API运维平台、发布平台、自动化工具发布、删除、列表、搜索、灰度、历史、容量和诊断。
Console APINacos 控制台支撑控制台配置管理流程。
Maintainer SDK运维程序以 Java SDK 方式执行管理操作。

普通业务应用建议只读取和监听自己需要的配置。大范围列表、搜索、批量导入、容量调整和本地缓存修复属于管理操作,应交给控制台、Admin API 或 Maintainer SDK。

读取路径

配置内容会持久化保存。服务端运行时查询通常从本地缓存和本地 dump 文件读取,避免高频查询直接打到数据库。

写入成功后,Nacos 会发布配置变更事件。每个节点收到事件后,会从持久化层重新加载受影响的配置,并刷新本地缓存和 dump 文件。

这意味着:

  • 持久化层是权威数据源。
  • 本地 dump 是服务端缓存,不是新的权威存储。
  • 客户端收到变更推送后,应再次查询配置内容。
  • 节点刚完成写入后,其他节点可能需要等待本地 dump 完成后才能看到最新运行时视图。

md5 和变更判断

Nacos 使用 md5 表示配置内容版本。客户端监听配置时,会比较本地持有的 md5 和服务端状态。配置发布、删除、灰度变更后,客户端收到通知,再重新查询内容。

不要把变更推送理解为完整配置内容。推送只是提醒“这个配置可能变了”。

推荐阅读