• Nacos作为配置中心


    Nacos作为配置中心-基础配置

    新建module:cloudalibaba-config-nacos-client3377

    pom文件

    版本号已经由父工程控制

    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. <parent>
    6. <artifactId>cloud2020artifactId>
    7. <groupId>com.atguigu.springcloudgroupId>
    8. <version>1.0-SNAPSHOTversion>
    9. parent>
    10. <modelVersion>4.0.0modelVersion>
    11. <artifactId>cloudalibaba-config-nacos-client3377artifactId>
    12. <properties>
    13. <maven.compiler.source>8maven.compiler.source>
    14. <maven.compiler.target>8maven.compiler.target>
    15. properties>
    16. <dependencies>
    17. <dependency>
    18. <groupId>com.alibaba.cloudgroupId>
    19. <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
    20. dependency>
    21. <dependency>
    22. <groupId>com.alibaba.cloudgroupId>
    23. <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    24. dependency>
    25. <dependency>
    26. <groupId>org.springframework.bootgroupId>
    27. <artifactId>spring-boot-starter-webartifactId>
    28. dependency>
    29. <dependency>
    30. <groupId>org.springframework.bootgroupId>
    31. <artifactId>spring-boot-starter-actuatorartifactId>
    32. dependency>
    33. <dependency>
    34. <groupId>org.springframework.bootgroupId>
    35. <artifactId>spring-boot-devtoolsartifactId>
    36. <scope>runtimescope>
    37. <optional>trueoptional>
    38. dependency>
    39. <dependency>
    40. <groupId>org.projectlombokgroupId>
    41. <artifactId>lombokartifactId>
    42. <optional>trueoptional>
    43. dependency>
    44. <dependency>
    45. <groupId>org.springframework.bootgroupId>
    46. <artifactId>spring-boot-starter-testartifactId>
    47. <scope>testscope>
    48. dependency>
    49. dependencies>
    50. project>

    YML文件 

    俩个yml文件:

    Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,
    拉取配置之后,才能保证项目的正常启动。

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

    bootstrap.yml文件 

    1. # nacos配置
    2. server:
    3. port: 3377
    4. spring:
    5. application:
    6. name: nacos-config-client
    7. cloud:
    8. nacos:
    9. discovery:
    10. server-addr: localhost:8848 #Nacos服务注册中心地址
    11. config:
    12. server-addr: localhost:8848 #Nacos作为配置中心地址
    13. file-extension: yaml #指定yaml格式的配置

    application.yml文件

    1. spring:
    2. profiles:
    3. active: dev # 表示开发环境

    Nacos界面配置对应

    公式:${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

    prefix 默认为 spring.application.name 的值

    spring.profile.active 即为当前环境对应的 profile,可以通过配置项 spring.profile.active 来配置。

    file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置

    具备回滚功能

    主启动类 

    1. @EnableDiscoveryClient
    2. @SpringBootApplication
    3. public class NacosConfigClientMain3377
    4. {
    5. public static void main(String[] args) {
    6. SpringApplication.run(NacosConfigClientMain3377.class, args);
    7. }
    8. }

    Controller类 

    1. @RestController
    2. @RefreshScope
    3. public class ConfigClientController {
    4. @Value("${config.info}")
    5. private String configInfo;
    6. @GetMapping("/config/info")
    7. public String getConfigInfo() {
    8. return configInfo;
    9. }
    10. }

    配置配置中心文件

    打开nacos ,登录到http://localhost:8848/nacos

     

    填写配置内容 

    1. config:
    2. info: "dev config version=1"

     填写以后发布

    测试1

    打开浏览器访问:localhost:3377/config/info

     修改配置文件:

    1. config:
    2. info: "dev config version=2"

     测试1

    打开浏览器访问:localhost:3377/config/info

     

    Nacos中的匹配规则

    Nacos作为配置中心-分类配置 

    问题

    多环境多项目管理

    问题1:
    实际开发中,通常一个系统会准备
    dev开发环境
    test测试环境
    prod生产环境。

    如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢?
     
    问题2:
    一个大型分布式微服务系统会有很多微服务子项目,
    每个微服务项目又都会有相应的开发环境、测试环境、预发环境、正式环境......

    那怎么对这些微服务配置进行管理呢?

     Nacos的图形化管理界面

    配置管理

    命名空间

     三种方案加载配置

    DataID方案

    指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置

     

     

    测试2

    重新启动3377

    打开浏览器访问:http://localhost:3377/config/info

    Group方案

    通过Group实现环境区分

     

    在config下增加一条group的配置即可。可配置为DEV_GROUP或TEST_GROUP 

    Namespace方案

     

    bootstrap 

    1. # nacos注册中心
    2. server:
    3. port: 3377
    4. spring:
    5. application:
    6. name: nacos-order
    7. cloud:
    8. nacos:
    9. discovery:
    10. server-addr: localhost:8848 #Nacos服务注册中心地址
    11. config:
    12. server-addr: localhost:8848 #Nacos作为配置中心地址
    13. file-extension: yaml #这里我们获取的yaml格式的配置
    14. namespace: 5da1dccc-ee26-49e0-b8e5-7d9559b95ab0
    15. #group: DEV_GROUP
    16. group: TEST_GROUP

    application 

    1. # Nacos注册配置,application.yml
    2. spring:
    3. profiles:
    4. #active: test
    5. active: dev
    6. #active: info
  • 相关阅读:
    Java synchronized那点事
    AcWing 1273:天才的记忆 ← ST算法求解RMQ问题
    Java 反射系列 —— 学习笔记
    python 按字段查询数据库
    Android Studio 中MotinLayout的简单使用
    自阿里 P8 爆出 1031 道 java 面试题后,我在 某直聘狂拿千份 Offer
    AD9371 官方例程 NO-OS 主函数 headless 梳理(二)
    监控工具Prometheus及项目总结,220805,,
    并行与分布式计算 第一章 基本概念
    C#中List<T>的 AddRange方法使用说明
  • 原文地址:https://blog.csdn.net/m0_62436868/article/details/126410461