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
  • 相关阅读:
    OpenCascade Ray Tracing Rendering
    Create New Commands in Tcl
    OpenCascade Modeling Algorithms Fillets and Chamfers
    OpenCascade Modeling Algorithms Boolean Operations
    Construction of Primitives in Open Cascade
    Open Cascade Data Exchange STL
    Tcl Tk Introduction
    Open Cascade DataExchange IGES
    Netgen mesh library : nglib
    Hello Netgen
  • 原文地址:https://www.cnblogs.com/houchen/p/15024310.html
Copyright © 2011-2022 走看看