Spring-Cloud-Alibaba Nacos服务注册中心与配置中心

Nacos服务注册中心基本配置

  1. 添加 Nacos服务注册中心依赖
        <!-- nacos 服务注册  -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
  1. 下载运行nacos服务中心,在application.yml中配置服务名称和nacos服务中心地址
spring:
  application:
    name: gulimall-coupon                         #服务名称
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848               #nacos 服务地址
  1. 在需要加入服务注册中心的主启动类上添加注解 @EnableDiscoveryClient
//开启服务注册发现
@EnableDiscoveryClient
@MapperScan("com.fj.gulimall.coupon.dao")
@SpringBootApplication
public class CouponApplication {

    public static void main(String[] args) {
        SpringApplication.run(CouponApplication.class, args);
    }
}
4. 启动各个微服务,访问Nacos服务注册中心 localhost:8848/nacos查看各个微服务情况
默认登录名密码都为nacos

Nacos配置中心基本配置

  1. 添加 Nacos配置中心依赖
        <!-- nacos 配置中心    -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
  1. 在需要使用nacos配置中心的微服务模块下新建bootstrap.properties(或bootstrap.yml)文件,这个配置文件在springboot项目启动的时候会优先加载。在这个文件中配置nacos的服务地址和当前服务的名称。
spring:
  application:
    name: gulimall-couon              #服务名称
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848  #配置中心地址
  1. 在当前微服务的yml或properties配置文件中配置信息一个用户信息
couponuser:
  name: 小明
  age: 18
  1. 在需要使用的地方使用Spring的@Value注解进行赋值,并且在当前类上添加注解@RefreshScope,日后项目上线运行需要更改配置时,只需要在Nacos配置中心更改即可
    @Value("${couponuser.name}")
    private String name;

    @Value("${couponuser.age}")
    private Integer age;

image

  1. 如果是多个环境就通过namespace来指定加载哪一个环境的配置,默认是public。
spring:
  application:
    name: gulimall-coupon
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        namespace: df44c5c3-0256-485c-99c1-5b1e6dc4bef3

image

Nacos配置中心的命名空间和分组的使用

  1. 在分布式微服务项目中一般每个模块会有相应的配置,即application.yml中的内容。使用Nacos配置中心的分组和命名空间可以将各个模块的配置内容进行隔离,做到每个服务有自己配置命名空间,每个命名空间又可以有个多个分组。而每一个分组又可以再拆分成多个部分的配置,例如数据源相关配置,SSM框架相关配置以及其他配置。

  2. 利用这一点可以使每个服务的配置都放在一个命名空间中,每个命名空间又分为dev分组、test分组、prod分组。其实就和本地一样做了环境隔离。但是相比本地优势在于能够动态更改所有的配置内容

  3. 针对多个服务的配置,将coupon模块的bootstrap.propertis文件内容修改如下:

spring.application.name=gulimall-coupon

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=3705896a-eaea-4ac1-91f8-78023e9561df
spring.cloud.nacos.config.group=dev

spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=true

spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
spring.cloud.nacos.config.ext-config[1].refresh=true

spring.cloud.nacos.config.ext-config[2].data-id=orther.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true

把原本的application.yml配置文件拆分成了三个部分,一部分是数据源配置datasource.yml,一部分是mybatis相关配置mybatis.yml,另外一部分是其他相关配置other.yml。此配置文件主要是让当前模块启动的时候去nacos配置中心加载这几个配置文件。
4. Nacos配置中心响应的内容如下:

  • 先给对应模块创建各自的命名空间
    image
  • 在配置列表中给对应的模块添加相应配置文件,配置文件给出相应的分组即可
    image
    这样就可以直接删掉coupon模块中的application.yml文件了,模块的所有配置都在这里动态管理,其他模块也是同理。
posted @ 2022-07-17 20:50  加瓦同学  阅读(82)  评论(0编辑  收藏  举报