ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-01-24 21:04:35  阅读:346  来源: 互联网

标签:模块 ClientWorker 配置 Nacos 源码 监听器 CacheData 动态 客户端


前言

关于什么是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通过长轮询的方式访问服务端,如果发现服务端的动态配置有所改变,则更新本地动态配置并触发监听器。

 

标签:模块,ClientWorker,配置,Nacos,源码,监听器,CacheData,动态,客户端
来源: https://www.cnblogs.com/zhandouBlog/p/14322252.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有