Nacos配置变更通知集群节点和客户端
2024-11-25 11:32:54 0 举报
Nacos是一款提供动态服务发现、配置管理和服务管理的中间件,可以实现集群节点和客户端之间的配置变更通知。当Nacos服务器端的配置发生变更时,它会实时地将变更通知推送到各个集群节点和客户端。这种通知机制保证了集群节点和客户端配置的一致性和实时性,提高了系统的可用性和稳定性。
作者其他创作
大纲/内容
RequestHandler
构建配置变更通知请求体ConfigChangeNotifyRequest
notifyListenConfig()
集群其他节点收到此类型请求,会进行数据同步
configChangeListenContext.getListeners(groupKey)
handleConfigDataChangeEvent()
DataChangeTask#run()
RpcPushTask#run()
保存到本地磁盘
executeAsyncRpcTask(Queue<NotifySingleRpcTask> queue)
返回 变更的配置 key 给客户端
configClusterRpcClientProxy.syncConfigChange()
handleConfigDataChange()
DumpProcessor#process()
修改配置POST /nacos/v1/cs/configs
ConfigDataChangeEvent
rpcQueue
创建 DataChangeTask
订阅事件
注册 ConfigChangeNotifyRequest 处理器
LongPollingService
客户端收到这个请求后,会重新获取配置
转存数据到本地
发送GRPC请求通知客户端配置变更
存储正式数据
ConfigChangeClusterSyncRequestHandler
监听到事件发生
memberManager.allMembersWithoutSelf()
DumpService
configInfoPersistService.insertOrUpdateCas()
更新本地缓存
长轮询服务
RpcPushService#pushWithCallback()
RpcConfigChangeNotifier
通知客户端
updateMd5()
AsyncRpcTask#run()
ConfigChangeClusterSyncRequest
ConfigController#publishConfig()
RPC 通知
DumpService#dump()
添加或更新配置到数据库
为每个成员创建通知任务
封装与 Nacos 配置服务的交互逻辑
构建集群同步请求体ConfigChangeClusterSyncRequest
创建DumpTask 任务放入任务管理器
处理此类型的请求
initRpcClientHandler()
new AsyncRpcTask(rpcQueue)
ClientWorker
ConfigOperationService#publishConfig
generateResponse()
dumpWithMd5()
sendResponse()
除自身以外的集群成员
configDataChanged()
nacos console
LocalDataChangeEvent
通知其他节点配置变更
获取配置监听者
saveToDisk()
执行任务
GRPC 请求
为每个客户端创建 RpcPushTask
遍历全部订阅者
AsyncNotifyService
push()
异步通知服务
数据存储服务
客户端
dumpFormal()
实现
发布事件通知客户端
发布配置数据变更事件
放入队列
0 条评论
下一页