Nacos - 配置管理

笔记翻译出处:黑马Nacoshttps://www.bilibili.com/video/BV1VJ411X7xX?p=17&spm_id_from=333.880.my_history.page.click&vd_source=3c0d9a4d48df5bf76352d1653111b1d7

一、配置中心

1、简述

        配置中心一般用于微服务中,当单一系统被拆分成分布式系统上的一个个服务节点之后,系统的配置文件也需要被拆分。配置中心就是将配置文件从系统中分离出来,对系统配置进行统一的管理,并且系统配置远程被修改后,应用还可以主动获取修改后的配置内容,应用自身不需要自己去管理系统配置。
        简单来说,就是把Springboot的yml等配置文件放在远程管理,由Springboot主动获取。

Nacos - 配置管理_第1张图片

2、特性

1)配置特点

配置特点 描述
1 配置是独立于程序的只读变量 读取配置来改变自己的行为
2 配置伴随应用的整个生命周期 配置贯穿应用整个生命周期
3 配置可以有多种加载方式 可通过配置文件、环境变量、启动参数、数据库等方式加载
4 配置需要治理 区分开发、测试、生产;区分不同的集群

2)配置中心特性 

配置中心特性
1 配置项容易读取和修改
2 分布式环境下应用配置的可管理性,即提供远程管理配置的能力
3 致辞对配置的修改的检视以把控风险
4 可以查看配置修改的历史记录
5 不同部署环境下应用配置的隔离性

二、Nacos

1、Nacos简介

        Nacos致力于帮助您发现、配置和管理微服务。它是阿里的一个开源产品,是针对微服务架构中的服务发现,配置管理,服务治理的综合型解决方案,能帮助更加敏捷和容易地构建、交付和管理微服务平台。

2、Nacos特性

Nacos特性 描述
1 服务发现与服务健康检查 更容易注册,通过DNS或HTTP接口发现服务;实时对服务进行健康检查
2 动态配置管理 消除了在更新配置时重新部署应用程序,这使配置的更新更加高效和灵活
3 动态DNS服务 提供基于DNS协议的服务发现能力,旨在支持异构语言的服务发现
4 服务和元数据管理 可以从微服务平台视角,管理数据中心的所有服务及元数据

3、配置中心对比

对比项目 Spring Cloud Config Apollo Nacos
配送实时推送 支持(Spring Cloud Bus) 支持(HTTP长轮询1S内) 支持(HTTP长轮询1S内)
版本管理 支持(Git) 支持 支持
配置回滚 支持(Git) 支持 支持
灰度发布 支持 支持 不支持
权限管理 支持(依赖Git) 支持 不支持
多集群 支持 支持 支持
多环境 支持 支持 支持
监听查询 支持 支持 支持
多语言 支持Java 主流语言,Open API 主流语言,Open API
配置格式校验 不支持 支持 支持
单机读(QPS) 7(限流所致) 9000 15000
单机写(QPS) 5(限流所致) 1100 1800
3节点读(QPS) 21(限流所致) 27000 45000
3节点写(QPS) 5(限流所致) 3300 5600

三、Nacos快速入门

1、安装包

nacos-server-1.1.4https://www.aliyundrive.com/s/2cUubQYMSX9

2、启动服务器

Nacos - 配置管理_第2张图片

 3、界面访问

本地地址 http://127.0.0.1:8848/nacos/index.html
账号密码 账号:nacos 密码:nacos
Nacos - 配置管理_第3张图片

4、OPEN API 配置管理测试

1)用ApiPost或者Postman发布配置请求

127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld
Nacos - 配置管理_第4张图片

2)界面查看配置

Nacos - 配置管理_第5张图片

5、Nacos连接外部Mysql存储

        单机模式下,Nacos默认使用嵌入式数据库实现数据的存储,若想使用外部Mysql存储Nacos数据,需要进行以下步骤:

1)安装数据库

        MySQL:5.6.5+,MySQL 8 以下

2)初始化数据库

初始化MySQL数据库名,将nacos-mysql.sql导入

Nacos - 配置管理_第6张图片

Nacos - 配置管理_第7张图片

3)修改配置文件application.properties

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=

Nacos - 配置管理_第8张图片

四、Nacos配置入门

1、发布配置[界面操作]

Nacos - 配置管理_第9张图片

Nacos - 配置管理_第10张图片

Nacos - 配置管理_第11张图片2、Nacos客户端获取配置[入门]

1)新建Maven项目

Nacos - 配置管理_第12张图片

2)pom文件



    4.0.0

    com.dgs
    Nacos01
    1.0-SNAPSHOT

    
        8
        8
    

    
        
            com.alibaba.nacos
            nacos-client
            1.1.3
        
    

五、Nacos配置管理模型

        对于Nacos配置管理,通过Namespace、group、Data ID 能够定位到一个配置集

Nacos - 配置管理_第13张图片

配置集(Data ID)

        在系统中,一个配置文件通常就是一个配置集,一个配置集可以包含了系统的各种配置信息,例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。每个配置集都可以定义一个意义的名称,就是配置集的ID,即Data ID。

配置项(配置内容)

        配置集中包含的一个个配置内容就是配置项。它代表一个具体的可配置的参数与其值域,通常以key=value的形式存在。例如我们常配置系统的日志输出级别(logLevel=INFO|WARN|ERROR)就是一个配置项。

配置分组(Group)

        配置分组是对配置集进行分组,通过一个有意义的字符串(如Buy或Trade)来表示,不同的配置分组下可以有相同的配置集(Data ID)。当您再Nacos上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用DEFAULT_GROUP。配置分组的常见场景:可用于区分不同的项目或应用。

