接着上一篇的【springcloud alibaba】注册中心之nacos,这一篇主要讲nacos的配置中心能力。nacos的集群部署及持久化请看上一篇

--------------------------------------------------目录-----------------------------------------------

1.微服务配置中心是什么

2.微服务为什么配置中心

  2.1 传统项目中的配置处理,一般可能存在的问题

  2.2 微服务配置中心

3.常见的微服务中心对比

4.nacos配置中心的使用

5.如何技术选型

6.nacos配置中心原理

--------------------------------------正文 -----------------------------------------------

1.微服务配置中心是什么

  「配置中心」,顾名思义,就是用来统一管理微服务项目中所有配置的系统。一个规范和成熟互联网研发团队,微服务项目中多般使用到配置中心。

2.微服务为什么配置中心

  2.1 传统项目中的配置处理,一般可能存在的问题

    2.1.1 静态化配置。这种做法虽然简单,但如果参数需要修改,就非常的不灵活,甚至需要重启运行中的项目才能生效。
    2.1.2 配置文件无法区分环境。(springboot项目profile支持环境区分)
    2.1.3 配置文件过于分散。如果一个项目中存在多个逻辑模块独立部署,每个模块所使用的配置内容又不相同,传统的做法是会在每一个模块中都放一个配置文件,甚至不同模块的配置文件格式还不一样。那么长期的结果就是配置文件过于分散混乱,难以管理。
    2.1.4 配置修改无法追溯。(配置放在代码中,通过git/svn提交记录可追溯)

  2.2 微服务配置中心 

    「配置中心」的思路就是把项目中各种配置、各种参数、各种开关,全部都放到一个集中的地方进行统一管理,并提供一套标准的接口。
    简单来说:
      当各微服务应用需要加载配置信息时(例:启动时),会到配置中心获取「配置中心」中的配置信息;
      当需要实时更新运行中的应用的配置时,在置配中心更新对应微服务应用的配置,之后或通过配置中心将配置的变更信息推送给微服务应用,或微服务应用主动到配置中心拉取变更的配置信息。
      即能做到不停机动态变更配置信息。

  即:微服务配置中心能提高配置的安全性(一些敏感信息不需要放在代码的配置文件中),能支持实时修改,不需要重启应用;

3.常见的微服务中心对比

  对比源自:深度对比三种主流微服务配置中心

  功能特性对比总结

  这里列一个表格总结一下三个产品的功能特点:

  

4.nacos配置中心的使用

  4.1 nacos配置中心核心概念

    参考自:https://zhuanlan.zhihu.com/p/165539448

    官网wiki: https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config

    

    配置集

    多个键值对,一般指一个配置文件。

    一组相关或者不相关的配置项的集合称为配置集(多个键值对/一个配置文件)。在系统中,一个配置文件通常就是一个配置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。

    配置集id

    给这个配置文件起一个全局唯一的 ID。

    Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data ID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名规则保证全局唯一性。此命名规则非强制。

    配置分组

    多个配置文件放在一起,形成组,一般用于区分项目。

    Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或 Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置和 MQ_topic 配置。

    配置快照

    缓存配置信息。

    Nacos 的客户端 SDK 会在本地生成配置的快照。当客户端无法连接到 Nacos Server 时,可以使用配置快照显示系统的整体容灾能力。配置快照类似于 Git 中的本地 commit,也类似于缓存,会在适当的时机更新,但是并没有缓存过期(expiration)的概念。

    命名空间

    用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。

  4.2 nacos客户端配置及使用
    首先,启动上一篇部署好的nacos集群,并进行登陆,默认账号/密码为:nacos/nacos

    创建测试项目如:

    

    引入spring-cloud-starter-alibaba-nacos-config 的starter.

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

    在运行此 Example 之前, 必须使用 bootstrap.properties 配置文件来配置Nacos Server 地址,例如:

    bootstrap.properties  
spring.application.name=nacos-config-client
spring.cloud.nacos.config.server-addr=120.79.7.7:8888

    启动类: 

/**
* @author wjqhuaxia
* @create 2020-12-28 23:26
*/
@SpringBootApplication
public class ProviderApplication { public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(ProviderApplication.class, args);
String userName = applicationContext.getEnvironment().getProperty("user.name");
String userAge = applicationContext.getEnvironment().getProperty("user.age");
System.err.println("user name :"+userName+"; age: "+userAge);
}
}

    在nacos配置管理中添加nacos-config-client.properties文件

   启动测试项目,项目启动时默认加载项目名.properties文件,例:nacos-config-client.properties

  获取配置中心的数据项:

  4.3 nacos实用配置方式

  

  或者也可以使用namespace区分不同项目,使用group区分不同环境。

5.如何技术选型

  理解需求、技术特点是技术选型的首要任务

  配置中心的维度(是否具备以下能力):
    1.配置集中管理:分布式配置中心最基础的要求
    2.配置实效性:配置的修改实时生效要求
    3.安全性:应用和配置的管理具有完善的权限管理机制,并且新增编辑和发布环节,尽量减少了人工误操作发生的概率,所有的操作都有审计日志,方便追踪
    4.配置修改简单:提供的图形化界面形式的配置管理
    5.部署简单:依赖非常少
    6.开源:源码的重要性不言而喻,无论是解决问题、扩展新功能、或者后期代替官方渠道进而形成满足自身特定需求的版本
    7.版本发布管理:所有的配置发布都有版本概念,从而可以方便地支持配置的回滚
    8.灰度发布:支持配置的灰度发布,比如点了发布后,只对部分应用实例生效,等观察一段时间没问题后再推给所有应用实例
    9.权限管理、发布审核、操作审计:
      应用和配置的管理都有完善的权限管理机制,对配置的管理还分为了编辑和发布两个环节,从而减少人为的错误。
      所有的操作都有审计日志,可以方便地追踪问题
    10.提供开放平台API

