ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

十九、SpringCloud Alibaba Nacos服务注册和配置中心(三) Nacos作为配置中心

2021-07-17 17:33:04  阅读:104  来源: 互联网

标签:spring 配置 Nacos Alibaba nacos SpringCloud config cloud


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

标签:spring,配置,Nacos,Alibaba,nacos,SpringCloud,config,cloud
来源: https://www.cnblogs.com/houchen/p/15024310.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有