182 Nacos分布式配置中心

Nacos分布式配置中心

    • 1 分布式配置中心
      • 1.1 什么是分布式配置中心
    • 2 技术选型对比
    • 3 Nacos配置中心使用
      • .3.1 整合Nacos配置中心
      • 3.2 基本使用

1 分布式配置中心

1.1 什么是分布式配置中心

? 在微服务架构下,每个服务都会都会有自己的配置文件,此时传统的配置文件方式则会造成诸多问题:

时效性:修改配置,需要重启服务才能生效。
局限性:无法支持动态调整,如服务地址修改。
因此,分布式配置中心应运而生。其为所有的微服务提供了一个中心化的外部配置环境, 服务的配置信息都可以存放到分布式配置上,从而解决如上的诸多问题。

在这里插入图片描述

2 技术选型对比

? 现在市面上对于分布式配置中心的实现有很多种,如SpringCloud的Bus+Config、携程的Apollo、百度的Disconf、XXL-Conf、Zookeeper、阿里的Nacos等等。

? 他们各自都有一些各自的特点,其中最为活跃和主流的当属:携程的Apollo阿里的Nacos。由于当前项目已经整合了Nacos,所以此处讲解Nacos作为分布式配置中心的使用。

3 Nacos配置中心使用

.3.1 整合Nacos配置中心

1)修改用户服务pom文件,添加nacos配置中心依赖

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

2)修改consumer-service的bootstrap.yaml文件,添加配置中心Nacos的地址

spring:
  application:
    name: user-service

  cloud:
    nacos:
      discovery:
        server-addr: 192.168.200.150:8848 # nacos服务地址
      config:
        server-addr: 192.168.200.150:8848 # nacos配置中心地址
        file-extension: yaml

3.2 基本使用

1)nacos配置中心新建配置文件

规范如下:

配置文件名称:默认和 spring.application.name一致 。
文件后缀:nacos支持六种文件格式。分别为:TEXT、JSON、XML、YAML、HTML、Properties。默认是 properties,当项目指定后缀名,则同项目中一致。

新建配置:

company: it

在这里插入图片描述

2)修改UserController,获取配置中心内容

@Value("${company}")
private String companyName;

@RequestMapping("/hello")
public String hello(){
    return "hello user service,company : "+companyName;
}

3)测试访问用户服务hello接口

不同的命名空间下,可以存在相同名称的配置分组(Group) 或 配置集。

最佳实践

Nacos抽象定义了Namespace、Group、Data ID的概念,具体这几个概念代表什么,取决于我们把它们看成什么,这里推荐一种用法,如下:

Namespace:代表不同环境,如开发、测试、生产环境。

Group:代表某项目,如XX医疗项目、XX电商项目

DataId:每个项目下往往有若干个工程,每个配置集(DataId)是一个工程的主配置文件