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

     

  • 相关阅读:
    序列、元组、列表(基本的增、删、改、查)
    Python基础运算符(算数、比较、赋值、逻辑、成员)
    2015年9月14日记事
    2014年3月31日梦
    华为S5700系列交换机配置文件导出、导入
    C语言单链表简单实现(简单程序复杂化)
    北邮《大学英语2》第三次阶段作业带答案
    C++走向远洋——30(六周,项目一1.0)
    C++走向远洋——29(长方柱类)
    C++走向远洋——28(项目三,时间类,2)
  • 原文地址:https://www.cnblogs.com/zhandouBlog/p/14322252.html
Copyright © 2020-2023  润新知