IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringCloud Alibaba学习(二):Nacos之服务配置中心 -> 正文阅读

[Java知识库]SpringCloud Alibaba学习(二):Nacos之服务配置中心

目录

一、基础配置

? ? ? ? 1、新建模块?

? ? ? ? 2、修改pom文件?

? ? ? ? 3、编写yml文件?

? ? ? ? ? ? ? ? (1)bootstrap.yml?

? ? ? ? ? ? ? ? (2)application.yml?

? ? ? ? ? ? ? ? (3)为什么要配置两个yml

? ? ? ? 4、编写主启动类?

? ? ? ? 5、编写业务逻辑代码?

? ? ? ? 6、在Nacos中添加配置信息?

? ? ? ? ? ? ? ? (1)Nacos中的配置规则?

? ? ? ? ? ? ? ? (2)配置新增?

? ? ? ? 7、启动测试?

? ? ? ? 8、Nacos自带动态刷新?

二、分类配置

? ? ? ? 1、Nacos中的配置管理?

? ? ? ? 2、DataID方案加载配置?

? ? ? ? ? ? ? ? (1)新建配置

? ? ? ? ? ? ? ? (2)修改application.yml?

? ? ? ? 3、Group方案加载配置

? ? ? ? ? ? ? ? (1)新建配置? ? ? ?

? ? ? ? ? ? ? ? ?(2)修改bootstrap.yml和application.yml

? ? ? ? ? ? ? ? (3)运行测试?

? ? ? ? 4、命名空间方案加载配置?

? ? ? ? ? ? ? ? (1)新建命名空间?

? ? ? ? ? ? ? ? (2)bootstrap.yml?

? ? ? ? ? ? ? ? (3)在新建的namespace下新建配置?


一、基础配置

参考文档? ? ? ?Spring Cloud Alibaba Reference Documentation?

? ? ? ? 1、新建模块?

? ? ? ? 新建普通maven模块?cloudalibaba-config-nacos-client3377?

? ? ? ? 2、修改pom文件?

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>cloud</artifactId>
        <groupId>com.shang.cloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloudalibaba-config-nacos-client3377</artifactId>

    <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>


    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

</project>

? ? ? ? 3、编写yml文件?

? ? ? ? ? ? ? ? (1)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: yaml #指定yaml格式的配置


# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# 应该是 nacos-config-client-dev.yaml

? ? ? ? ? ? ? ? (2)application.yml?

spring:
  profiles:
    active: dev # 表示开发环境

? ? ? ? ? ? ? ? (3)为什么要配置两个yml

????????Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,
拉取配置之后,才能保证项目的正常启动。
?
????????springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application。

? ? ? ? 其实学了config之后,这样的做法很容易理解。
?

? ? ? ? 4、编写主启动类?

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

? ? ? ? 5、编写业务逻辑代码?

? ? ? ? 通过springcloud的原生注解 @RefreshScope? 来实现配置的自动刷新。

@RestController
@RefreshScope   //在控制器类加入@RefreshScope注解使当前类下的配置支持Nacos的动态刷新功能。
public class ConfigClientController {

    @Value("${config.Info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo(){
        return configInfo;
    }
}

? ? ? ? 6、在Nacos中添加配置信息?

? ? ? ? ? ? ? ? (1)Nacos中的配置规则?

? ? ? ? ? ? ? ? 所以我们的DataId应为?nacos-config-client-dev.yaml

? ? ? ? ? ? ? ? (2)配置新增?

?

? ? ? ? 然后点击发布。?

? ? ? ? 7、启动测试?

? ? ? ? 启动3377

? ? ? ? 访问????????http://localhost:3377/config/info?

? ? ? ? 读取到了我们之前写在Nacos里的配置

? ? ? ? 8、Nacos自带动态刷新?

? ? ? ? 修改配置文件?

????????

? ? ? ? 修改好后只需刷新页面即可获取新的配置文件

? ? ? ? 简直比config方便太多!!!?

?

二、分类配置

? ? ? ? 现在有两个问题:

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

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

? ? ? ? 1、Nacos中的配置管理?

????????????????Namespace+Group+Data ID?

?

????????类似Java里面的package名和类名
????????最外层的namespace是可以用于区分部署环境的,Group和DataID逻辑上区分两个目标对象。?

?

????????默认情况:
????????Namespace=public,Group=DEFAULT_GROUP, 默认Cluster是DEFAULT
?
????????Nacos默认的命名空间是public,Namespace主要用来实现隔离。
????????比方说我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个Namespace,不同的Namespace之间是隔离的。
?
????????Group默认是DEFAULT_GROUP,Group可以把不同的微服务划分到同一个分组里面去
?
????????Service就是微服务;一个Service可以包含多个Cluster(集群),Nacos默认Cluster是DEFAULT,Cluster是对指定微服务的一个虚拟划分。


????????比方说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,这时就可以给杭州机房的Service微服务起一个集群名称(HZ),给广州机房的Service微服务起一个集群名称(GZ),还可以尽量让同一个机房的微服务互相调用,以提升性能。

? ? ? ? 2、DataID方案加载配置?

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

????????

? ? ? ? ? ? ? ? (1)新建配置

? ? ? ? ????????我们新建一个nacos-config-client-test.yaml

?

? ? ? ? ? ? ? ? (2)修改application.yml?

? ? ? ? ????????然后在idea的3377模块中把active改为test

?

? ? ? ? ? ? ? ? (3)测试?

? ? ? ? ????????访问????????http://localhost:3377/config/info?

?

?

? ? ? ? ?发现读取到的是test的配置文件。

? ? ? ? 这就说明我们可以通过更改active的值指定读取的配置文件。

?

? ? ? ? 3、Group方案加载配置

?????????

? ? ? ? ? ? ? ? (1)新建配置? ? ? ?

????????????????新建一个Group为DEV_GROUP的配置

?

? ? ? ? ????????再新建一个Group为TEST_GROUP的配置?

?

?????????????????然后就可以在配置列表里看到两个Data Id相同,Group不同的配置

? ? ? ? ? ? ? ? ?(2)修改bootstrap.yml和application.yml

? ? ? ? ? ? ? ? appcation.yml:?

?

? ? ? ? ? ? ? ? bootstrap.yml:

?

?

? ? ? ? ? ? ? ? (3)运行测试?

?

? ? ? ? 4、命名空间方案加载配置?

? ? ? ? ? ? ? ? (1)新建命名空间?

? ? ? ? ? ? ? ? ? ? ? ? 新建dev命名空间?

?

? ? ? ? ? ? ? ? ?再用同样方法新建test命名空间

? ? ? ? ? ? ? ? 建好了之后,点击配置列表,上方会出现新建的命名空间

?

? ? ? ? ? ? ? ? (2)bootstrap.yml?

?

? ? ? ? ? ? ? ? namespace后的id为:

?

? ? ? ? ? ? ? ? (3)在新建的namespace下新建配置?

?

? ? ? ? ? ? ? ? 后面的操作即和前面一样。?

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-11-23 12:12:19  更:2021-11-23 12:14:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:20:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码