zoukankan      html  css  js  c++  java
  • 十九、SpringCloud Alibaba Nacos服务注册和配置中心(三) Nacos作为配置中心

    1 Nacos作为配置中心 - 基础配置

    ① 新建工程演示nacos作为服务配置中心

    clipboard


    ② pom文件

    <dependencies>
            <!--nacos-config-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            </dependency>
            <!--nacos-discovery-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
            <!--web + actuator-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <!--一般基础配置-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>


    ③ yml文件

    【注意】这里需要两个配置文件 application.yml , bootstrap.yml

    为什么需要两个配置文件?

    Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置

    之后,才能保证项目的正常启动

    SpringBoot中配置文件的加载时存在优先级顺序的,bootstrap优先级高于application


    bootstrap.yml

    # nacos配置
    server:
      port: 3377
    
    spring:
      application:
        name: nacos-config-client
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 #Nacos服务注册中心地址
          config:
            server-addr: localhost:8848 #Nacos作为配置中心地址
            file-extension: yml #指定yaml格式的配置


    application.yml

    spring:
      profiles:
        active: dev # 表示开发环境
        #active: test # 表示测试环境
        #active: info


    ④、主启动类

    @EnableDiscoveryClient
    @SpringBootApplication
    public class NacosConfigClientMain {
        public static void main(String[] args) {
            SpringApplication.run(NacosConfigClientMain.class,args);
        }
    }


    ⑤、业务类验证

    @RestController
    @RefreshScope  //支持Nacos的动态刷新功能
    public class ConfigClientController {
    
        @Value("${config.info}")
        private String configInfo;
    
        @GetMapping("/config/info")
        public String getConfigInfo(){
            return configInfo;
        }
    
    }


    ⑥、在Nacos中增加相应的配置

    clipboard

    【注意】Data ID的名称如何设置?

    ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

    prefex默认为spring.application.name

    spring.profile.active 即为当前环境对应的profile,可以通过spring.profile.active来配置

    file.exetension 为配置内容的数据格式,可以通过spring.cloud.nacos.config,file-extension来配置


    ⑦、测试

    访问http://localhost:3377/config/info,出现Nacos上配置的配置,说明Nacos成功作为配置中心

    对服务提供配置

    clipboard



    2 Nacos作为配置中心 - 分类配置

    1)Nacos作为配置中心存在的问题

    问题1:

    实际开发中通常会为一个系统准备

    dev开发环境

    test开发环境

    prod开发环境

    如何保证环境启动时服务能正确读取到 Nacos相应环境的配置文件呢


    问题2:

    一个大型的分布式微服务系统会有很多微服务子项目,

    每个微服务项目又会有相应的开发环境,测试环境,预发环境,正式环境

    那么怎么对这些微服务配置进行管理呢?


    2)Nacos的图形化管理界面

    配置管理:

    clipboard


    命名空间

    clipboard


    3)Namespace、Group 、 Data ID 三者之间的关系

    a、是什么?

    类似于java中的package名和类名,最外层的namespace是用于区分部署环境,Group 和 Data ID逻辑上区分两个目标对象


    b、三者关系

    clipboard

    默认情况:

    Namespace = public | Group = DEFAULT_GROUP | 默认Cluster是 DEFAULT


    Nacos默认的命名空间是public ,Namespace主要用来实现隔离。

    比如说我们现在有三个环境:开发、测试、生产环境,我们可以创建三个Namespace,不同的Namespace之间是隔离的

    Group默认是DEFAULT_GROUP,Group可以吧不同的微服务划分到同一个分组中

    Service就是微服务;一个Service可以包含多个Cluster,Nacos默认的Cluster是DEFAULT,Clusters是对指定微服务的一个虚拟划分。比如说为了容灾,将Service微服务分别部署在了杭州机房和广东机房

    这时可以给杭州机房的service微服务起一个集群名称HZ

    给广州机房的service微服务起一个集群名称GZ,还可以尽量让同一个机房的微服务相互调用,以提升性能


    c、如何配置 Group 和 Namespace

    clipboard

    server:
      port: 3377
    
    spring:
      application:
        name: nacos-config-client
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 #Nacos服务注册中心地址
          config:
            server-addr: localhost:8848 #Nacos作为配置中心地址
            file-extension: yaml #指定yaml格式的配置
            group: DEV_GROUP
            namespace: 7d8f0f5a-6a53-4785-9686-dd460158e5d4 #命名空间ID
  • 相关阅读:
    jQuery取得select选中的值
    超大文件上传和断点续传的组件
    局域网实现文件上传下载功能实例解析
    B/S实现文件上传下载功能实例解析
    网页实现文件上传下载功能实例解析
    VUE实现文件上传下载功能实例解析
    HTML5实现文件上传下载功能实例解析
    JavaScript实现文件上传下载功能实例解析
    JS实现文件上传下载功能实例解析
    HTML实现文件上传下载功能实例解析
  • 原文地址:https://www.cnblogs.com/houchen/p/15024310.html
Copyright © 2011-2022 走看看