SpringCloud Alibaba Nacos--下

SpringCloud Alibaba Nacos-下

Nacos 配置中心实例

示意图

SpringCloud Alibaba Nacos--下_第1张图片

在Nacos Server 加入配置

  1. 进入到Nacos Server
  2. 加入配置, 特别提醒: 文件后缀.yaml 别忘了.

SpringCloud Alibaba Nacos--下_第2张图片

Data ID: e-commerce-nacos-config-client-dev.yaml

SpringCloud Alibaba Nacos--下_第3张图片

SpringCloud Alibaba Nacos--下_第4张图片

创建Nacos 配置客户端模块e-commerce-nacos-config-client5000

创建Module

先创建e-commerce-nacos-config-client5000 模块,参考以前的方法

修改pom.xml

    
    <dependencies>

        
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
        dependency>

        
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>



        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-actuatorartifactId>
        dependency>


        
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <optional>trueoptional>
        dependency>

        
        <dependency>
            <groupId>com.hspedu.springcloudgroupId>
            <artifactId>e_commerce_center-common-apiartifactId>
            <version>${project.version}version>
        dependency>

    dependencies>

创建application.xml

spring:
  profiles:
    active: dev #指定环境,常见的环境有 dev开发/test测试/prod生产

创建bootstrap.yml

  1. nacos 配置客户端/当前的微服务模块, 会根据配置,找到配置中心的数据(配置文件)

  2. config.server-addr: localhost:8848 可以找到配置中心

  3. spring.application.name 对应是DataId e-commerce-nacos-config

  4. 在application.yml: 配置 spring.profiles.active dev

  5. spring.cloud.nacos.config.file-extension 配置文件的扩展名 .yaml

  6. 小结: 根据配置 就是 到 localhost:8848 下的 e-commerce-nacos-config-dev.yaml 获取配置信息/数据

  7. 规则就是: s p r i n g . a p p l i c a t i o n . n a m e − {spring.application.name}- spring.application.name{spring.profiles.active}.${spring.cloud.nacos.config.file-extension}来定位配置中心的 Data ID

server:
  port: 20000 #端口

spring:
  application:
    #这里的name需要参考nacos 配置中心的Data Id
    name: e-commerce-nacos-config-client
  #配置nacos
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #服务注册中心地址
      config:
        server-addr: localhost:8848 #配置中心地址
        file-extension: yaml #指定yaml格式的配置

创建主启动类NacosConfigClientApplication5000

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

业务类创建NacosConfigClientController

@RestController
@Slf4j
@RefreshScope //spring cloud原生注解,实现了配置数据的自动刷新
public class NacosConfigClientController {

    /**
     * 1. client 会拉取nacos server 的 e-commerce-nacos-config-client-dev.yaml
     * config:
     *     ip: "122.22.22.22"
     *     name: "大家好"
     * 2. @Value("${config.ip}") 会将 config.ip 赋给  configIp
     * 3. 这里${config.ip} 不能乱写,要有依据
     */
    @Value("${config.ip}")
    private String configIp;

    @Value("${config.name}")
    private String configName;

    @GetMapping("/nacos/config/ip")
    public String getConfigIp() {
        return configIp;
    }
    @GetMapping("/nacos/config/name")
    public String getConfigName() {
        return configName;
    }
}

测试

1 启动Nacos Server
2 启动e-commerce-nacos-config-client5000
3 浏览器: http://localhost:5000/nacos/config/ip

SpringCloud Alibaba Nacos--下_第5张图片

注意事项和细节

  1. NacosConfigClientController.java 的@Value(“${config.ip}”), 是import org.springframework.beans.factory.annotation.Value;而不是lombok 包下的.

  2. 配置文件application.yml 和bootstrap.yml 结合会得到配置文件/资源的地址

  3. 参考文档: https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

SpringCloud Alibaba Nacos--下_第6张图片

  1. 注意在Nacos Server 的配置文件的后缀是.yaml , 而不是.yml

  2. 在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动, 也就是说如果项目不能正确的获取到Nacos Server 的配置数据,项目是启动不了的.

  3. springboot 中配置文件的加载是存在优先级顺序的, bootstrap.yml 优先级高于application.yml

  4. @RefreshScope 是springcloud 原生注解,实现配置信息自动刷新, 如果在Nacos Server 修改了配置数据,Client 端就会得到最新配置[演示]