6.nacos配置中心原理

  https://www.cnblogs.com/jsjwk/p/10880671.html

参考:

  https://blog.csdn.net/crave_shy/article/details/81285217

  https://www.cnblogs.com/jsjwk/p/10880671.html

  http://www.360doc.com/content/19/0403/17/99071_826205359.shtml

  http://blog.didispace.com/spring-cloud-alibaba-3/

【springcloud alibaba】配置中心之nacos的更多相关文章

  1. 七、springcloud之配置中心Config(二)之高可用集群

    方案一:传统作法(不推荐) 服务端负载均衡 将所有的Config Server都指向同一个Git仓库,这样所有的配置内容就通过统一的共享文件系统来维护,而客户端在指定Config Server位置时, ...

  2. SpringCloud 分布式配置中心

    SpringCloud 分布式配置中心 服务端 创建工程并完善结构 国际惯例,把maven工程创建完善 pom.xml <?xml version="1.0" encodin ...

  3. SpringCloud分布式配置中心Config

    统一管理所有配置. 1.微服务下的分布式配置中心 简介:讲解什么是配置中心及使用前后的好处 什么是配置中心: 一句话:统一管理配置, 快速切换各个环境的配置 相关产品: 百度的disconf 地址:h ...

  4. springcloud alibaba-nacos配置中心

    nacos除了充当注册中心外,还能作为配置中心,下面进行演示. 1. 创建 模块,用于读取 nacos配置中心的统一配置 2. 添加依赖 <dependencies> <!-- na ...

  5. SpringCloud服务配置中心

    SpringCloud Config简介 Spring Cloud Config 是 Spring Cloud 团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持 ...

  6. 二十、springcloud(六)配置中心服务化和高可用

    1.问题描述 前一篇,spring-cloud-houge-provider(称之为客户端)直接从spring-cloud-houge-config(称之为服务端)读取配置,客户端和服务端的耦合性太高 ...

  7. 十九、springcloud(五)配置中心本地示例和refresh

    1.创建spring-cloud-houge-config子项目,测试需要的项目入下 2.添加依赖 <dependency> <groupId>org.springframew ...

  8. 六、springcloud之配置中心Config

    一.配置中心提供的核心功能 Spring Cloud Config为服务端和客户端提供了分布式系统的外部化配置支持.配置服务器为各应用的所有环境提供了一个中心化的外部配置.它实现了对服务端和客户端对S ...

  9. 微服务SpringCloud之配置中心和消息总线

    在微服务SpringCloud之Spring Cloud Config配置中心SVN博客中每个client刷新配置信息时需要post请求/actuator/refresh,但客户端越来越多时,,需要每 ...

随机推荐

  1. JM操作数据库

    [前言] 为什么要去直连数据库,去操作数据库? 因为在我们做自动化的时候,或者在大批量准备数据的时候,自动化的时候有时候会生成很多条页面上,接口上无法删除的数据,那么就很有很多的测试数据遗留在系统上, ...

  2. C语言:char[]操作

    C语言中char[]的操作函数1.赋值操作在C语言中,char型数组是不可以直接赋值的.例如在如下的代码中,会得到错误: char c1[20] = "women";char c2 ...

  3. 深度学习之逻辑回归的实现 -- sigmoid

    1 什么是逻辑回归 1.1逻辑回归与线性回归的区别: 线性回归预测的是一个连续的值,不论是单变量还是多变量(比如多层感知器),他都返回的是一个连续的值,放在图中就是条连续的曲线,他常用来表示的数学方法 ...

  4. Java基础00-基础语法3

    1. 注释 1.1 注释概述 1.2 注释分类 1.3 示例 2. 关键字 2.1 关键字概述 2.2 关键字的特点 3. 常量 3.1 常量的概述 3.2 常量分类 以上常量除了空常量都是可以直接输 ...

  5. File类与常用IO流第八章——缓冲流

    第八章.缓冲流 缓冲流概述 缓冲流,也叫高效流,是对4个基本的FileXxx流的增强.按照数据类型分为4类:   输入缓冲流 输出缓冲流 字节缓冲流 BufferedInputStream Buffe ...

  6. Python高阶之多线程锁机制

    '''1.多进程的优势:为了同步完成多项任务,通过提高资源使用效率来提高系统的效率.2.查看线程数:threading.enumerate()函数便可以看到当前线程的数量.3.查看当前线程的名字:th ...

  7. PAT乙级:1077 互评成绩计算 (20分)

    PAT乙级:1077 互评成绩计算 (20分) 在浙大的计算机专业课中,经常有互评分组报告这个环节.一个组上台介绍自己的工作,其他组在台下为其表现评分.最后这个组的互评成绩是这样计算的:所有其他组的评 ...

  8. Linux CentOS 7 在Apache服务器上安装SSL证书

    在开发微信小程序的时候,wx.request请求的地址必须是https的,所以只能重新配置服务器. 域名和服务器都是在阿里云上买的,系统是CentOS7,安装了Apache服务器.网上也找了一下,很多 ...

  9. 医疗器械软件产品经理必读的法规及标准-YY/T0664(二)

    上节主要讲了软件开发策划.软件需求分析.软件系统结构设计三个阶段,这节来分析以下几个阶段. 1.软件单元实现 2.软件集成和集成测试 3.软件系统测试 软件开发过程由若干个活动组成,主要包括软件开发策 ...

  10. 每天五分钟Go - 常量

    常量的声明 常量使用const进行对不会被改变值的修饰符 const 常量名 [常量类型] = 常量值,和变量的声名一样可以省略类型 const a=1 const b="a" c ...