命名空间(Namespace) 

        命名空间(namespace)可用于进行不同环境的配置隔离。例如可以隔离开发环境、测试环境和生产环境,因为他们的配置可能各不相同,或者是隔离不同的用户,不同的开发人员使用同一个Nacos管理各自的配置,可通过哟namespace隔离,不同的命名空间下,可以存在相同名称的配置分组(Group)或配置集。

六、Nacos配置管理应用于分布式系统

1、微服务架构

        将应用分解为小的、相互连接的微服务,避免了开发一个巨大的单体式的应用,而是将应用分解为小的、互相连接的微服务。

        一个微服务一般完成某个特定的功能,比如订单服务、用户服务等等。每一个微服务都是完整应用,都有自己的业务逻辑和服务

2、分布式应用配置管理

Nacos - 配置管理_第14张图片

  • 用户通过Nacos Server的控制台集中对多个服务的配置进行管理。
  • 各服务统一从Nacos Server中获取各自的配置,并监听配置的变化。

3、Nacos整合Springboot

1)新增命名空间dev 

Nacos - 配置管理_第15张图片Nacos - 配置管理_第16张图片

2)在dev命名空间发布两个配置

Nacos - 配置管理_第17张图片① Nacos1.yamlNacos - 配置管理_第18张图片②Nacos2.yamlNacos - 配置管理_第19张图片

3)创建Maven父工程

Nacos - 配置管理_第20张图片Nacos - 配置管理_第21张图片

Nacos - 配置管理_第22张图片

4)Maven版本配置

Nacos - 配置管理_第23张图片

5)Maven父工程添加pom依赖



    4.0.0

    com.dgs
    NacosTest
    1.0-SNAPSHOT
    pom

    
        8
        8
        UTF‐8
        UTF‐8
    
    
        
            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                2.1.0.RELEASE
                pom
                import
            

            
                org.springframework.cloud
                spring-cloud-dependencies
                Greenwich.SR3
                pom
                import
            
            
                org.springframework.boot
                spring-boot-dependencies
                2.1.3.RELEASE
                pom
                import
            
        
    
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

6)新建子工程Nacos1

Nacos - 配置管理_第24张图片

 Nacos - 配置管理_第25张图片

Nacos - 配置管理_第26张图片

7)子工程Nacos1添加pom依赖



    
        NacosTest
        com.dgs
        1.0-SNAPSHOT
    
    4.0.0

    Nacos1

    
        8
        8
    
    
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        
        
            org.springframework.boot
            spring-boot-starter-web
        
    


8)Nacos1子工程,新增配置文件

Nacos - 配置管理_第27张图片

9)Nacos1子工程,添加Springboot启动类 

Nacos - 配置管理_第28张图片

10)Nacos1子工程,添加Controller,获取远程Nacos配置文件内容 

Nacos - 配置管理_第29张图片

11)启动测试

Nacos - 配置管理_第30张图片

12)新增子工程Nacos2,同Nacos1

13)新增子工程Nacos2的配置文件

Nacos - 配置管理_第31张图片

14)新增子工程Nacos2启动类

Nacos - 配置管理_第32张图片

15)Nacos2子工程,添加Controller,获取远程Nacos配置文件内容 

Nacos - 配置管理_第33张图片

16)启动测试

Nacos - 配置管理_第34张图片

4、自定义扩展的 Data Id 配置 

Spring Cloud Alibaba Nacos Config 可支持自定义的Data Id 的配置。

通过自定义扩展的 Data Id 配置,既可以解决多个应用间配置共享的问题,又可以支持一个应用有多个配置文件。

spring:
  application:
    name: service2
  cloud:
    nacos:
      config:
        server‐addr: 127.0.0.1:8848
        # config external configuration
        # 1、Data Id 在默认的组 DEFAULT_GROUP,不支持配置的动态刷新
        ext‐config[0]:
          data‐id: ext‐config‐common01.properties
        # 2、Data Id 不在默认的组,不支持动态刷新
        ext‐config[1]:
          data‐id: ext‐config‐common02.properties
          group: GLOBALE_GROUP
        # 3、Data Id 既不在默认的组,也支持动态刷新
        ext‐config[2]:
          data‐id: ext‐config‐common03.properties
          group: REFRESH_GROUP
          refresh: true
  • 通过spring.cloud.nacos.config.ext-config[n].data-id 的配置方式来支持多个Data Id的配置
  • 通过spring.cloud.nacos.config.ext-config[n].group 的配置方式自定义Daya Id 所在的租,默认DEFAULT_GROUP
  • 通过spring.cloud.nacos.config.ext-config[n].refresh的配置方式来控制该Data Id 在配置变更时,是否支持应用中科动态刷新,感知到最新的配置值。默认是不支持

5、自定义共享 Data Id 配置

spring:
  cloud: 
    nacos: 
      config: 
        shared‐dataids: ext‐config‐common01.properties,ext‐config‐common02.properties 
          refreshable‐dataids: ext‐config‐common01.properties
  • 通过spring.cloud.nacos.config.shared-dataids 来支持多个共享Data Id的配置,多个之前用逗号隔开。
  • 通过spring.cloud.nacos.config.refreshable-dataids 来支持哪些共享配置的Data Id 在配置变化时,应用中是否可动态刷新,感知到最新的配置值,多个Data ID 之间用逗号隔开。如果没明确配置,默认都不支持动态刷新
  • 它把group固定为DEFAULT_GROUP

6、配置优先级

A、通过内部相关规则(应用名、扩展名) 自动生成相关的Data Id配置

B、多个扩展Data Id

C、多个共享Data Id

A>B>C

你可能感兴趣的:(Nacos,java,开发语言)