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

     

  • 相关阅读:
    服务器时间同步
    DataX部署安装
    Mysql ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction 解决方法
    mysql 使用需要注意的问题
    利用mysqldump 将一个表按条件导出数据
    mysql存储引擎分类
    MySQL数据备份之mysqldump使用
    count(1)、count(*)与count(列名)的执行区别
    rsync + sersync 实现实时数据同步
    ipmitool 工具使用
  • 原文地址:https://www.cnblogs.com/zhandouBlog/p/14322252.html
Copyright © 2011-2022 走看看