跳到主要内容
📖 本章预览

本章为预览版本,展示部分核心内容。完整内容包含详细源码解析、实战代码和面试要点,加入知识星球即可解锁全部章节。

第十章:Config 配置发布与查询

配置发布是 Config 模块最核心的写操作。本章从 gRPC 入口开始,逐行拆解发布全链路和查询责任链的底层实现。

10.1 配置发布全链路总览

客户端 SDK
│ ConfigService.publishConfig(dataId, group, content)

ConfigPublishRequest ──gRPC──→ ConfigPublishRequestHandler.handle()
│ ① @TpsControl → TPS 限流
│ ② @Secured → 鉴权
│ ③ EncryptionHandler → 加密处理

ConfigOperationService.publishConfig()

├─ 灰度发布 → publishConfigGray() → 写入灰度表
├─ CAS 校验(防并发覆盖)
├─ 写入 DB → configInfoPersistService.insertOrUpdate()
├─ 发布 ConfigDataChangeEvent
│ ├─→ DumpService → 更新 CacheItem → 推送客户端
│ └─→ AsyncNotifyService → 通知集群其他节点 Dump
└─ 返回成功

10.2 ConfigPublishRequestHandler — gRPC 入口深度分析

10.2.1 注解驱动的前置处理

@Component
public class ConfigPublishRequestHandler
extends RequestHandler<ConfigPublishRequest, ConfigPublishResponse> {

@Override
@NamespaceValidation
@TpsControl(pointName = "ConfigPublish")
@Secured(action = ActionTypes.WRITE, signType = SignType.CONFIG)
@ExtractorManager.Extractor(rpcExtractor = ConfigRequestParamExtractor.class)
public ConfigPublishResponse handle(ConfigPublishRequest request, RequestMeta meta)
throws NacosException {
// ...
}
}
注解作用失败行为
@NamespaceValidation校验 namespace 是否存在返回错误响应
@TpsControl检查限流点的 QPS返回限流响应
@Secured验证 CONFIG 的 WRITE 权限返回 403
@ExtractorManager.Extractor从请求中提取参数参数校验失败

10.2.2 加密处理 — EncryptionHandler

String encryptedDataKeyFinal = null;
if (StringUtils.isNotBlank(encryptedDataKey)) {
encryptedDataKeyFinal = encryptedDataKey;
} else {
Pair<String, String> pair = EncryptionHandler.encryptHandler(dataId, content);
content = pair.getSecond();
encryptedDataKeyFinal = pair.getFirst();
configForm.setContent(content);
}

加密通过 SPI 插件化实现,根据 dataId 后缀判断是否需要加密。


🔒 解锁完整内容

本章剩余内容需要解锁后查看

以上仅为本章部分预览内容,完整内容包含更多深度源码解析、实战代码和面试要点。

加入知识星球你将获得:

  • ✅ 全部 17 章完整内容 + 持续更新
  • ✅ 配套源码 + 实战项目
  • ✅ 一对一答疑 + 面试辅导
  • ✅ 简历优化 + 内推机会

📚 本章完整目录

以下为本章完整目录结构,加入知识星球即可解锁全部内容。

10.2.3 CAS 机制 — 防并发覆盖

10.3 ConfigOperationService.publishConfig() — 核心发布逻辑

10.4 配置查询 — 责任链模式深度分析

10.5 集群通知 — AsyncNotifyService

10.6 ConfigChangeClusterSyncRequestHandler — 接收端处理

10.7 面试热点