文章目录
- 1.AP和CP
- 1.基本介绍
- 2.说明
- 2.Nacos配置中心实例
- 1.架构图
- 2.在Nacos Server加入配置
- 1.配置列表,加号
- 2.加入配置
- 3.点击发布,然后返回
- 4.还可以编辑
- 3. 创建 Nacos 配置客户端模块获取配置中心信息
- 1.创建子模块 e-commerce-nacos-config-client5000
- 2.pom.xml引入配置中心依赖
- 3.application.yml 指定当前为开发环境(对应于配置中心文件的-dev)
- 4.bootstrap.yml(这个文件会在application.yml之前读取,也可作为配置文件) 配置服务注册和配置中心
- 5.编写启动类
- 6.src/main/java/com/sun/springcloud/controller/NacosConfigController.java 编写业务类获取配置中心信息
- 7.测试
- 1.首先确保Nacos启动
- 2.启动这个模块,浏览器访问http://localhost:8848/nacos/查看注册信息
- 3.浏览器访问http://localhost:5000/nacos/config/mes查看结果
- 4.Nacos配置中心细节
- 1.关于@Value注解引用的包
- 2.配置中心的文件不可以是yml,只能是yaml
- 3.在项目初始化时,如果无法从配置中心获取数据,项目是启动不了的
- 4.bootstrap.yml 的优先级高于 application.yml
- 5.application name必须与配置中心的配置文件的名字对应(-dev之前)
- 6.@RefreshScope是springcloud的原生注解,可以实现配置信息自动刷新
- 演示
- 3.Nacos配置隔离
- 1.命名空间 + 分组 + Data ID管理配置
- 命名空间:按照环境隔离配置
- 分组:按照业务类型来划分
- Data ID:按照服务名,环境,文件后缀来配置
- 2.应用实例
- 1.需求分析
- 2.设置命名空间(namespace)
- 1.新建命名空间
- 2.填写空间名和描述
- 3.自动生成命名空间id
- 3.分组设置(group)和 文件命名(data id)
- 1.新建配置
- 2.进行配置
- 3.bootstrap.yml 配置服务注册以及配置中心
- 4.application.yml 指定dev环境(对应于data id的 -dev)也可以在启动的时候通过命令指定开发环境
- 5.pom.xml 引入配置中心和服务发现的依赖
- 6.编写启动类 开启服务发现
- 7.编写业务类,读取配置文件@RefreshScope实现配置信息自动刷新
- 8.启动测试
- 3.流程说明
- 1.首先创建一个模块
- 2.为这个模块在配置中心指定一个配置文件,按照命名空间 + 分组 + Data ID管理配置
- 3.编写模块的bootstrap.yml 配置端口、服务注册以及配置中心
- 4.编写application.yml 指定环境
- 5.编写启动类,开启服务发现并执行测试
- 4.关于使用Nacos配置中心,配置文件的读取顺序(后面的会覆盖前面的)
1.AP和CP
1.基本介绍
2.说明
2.Nacos配置中心实例
1.架构图
2.在Nacos Server加入配置
1.配置列表,加号
2.加入配置
- 这里的配置文件名需要跟application name一致(-dev前面的部分)
3.点击发布,然后返回
4.还可以编辑
3. 创建 Nacos 配置客户端模块获取配置中心信息
1.创建子模块 e-commerce-nacos-config-client5000
2.pom.xml引入配置中心依赖
<dependencies>
<!-- 引入nacos的配置中心依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--引入nacos的服务发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- springboot web starter 用来监听端口-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 如果在子工程/模块指定了 version,则以指定为准 -->
</dependency>
<!--
1. starter-actuator 是 springboot 程序的监控系统,可以实现健康检查,info 信息
等
2. 访问 http://localhost:10000/actuator 可以看到相关链接, 还可以做相关设置. -->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 公共模块的jar包 -->
<dependency>
<groupId>org.example</groupId>
<artifactId>e_commerce_center-common-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
3.application.yml 指定当前为开发环境(对应于配置中心文件的-dev)
spring:
profiles:
active: dev # 指定当前环境为开发环境,对应于配置中心文件的-dev
4.bootstrap.yml(这个文件会在application.yml之前读取,也可作为配置文件) 配置服务注册和配置中心
- 关于找到配置中心的文件的解释
- localhost:8848可以找到配置中心
- e-commerce-nacos-config-client + -dev可以找到配置文件的名字
- yaml可以找到配置文件的后缀
server:
port: 5000 # 配置服务端口
spring:
application:
name: e-commerce-nacos-config-client # 配置服务的名称,这里的name需要参考nacos配置中心里配置文件的名字
cloud:
nacos:
# encos服务注册
discovery:
server-addr: localhost:8848
# 配置中心
config:
server-addr: localhost:8848 # 查找到配置中心
file-extension: yaml # 文件后缀
5.编写启动类
package com.sun.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* Description:
*
* @Author sun
* @Create 2024/3/27 21:21
* @Version 1.0
*/
@SpringBootApplication
@EnableDiscoveryClient // 开启nacos服务发现
public class NacosConfigClientApplication5000 {
public static void main(String[] args) {
SpringApplication.run(NacosConfigClientApplication5000.class, args);
}
}
6.src/main/java/com/sun/springcloud/controller/NacosConfigController.java 编写业务类获取配置中心信息
package com.sun.springcloud.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Description: 获取配置中心的数据
*
* @Author sun
* @Create 2024/3/27 21:27
* @Version 1.0
*/
@RestController
@Slf4j
public class NacosConfigController {
/* 使用Value注解可以获取配置中心中对应于这个微服务集群的配置文件的信息,注意:如果获取不到信息,则微服务直接启动不了 */
@Value("${config.ip}")
private String ip;
@Value("${config.name}")
private String name;
@GetMapping("/nacos/config/mes")
public String getConfigIpAndName() {
return "ip:" + ip + " name:" + name;
}
}
7.测试
1.首先确保Nacos启动
2.启动这个模块,浏览器访问http://localhost:8848/nacos/查看注册信息
3.浏览器访问http://localhost:5000/nacos/config/mes查看结果
4.Nacos配置中心细节
1.关于@Value注解引用的包
2.配置中心的文件不可以是yml,只能是yaml
3.在项目初始化时,如果无法从配置中心获取数据,项目是启动不了的
4.bootstrap.yml 的优先级高于 application.yml
5.application name必须与配置中心的配置文件的名字对应(-dev之前)
6.@RefreshScope是springcloud的原生注解,可以实现配置信息自动刷新
演示
3.Nacos配置隔离
1.命名空间 + 分组 + Data ID管理配置
命名空间:按照环境隔离配置
- development
- testing
- production
分组:按照业务类型来划分
- 用户模块
- 订单模块
Data ID:按照服务名,环境,文件后缀来配置
- 格式:
[application-name]-[environment].[file-extension]
- 示例:
user-service-dev.yml
order-service-prod.yml
2.应用实例
1.需求分析
要为开发环境,用户模块的一个服务指定配置文件
2.设置命名空间(namespace)
1.新建命名空间
2.填写空间名和描述
3.自动生成命名空间id
3.分组设置(group)和 文件命名(data id)
1.新建配置
2.进行配置
3.bootstrap.yml 配置服务注册以及配置中心
server:
port: 5000 # 配置服务端口
spring:
application:
name: e-commerce-nacos-config-client # 配置服务的名称,这里的name需要参考nacos配置中心里配置文件的名字
cloud:
nacos:
# nacos服务注册
discovery:
server-addr: localhost:8848 # nacos服务注册中心地址
# 配置中心
config:
server-addr: localhost:8848 # 配置中心地址
file-extension: yaml # 指定配置文件的格式
group: user # 指定配置文件的分组
namespace: 122114f8-b2eb-480a-9ef3-1f8d30446736 # 指定命名空间id
4.application.yml 指定dev环境(对应于data id的 -dev)也可以在启动的时候通过命令指定开发环境
spring:
profiles:
active: dev # 指定当前环境为开发环境
5.pom.xml 引入配置中心和服务发现的依赖
<dependencies>
<!-- 引入nacos的配置中心依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--引入nacos的服务发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- springboot web starter 用来监听端口-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 如果在子工程/模块指定了 version,则以指定为准 -->
</dependency>
<!--
1. starter-actuator 是 springboot 程序的监控系统,可以实现健康检查,info 信息
等
2. 访问 http://localhost:10000/actuator 可以看到相关链接, 还可以做相关设置. -->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 公共模块的jar包 -->
<dependency>
<groupId>org.example</groupId>
<artifactId>e_commerce_center-common-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
6.编写启动类 开启服务发现
package com.sun.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* Description:
*
* @Author sun
* @Create 2024/3/27 21:21
* @Version 1.0
*/
@SpringBootApplication
@EnableDiscoveryClient // 开启nacos服务发现
public class NacosConfigClientApplication5000 {
public static void main(String[] args) {
SpringApplication.run(NacosConfigClientApplication5000.class, args);
}
}
7.编写业务类,读取配置文件@RefreshScope实现配置信息自动刷新
package com.sun.springcloud.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Description: 获取配置中心的数据
*
* @Author sun
* @Create 2024/3/27 21:27
* @Version 1.0
*/
@RestController
@RefreshScope // 实现配置信息自动刷新
public class NacosConfigController {
/* 使用Value注解可以获取配置中心中对应于这个微服务集群的配置文件的信息,注意:如果获取不到信息,则微服务直接启动不了 */
@Value("${config.ip}")
private String ip;
@Value("${config.name}")
private String name;
@GetMapping("/nacos/config/mes")
public String getConfigIpAndName() {
return "ip:" + ip + " name:" + name;
}
}
8.启动测试
3.流程说明
1.首先创建一个模块
2.为这个模块在配置中心指定一个配置文件,按照命名空间 + 分组 + Data ID管理配置
3.编写模块的bootstrap.yml 配置端口、服务注册以及配置中心
4.编写application.yml 指定环境
5.编写启动类,开启服务发现并执行测试
4.关于使用Nacos配置中心,配置文件的读取顺序(后面的会覆盖前面的)
- bootstrap.yml
- application.yml
- application-prod.yml(还可以是-test,-dev)
- 配置中心文件
- 启动时命令行指定配置