Nacos 分类配置(实现配置隔离)

DataID 方案

示意图

SpringCloud Alibaba Nacos--下_第7张图片

解决方案分析

使用Data ID 方案解决

配置实现

  1. 在nacos server 创建新的配置:e-commerce-nacos-config-client-test.yaml

SpringCloud Alibaba Nacos--下_第8张图片

SpringCloud Alibaba Nacos--下_第9张图片

SpringCloud Alibaba Nacos--下_第10张图片

修改application.yml

spring:
  profiles:
    active: text #指定环境,常见的环境有 dev开发/test测试/prod生产

测试

浏览器输入: http://localhost:5000/nacos/config/ip

SpringCloud Alibaba Nacos--下_第11张图片

Group 方案

需求分析/图解

SpringCloud Alibaba Nacos--下_第12张图片

配置实现

  1. 在nacos server 创建新的配置:order/e-commerce-nacos-config-client-dev.yaml

SpringCloud Alibaba Nacos--下_第13张图片

SpringCloud Alibaba Nacos--下_第14张图片

SpringCloud Alibaba Nacos--下_第15张图片

  1. 在nacos server 创建新的配置:seckill/e-commerce-nacos-config-client-dev.yaml

SpringCloud Alibaba Nacos--下_第16张图片

SpringCloud Alibaba Nacos--下_第17张图片

修改application.yml

spring:
  profiles:
    active: dev #指定环境,常见的环境有 dev开发/test测试/prod生产

修改bootstrap.yml

  1. 增加group 参数
server:
  port: 20000 #端口

spring:
  application:
    #这里的name需要参考nacos 配置中心的Data Id
    name: e-commerce-nacos-config-client
  #配置nacos
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #服务注册中心地址
      config:
        server-addr: localhost:8848 #配置中心地址
        file-extension: yaml #指定yaml格式的配置
        group: search #指定search组,默认是DEFAULT_GROUP

测试

1 浏览器: http://localhost:5000/nacos/config/ip

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MfWwPJNv-1686312360306)(<转存失败,建议直接上传图片文件 …/%E5%9B%BE%E7%89%87/image-20230526074910029.png>)]

SpringCloud Alibaba Nacos--下_第18张图片

Namespace 方案

示意图

SpringCloud Alibaba Nacos--下_第19张图片

解决方案分析

1. 在nacos server 创建新的namespace , baidu 和alibaba

SpringCloud Alibaba Nacos--下_第20张图片

SpringCloud Alibaba Nacos--下_第21张图片

SpringCloud Alibaba Nacos--下_第22张图片

SpringCloud Alibaba Nacos--下_第23张图片

2. 在nacos server 创建新的group/dataid

SpringCloud Alibaba Nacos--下_第24张图片

SpringCloud Alibaba Nacos--下_第25张图片

SpringCloud Alibaba Nacos--下_第26张图片

修改application.yml

spring:
  profiles:
    active: dev #指定环境,常见的环境有 dev开发/test测试/prod生产

修改bootstrap.yml-下

增加Namespace 参数

server:
  port: 20000 #端口

spring:
  application:
    #这里的name需要参考nacos 配置中心的Data Id
    name: e-commerce-nacos-config-client
  #配置nacos
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #服务注册中心地址
      config:
        server-addr: localhost:8848 #配置中心地址
        file-extension: yaml #指定yaml格式的配置
        group: search #指定search组,默认是DEFAULT_GROUP
        namespace: e37564de-2e0a-4f79-96e9-23ac35b90936  #指定对应namespace id[阿里]

测试

浏览器输入: http://localhost:5000/nacos/config/ip

SpringCloud Alibaba Nacos--下_第27张图片

Namespace/Group/Data ID 关系

SpringCloud Alibaba Nacos--下_第28张图片

详解介绍

Nacos默认的命名空间是public,Namespace主要用来实现配置隔离, 隔离范围大
Group默认是DEFAULT GROUP,Group可以把不同的微服务划分到同一个分组里面去
Service就是微服务, 相同的Service可以是一个Cluster(簇/集群), Instance 就是微服务的实例

你可能感兴趣的:(分布式,微服务,spring,cloud,spring,spring,boot,java,微服务)