首页 > 其他分享 >Nacos笔记(六):Nacos应用 - 注册中心、配置中心

Nacos笔记(六):Nacos应用 - 注册中心、配置中心

时间:2023-08-26 17:00:46浏览次数:42  
标签:中心 spring 配置 boot Nacos 笔记 nacos cloud

  Nacos官网:https://nacos.io/zh-cn/index.html

  Nacos注册中心/配置中心搭建官方文档地址:https://nacos.io/zh-cn/docs/v2/ecology/use-nacos-with-spring-cloud.html

1、注册中心

  Nacos注册中心原理图:

  

1.1、项目搭建

  创建新项目,项目结构如下:

  

  父项目下有两个子项目nacos-9001、nacos-9002。

1、POM依赖

  父项目POM文件

 1 <parent>
 2     <groupId>org.springframework.boot</groupId>
 3     <artifactId>spring-boot-starter-parent</artifactId>
 4     <version>2.3.0.RELEASE</version>
 5     <relativePath/> <!-- lookup parent from repository -->
 6 </parent>
 7 <dependencies>
 8     <dependency>
 9         <groupId>org.springframework.boot</groupId>
10         <artifactId>spring-boot-starter-web</artifactId>
11     </dependency>
12     <dependency>
13         <groupId>org.springframework.boot</groupId>
14         <artifactId>spring-boot-starter-tomcat</artifactId>
15         <scope>provided</scope>
16     </dependency>
17     <dependency>
18         <groupId>org.springframework.boot</groupId>
19         <artifactId>spring-boot-starter-test</artifactId>
20         <scope>test</scope>
21     </dependency>
22 </dependencies>
23 <dependencyManagement>
24     <dependencies>
25         <dependency>
26             <groupId>com.alibaba.cloud</groupId>
27             <artifactId>spring-cloud-alibaba-dependencies</artifactId>
28             <version>2.2.5.RELEASE</version>
29             <type>pom</type>
30             <scope>import</scope>
31         </dependency>
32     </dependencies>
33 </dependencyManagement>

  子项目POM文件

 1 <dependencies>
 2     <dependency>
 3         <groupId>org.springframework.boot</groupId>
 4         <artifactId>spring-boot-starter-web</artifactId>
 5     </dependency>
 6     <dependency>
 7         <groupId>com.alibaba.cloud</groupId>
 8         <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
 9     </dependency>
10 </dependencies>

2、配置文件application.yml

  nacos-9001、nacos-9002 配置文件基本一样,只不过端口与服务名称不一致。

2.1、nacos-9001

 1 # 服务端口
 2 server:
 3   port: 9001
 4 spring:
 5   # 应用名称
 6   application:
 7     name: nacos-9001
 8   # 注册中心地址
 9   cloud:
10     nacos:
11       discovery: 
12         server-addr: 192.168.33.55:8848

2.2、nacos-9002

 1 # 服务端口
 2 server:
 3   port: 9001
 4 spring:
 5   # 应用名称
 6   application:
 7     name: nacos-9001
 8   # 注册中心地址
 9   cloud:
10     nacos:
11       discovery: 
12         server-addr: 192.168.33.55:8848

3、启动类

 1 import org.springframework.boot.SpringApplication;
 2 import org.springframework.boot.autoconfigure.SpringBootApplication;
 3 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 4 
 5 @SpringBootApplication
 6 // 开启注册功能
 7 @EnableDiscoveryClient 
 8 public class Nacos9001Application {
 9     public static void main(String[] args) {
10         SpringApplication.run(Nacos9001Application.class, args);
11     }
12 }

  nacos-9002的启动类与nacos-9001的启动类似。

1.2、注册中心

  启动nacos-9001、nacos-9002,访问注册中心的服务列表,详情如下:

  0

  nacos-9001、nacos-9002,已经注册到Nacos上了。

2、配置中心

2.1、POM依赖

 1 <dependencies>
 2     <dependency>
 3         <groupId>org.springframework.boot</groupId>
 4         <artifactId>spring-boot-starter-web</artifactId>
 5     </dependency>
 6     <!-- 注冊中心依赖 -->
 7     <dependency>
 8         <groupId>com.alibaba.cloud</groupId>
 9         <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
10         <version>2021.1</version>
11     </dependency>
12     <!-- 配置中心依赖 -->
13     <dependency>
14         <groupId>com.alibaba.cloud</groupId>
15         <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
16         <version>2021.1</version>
17     </dependency>
18 </dependencies>

2.2、配置文件

  配置文件需要两个,因为在项目初始化时,优先向nacos配置中心拉取配置,拉取到配置后,项目才能正常启动。

  SpringBoot配置文件的加载存在优先级,bootstrap的优先级比application的高,配置中心、注册中心相关信息设置在bootstrap配置中。

  bootstrap.yml:保证服务注册,并读取指定后缀的配置文件信息。

  application.yml:设置环境属性等项目依赖信息。

1、bootstrap.yml

 1 # nacos配置
 2 server:
 3   port: 9003
 4 
 5 spring:
 6   application:
 7     name: nacos-config-9003
 8   cloud:
 9     nacos:
10       # Nacos服务注册中心
11       discovery:
12         server-addr: 192.168.33.55:8848
13       # Nacos作为配置中心
14       config:
15         server-addr: 192.168.33.55:8848
16         #指定yaml格式的配置
17         file-extension: yaml

2、application.yml

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

2.3、添加配置

  

   项目在启动之后,如何知道获取哪一个配置?答案救灾Data ID的设置,在Nacos中通过特定的规则生成Data ID,保证项目拉取正确的配置信息。

1、Data ID规则

  Data ID 规则如下:

${prefix}-${spring.profiles.active}.${file-extension}

  prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。

  spring.profiles.active 即为当前环境对应的 profile,当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}

  file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

2.4、测试代码

 1 import org.springframework.beans.factory.annotation.Value;
 2 import org.springframework.web.bind.annotation.RequestMapping;
 3 import org.springframework.web.bind.annotation.RestController;
 4 
 5 @RestController
 6 public class ConfigController {
 7 
 8     @Value("${config.switch}")
 9     private String configSwitch;
10 
11     @RequestMapping("/getConfigSwitch")
12     public String getConfigSwitch() {
13         return "配置的服务开关:" + configSwitch;
14     }
15 }

  执行结果如下:

  

2.5、配置自动刷新

  Nacos通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新:

 1 @RestController
 2 @RefreshScope
 3 public class ConfigController {
 4 
 5     @Value("${config.switch}")
 6     private String configSwitch;
 7 
 8     @RequestMapping("/getConfigSwitch")
 9     public String getConfigSwitch() {
10         return "配置的服务开关:" + configSwitch;
11     }
12 }

  在不重启服务的前提下,修改配置将开关由 Y 变更成 N。

   

   修改配置文件信息:

  

  再次访问开关配置

  0  

标签:中心,spring,配置,boot,Nacos,笔记,nacos,cloud
From: https://www.cnblogs.com/RunningSnails/p/17659092.html

相关文章

  • 社团算法学习笔记
    社团算法学习笔记:https://gaowenxin95.github.io/le_graph/社团社区发现算法学习笔记.html......
  • 缩点+割点学习笔记
    缩点传送门根据题意:允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次。所以我们可以考虑将可以相互到达的若干个点缩成一个点,以方便计算。下面讲如何实现:考虑\(dfs\),并且对点记录如下信息\(dfn\)(该点被遍历到的时间节点,即该点是第几个被遍历到的),\(low\)(可以追溯到......
  • 多阶前缀和学习笔记
    例题传送门:P4062[Code+#1]Yazid的新生舞会简要题意:给定一串序列\(A_1,A_2,...,A_n\),求有多少个子区间\([l,r]\)满足子区间内众数的个数大于\(\frac{r-l+1}{2}\)思考若数\(w\)是众数的方案数:新建一个序列\(B\),令\(B_i=[A_i=w]\),考虑前缀和\(S_i=\sum\limits_{k=1}^iB_i=S_{i-1......
  • 失配树学习笔记
    传送门考虑把原字符串先\(kmp\)一遍,求出以\(i\)结尾的前缀的最长\(border\),根据\(border\)的\(border\)还是\(border\)这个定理,我们在寻找前缀\(p\)和前缀\(q\)的最长公共\(border\)时,我们可以考虑运用这个定理,一直往前跳,找到最先一样的\(border\),这就是最长公共\(bordedr\),至于......
  • Dirichlet 前缀和学习笔记
    传送门求\(b_k=\sum\limits_{i|k}{a_i}\)考虑\(i=p_1^k,j=p_1^{k+1}\),若我们已经求出了\(b_i\),则易知\(b_j=b_i+a_j\)然后根据上面的方法,考虑对于所有的\(k=p_1^{k1}p_2^{k2}...p_l^{kl}\),若\(j=p_2^{k2}...p_l^{kl}\),我们已经求出所有的\(c_k=a_j+a_{p1\timesj}+a_{p1^2\time......
  • 回文自动机(PAM)学习笔记
    传送门我认为理解回文自动机需要图,以\(abbaabba\)为例,它的回文树是这样的:令树上的每一个点为一个回文串,其中,\(1\)为根的树中的点回文串长度为奇数,且最中间的那个字母就是\(1\)连向其他点的的边的字母,而\(0\)为根的树中的点回文串长度为偶数。举点例子吧:点\(2\)的回文串为\(a\)......
  • c语言笔记6
    c语言笔记6(结构体,共用体,枚举,文件操作,makefile)1.结构体1.1结构体的概念结构体也是构造类型之一,由至少一个基本数据类型或构造类型组成的一种数据结构(集合),这种数据结构称之为结构体1.2结构体的定义使用结构体之前,先定义结构体,然后使用这个结构体时作为一种数据类型(......
  • 欧拉定理学习笔记
    欧拉定理:若\(gcd(a,m)=1\),则\(a^{\varphi(m)}\equiv1\pmod{m}\)证明:令\(r_1,r_2,···,r_{\varphi(m)}\)为模m下的一个简化剩余系,则\(ar_1,ar_2,···,ar_{\varphi(m)}\)也为模m下的一个简化剩余系,令\(f=r_1*r_2*···*r_{\varphi(m)}\),则有:\(f\equivar_1*ar_2*···*ar_{......
  • 杜教筛学习笔记
    杜教筛学习笔记闲话感觉以前根本没学懂杜教筛,于是重学了一遍,写个笔记记录一下。前置知识依赖于迪利克雷卷积、莫比乌斯反演、整除分块相关知识。记号约定及基本性质约定:\(f*g\)表示\(f\)与\(g\)的迪利克雷卷积,即\((f*g)(n)=\sum\limits_{ij=n}f(i)g(j)\)。\(f\cdot......
  • Linux设备驱动开发详解——学习笔记
    Linux设备驱动概述计算机系统的运转需要软件和硬件共同参与,硬件是底层基础,软件则实现了具体的应用。硬件和软件之间则通过设备驱动来联系。在没有操作系统的情况下,工程师可以根据硬件设备的特点自行定义接口。而在有操作系统的情况下,驱动的架构则由相应的操作系统来定义。驱动存......