【微服务】Nacos(配置中心)

文章目录

    • 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.基本介绍

image-20240327202049559

2.说明

image-20240327202206270

2.Nacos配置中心实例

1.架构图

image-20240327203108046

2.在Nacos Server加入配置
1.配置列表,加号

image-20240327203343601

2.加入配置
  • 这里的配置文件名需要跟application name一致(-dev前面的部分)

image-20240327203754183

3.点击发布,然后返回

image-20240327203906059

4.还可以编辑

image-20240327203924073

image-20240327203931321

3. 创建 Nacos 配置客户端模块获取配置中心信息
1.创建子模块 e-commerce-nacos-config-client5000

image-20240327204123547

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/查看注册信息

image-20240327214404987

3.浏览器访问http://localhost:5000/nacos/config/mes查看结果

image-20240327214516431

4.Nacos配置中心细节
1.关于@Value注解引用的包

image-20240327214653811

2.配置中心的文件不可以是yml,只能是yaml
3.在项目初始化时,如果无法从配置中心获取数据,项目是启动不了的
4.bootstrap.yml 的优先级高于 application.yml
5.application name必须与配置中心的配置文件的名字对应(-dev之前)
6.@RefreshScope是springcloud的原生注解,可以实现配置信息自动刷新

image-20240327215903215

演示

image-20240327220026347

image-20240327220058148

image-20240327220123558

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.新建命名空间

image-20240328113752771

2.填写空间名和描述

image-20240328114046118

3.自动生成命名空间id

image-20240328114106230

3.分组设置(group)和 文件命名(data id)
1.新建配置

image-20240328125946056

2.进行配置

image-20240328125858970

3.bootstrap.yml 配置服务注册以及配置中心

image-20240328130224577

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.启动测试

image-20240328131812655

image-20240328131818457

3.流程说明
1.首先创建一个模块
2.为这个模块在配置中心指定一个配置文件,按照命名空间 + 分组 + Data ID管理配置
3.编写模块的bootstrap.yml 配置端口、服务注册以及配置中心
4.编写application.yml 指定环境
5.编写启动类,开启服务发现并执行测试
4.关于使用Nacos配置中心,配置文件的读取顺序(后面的会覆盖前面的)
  • bootstrap.yml
  • application.yml
  • application-prod.yml(还可以是-test,-dev)
  • 配置中心文件
  • 启动时命令行指定配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/576748.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pulsar: kafka on pulsar之把pulsar当kafka用

一、下载协议包&#xff08;要和pulsar版本比较一致&#xff09; https://github.com/streamnative/kop/releases?q2.8.0&expandedtrue二、在pulsar的根目录创建一个protocols目录&#xff0c;将上述包放到这个目录里 三、编辑broker.conf(如果是集群)或者standalone.con…

30-3 越权漏洞 - 水平越权(横向越权)

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、定义 攻击者可以访问和操作与其拥有同级权限的用户资源。 示例: 学生A在教务系统上正常只能修改自己的作业内容,但由于不合理的权限校验规则等原因,学生A可以修改学生B的内…

提升回归测试效率,让测试事半功倍!

回归测试&#xff0c;在软件开发中简直是个不折不扣的大头。要保证新功能不乱入或者修复的bug不搞砸老功能&#xff0c;这活儿可不好干。尤其是现在软件越来越大&#xff0c;开发周期也越来越紧&#xff0c;咋才能在有限的时间内搞定高效的回归测试呢&#xff1f;这就得来点妙招…

Node爬虫:原理简介

在数字化时代&#xff0c;网络爬虫作为一种自动化收集和分析网络数据的技术&#xff0c;得到了广泛的应用。Node.js&#xff0c;以其异步I/O模型和事件驱动的特性&#xff0c;成为实现高效爬虫的理想选择。然而&#xff0c;爬虫在收集数据时&#xff0c;往往面临着诸如反爬虫机…

机器学习入门:概念、步骤、分类与实践

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

亚信安慧AntDB的数据处理优势

AntDB的“融合实时”的特性&#xff0c;不仅使得数据库具备了更强大的适应性&#xff0c;更让企业在不同业务场景下能够更好地实现业务目标&#xff0c;释放出更大的商业价值。融合实时的特性让AntDB具有了高度灵活性和实时性&#xff0c;使其能够满足企业在不同业务需求下的快…

|行业洞察·汽车|《新能源汽车行业发展及营销策略分析-35页》

报告的主要内容解读&#xff1a; 行业环境&#xff1a;报告指出&#xff0c;海外车企的电动化进程遇到阻碍&#xff0c;而中国新能源汽车市场持续增长&#xff0c;2023年销量占全球新能源汽车的63.5%&#xff0c;市占率达到31.6%。 市场政策&#xff1a;中国政府通过减免税收、…

Qt+OpenGL入门教程(三)——绘制三角形

通过前两篇文章的学习&#xff0c;我想大家应该有了基本的理解&#xff0c;我们接下来实操一下。 创建Qt OpenGL窗口 QOpenGLWidget QGLWidget是传统QtOpenGL模块的一部分&#xff0c;与其他QGL类一样&#xff0c;应该在新的应用程序中避免使用。相反&#xff0c;从Qt5.4开始…

厨余垃圾处理设备工业监控PLC连接APP小程序智能软硬件开发之功能原理篇

接着上一篇《厨余垃圾处理设备工业监控PLC连接APP小程序智能软硬件开发之功能结构篇》继续总结一下厨余垃圾处理设备智能软硬件统的原理。所有的软硬件系统全是自己一人独自开发&#xff0c;看法和角度难免有局限性。希望抛砖引玉&#xff0c;将该智能软硬件系统分享给更多有类…

Linux:详解TCP协议段格式

文章目录 认识TCPTCP协议段格式 本篇主要总结的是TCP协议的一些字段 认识TCP TCP协议全称是传输控制协议&#xff0c;也就是说是要对于数据的传输进行一个控制 以上所示的是对于TCP协议进行数据传输的一个理解过程 全双工 至此就可以对于TCP协议是全双工的来进行理解了&…

计算机网络:现代通信的基石

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

移动硬盘怎么加密?移动硬盘加密软件有哪些?

移动硬盘是我们在工作中最常用的移动存储设备&#xff0c;为了保护数据安全&#xff0c;需要使用专业的移动硬盘加密软件加密保护。那么&#xff0c;移动硬盘加密软件有哪些&#xff1f; ​BitLocker BitLocker是Windows的磁盘加锁功能&#xff0c;可以用于加密保护移动硬盘中…