微服务架构系列之Nacos 配置核心概念

nacos数据模型

核心概念

1、配置
为什么需要配置?概念。在系统开发过程中,开发者通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。
目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。
配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成。
配置变更是调整系统运行时的行为的有效手段。
2、配置管理
对配置的多维度管理。系统配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动。
3、配置项
一个键值对 Key = Value。一个具体的可配置的参数与其值域(一个键值对),通常以 param-key=param-value 的形式存在。
例如我们常配置系统的日志输出级别(logLevel=INFO|WARN|ERROR) 就是一个配置项。
4、配置集
多个键值对,一般指一个配置文件。一组相关或者不相关的配置项的集合称为配置集(多个键值对/一个配置文件)。
在系统中,一个配置文件通常就是一个配置集,包含了系统各个方面的配置。
例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。
5、配置集 ID
给这个配置文件起一个全局唯一的 ID。Nacos 中的某个配置集的 ID。
配置集 ID 是组织划分配置的维度之一。
Data ID 通常用于组织划分系统的配置集。
一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。
Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名规则保证全局唯一性。
此命名规则非强制。
6、配置分组
多个配置文件放在一起,形成组,一般用于区分项目。
例如,某学校多应用之间的区分,教师应用 TEACHER_GROUP,学生应用
STUDENT_GROUP。Nacos 中的一组配置集,是组织配置的维度之一。
通过一个有意义的字符串(如 Buy 或 Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。
当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。
配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置和 MQ_topic 配置。
7、配置快照
缓存配置信息。Nacos 的客户端 SDK 会在本地生成配置的快照。
当客户端无法连接到 Nacos Server 时,可以使用配置快照显示系统的整体容灾能力。
配置快照类似于 Git 中的本地 commit,也类似于缓存,会在适当的时机更新,但是并没有缓存过期(expiration)的概念。
8、命名空间
区分环境,比如:dev、test、prod 等等。用于进行租户粒度的配置隔离。
不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。
Namespace 的常用场景之一是不同环境的配置的区分隔离。
例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
9、最佳实践通常我们可以这样定义 Namespace,Group,DataId:
Namespace:代表不同的「环境」,如:开发、测试, 生产等;
Group:代表某个「项目」,如:XX物流项目,XX教育项目;
DataId:每个项目下往往有若干个「应用」,每个配置集(DataId)是一个应用的「主配置文件」

原理
nacos原理可以参考这篇文章

原理总结:
1、Nacos 客户端会循环请求服务端,并且超时时间设置为30s,
服务端会把请求放到一个队列中,使用延时队列来实现,延时设为客户端设置的超时时间减掉500ms,
这里为什么要减掉500ms?是服务端响应客户端时,防止客户端超时。
如果配置一直不变,那么服务端就会等到指定延时时间,然后响应客户端,
但是,当配置发生变化时,服务端就不会等待指定延时时间,而是会直接响应客户端。2、Nacos 客户端能够实时感知到服务端配置发生了变化。
实时感知是建立在客户端拉和服务端“推”的基础上,
但是这里的服务端“推”需要打上引号,因为服务端和客户端直接本质上还是通过 http 进行数据通讯的,
之所以有“推”的感觉,是因为服务端主动将变更后的数据通过 http 的 response 对象提前写入了。

搭建
本地下载和安装nacos
搭建参考这篇

nacos简介、原理和搭建相关推荐

  1. IT:前端进阶技术路线图(初级→中级→高级)之初级(研发工具/HTML/CSS/JS/浏览器)/中级(研发链路/工程化/库/框架/性能优化/工作原理)/高级(搭建/中后台/体验管理等)之详细攻略

    IT:前端进阶技术路线图(初级→中级→高级)之初级(研发工具/HTML/CSS/JS/浏览器)/中级(研发链路/工程化/库/框架/性能优化/工作原理)/高级(搭建/Node/IDE/中后台/体验管理/ ...

  2. 理解nacos 服务治理(注册中心)、Nacos简介、下载与配置持久化到Mysql

    Nacos简介 什么是Nacos Nacos致力于帮助您发现.配置和管理微服务.Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流且管理. Nacos帮助您更敏 ...

  3. 【转】ibatis的简介与初步搭建应用

    [转]ibatis的简介与初步搭建应用 一.ibatis的简介 ibatis是什么东西就不介绍了,自己去找谷老师. 这里讲下自己的使用体会.之前自己学过Hibernate,是看尚学堂的视频教学的,看完 ...

  4. 《Web安全之机器学习入门》一 2.2 TensorFlow简介与环境搭建

    2.2 TensorFlow简介与环境搭建 TensorFlow是一个采用数据流图.用于数值计算的开源软件库(见图2-5).节点在图中表示数学操作,图中的线则表示在节点间相互联系的多维数据数组,即张量 ...

  5. RxJava RxPermissions 动态权限 简介 原理 案例 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  6. DL之LSTM:LSTM算法论文简介(原理、关键步骤、RNN/LSTM/GRU比较、单层和多层的LSTM)、案例应用之详细攻略

    DL之LSTM:LSTM算法论文简介(原理.关键步骤.RNN/LSTM/GRU比较.单层和多层的LSTM).案例应用之详细攻略 目录 LSTM算法简介 1.LSTM算法论文 1.1.LSTM算法相关论 ...

  7. MongoDB 分片的原理、搭建、应用

    一.概念: 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载.基本思想就是将集合切成小块,这 ...

  8. TensorFlow2.0(一)--简介与环境搭建

    简介与环境搭建 1. TensorFlow是什么 2. TensorFlow1.0与2.0架构 3. TensorFlow环境配置 1. TensorFlow是什么 TensorFlow是Google ...

  9. springBoot(1)---简介与环境搭建

    一.springBoot简介与环境搭建 目录 前言:学习计划 1.springBoot环境搭建 2.springBoot入门 3.srpingBoot整合Mybatis 4.springBoot整合R ...

  10. Redis集群的原理和搭建

    Redis集群的原理和搭建 前言 Redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得到了广泛的使用.单节点的Redis已经就达到了很高的性能,为了提高可用性我们可以使用Re ...

最新文章

  1. c语言lookup用法,Vlookup函数最经典的12种用法 果断收藏!
  2. HTTP长连接和短连接以及推送服务原理(转)
  3. 一行代码集成带负数的自定义键盘
  4. C语言用‘%20‘替换字符串中的所有空格的算法(附完整源码)
  5. 图片添加对话气泡app_刘雨昕、谢可寅、虞书欣代言农夫山泉TOT气泡饮
  6. SSM:出现Connections could not be acquired from the underlying database异常的解决
  7. 有了这个数据强一致“利器”,DBA们轻松修复数据对加班“say no”
  8. 从零开始学前端:列表标签 --- 今天你学习了吗?(CSS:Day06)
  9. springcloud工作笔记106---eureka实现服务监控_监控服务下线_服务注册_服务续约_判断注册中心可用_监控eurekaserver启动
  10. XCode各种告警处理
  11. 新编密码学——分组密码
  12. python牛顿法寻找极值_牛顿法求极值及其Python实现
  13. 中国电信物联网平台入门学习笔记7:NB-IOT信号如何检测
  14. python表格绘制斜线表头_【Excel系列05】表格中如何制作斜线表头
  15. 2018 抖音热门歌曲大全
  16. 解压ubi文件_挂载ubi根文件系统
  17. 使用J-Flash烧录固件
  18. 微信授权登录接口合集
  19. java go to语句_Java用()来实现go to语句所特有的一些功能。A.breakB.defaultC.contin...
  20. Creo 3.0-7.0 安装说明

热门文章

  1. 44-【kubernetes】kubernetes集群中,如何安装weave命令+如何安装weave插件+如何修改weave的默认网段(10.32.0.0/12)
  2. mysql 整型默认值,MySQL表字段设立默认值
  3. Python 基础 第五天
  4. HQChart使用教程82-动态修改叠加指标参数
  5. OSG动画库Animation解析(一)
  6. C++:关于函数句柄含义的解释
  7. 网站搭建:从零搭建个人网站教程(2)
  8. wireshark教程
  9. 百度出品,Nature重磅 -- 优化的mRNA设计算法可改善mRNA的稳定性和免疫原性
  10. nova VirtualInterfaceCreateException (by quqi99)