Nacos源码阅读(1)-客户端模块简述

前言

关于什么是nacos可以去nacos官网看一下 https://nacos.io/zh-cn/docs/what-is-nacos.html,这篇文章的重点描述在nacos是如何实现动态配置的。

重要概念

官方概念

nameSpace:命名空间,主要应用场景是区分线上测试环境。

group:代表一组配置集,可以使用项目名当做组名。

dataId:动态配置的key。

本文中一些规定词语

ConfigKey:nameSpace+group+dataId,全局唯一表示一个动态配置的key,之后简称为key

ConfigValue:ConfigKey所对应的值,之后简称value

Config:键值对,<ConfigKey,ConfigValue>

客户端重要模块

Listener:监听器,动态配置修改后,进行回调的模块。

CacheData:Config和Listener组成。
ClientWorker:管理CacheData的模块,通过长轮询的方式从服务端获取最新的动态配置,从而更新本地的动态配置。

ConfigService:动态配置服务模块,提供给调用方的模块,提供动态配置的读,写,添加监听器等功能。

HttpAgent: 提供发起http请求的功能。

模块交互

发布动态配置

ConfigService直接将Config透传给HttpAgent发起http请求,服务端收到请求后落db。

获取动态配置

ConfigService直接将Key透传给ClientWorker,然后再透传给HttpAgent发起http请求,服务端收到请求后返回value。

  • 这里为什么要经过ClientWorker呢?
    • 从模块划分角度来看,ClientWorker管理客户端的动态配置数据
    • 由ClientWorker获取动态配置时,可以将数据存入db,这样可以在降级时使用。

 监听器的注册

ConfigService直接将Config和Listener透传给ClientWorker,ClientWorker先查找configKey是否有对应的CacheData,如果有,拿到之前注册的CacheData,并且将监听器注册到CacheData,否则新创建一个CacheData。

监听器触发回调

ClientWorker通过长轮询的方式访问服务端,如果发现服务端的动态配置有所改变,则更新本地动态配置并触发监听器。

 

posted @ 2021-01-24 20:52  刘皓lh  阅读(105)  评论(0编辑  收藏  举报