【微服务】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://xiahunao.cn/news/2905197.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

web学习笔记(四十九)

目录 1. 初识 Express 1.1 什么是 Express 1.2 Express 能做什么 1.3 Express 的基本使用 1.4 如何把内容响应给客户端 2. 托管静态资源 2.1 express.static() 1. 初识 Express 1.1 什么是 Express 之前我们有讲过可以通过node.js内置的http模块来创建服务器&#x…

需求生命周期管理

背景 回顾很多项目或者产品&#xff0c;我们发现现在的版本和当初的理解或者设想是天壤之别&#xff0c;这是什么原因&#xff0c;对于这种情况又应该如何处理呢&#xff1f; 业务分析的交付物是需求文档&#xff0c;业务分析整个过程随着对业务的逐步深入&#xff0c;观察视…

【3DsMax+Pt】练习案例

目录 一、在3DsMax中展UV 二、在Substance 3D Painter中绘制贴图 一、在3DsMax中展UV 1. 首先创建如下模型 2. 选中如下三条边线作为接缝 重置剥 发现如下部分还没有展开 再选一条边作为接缝 再次拨开 拨开后的UV如下 二、在Substance 3D Painter中绘制贴图 1. 新建项目&am…

JVM之EhCache缓存

EhCache缓存 一、EhCache介绍 在查询数据的时候&#xff0c;数据大多来自数据库&#xff0c;咱们会基于SQL语句的方式与数据库交互&#xff0c;数据库一般会基于本地磁盘IO的形式将数据读取到内存&#xff0c;返回给Java服务端&#xff0c;Java服务端再将数据响应给客户端&am…

微服务(基础篇-004-Feign)

目录 http客户端Feign Feign替代RestTemplate&#xff08;1&#xff09; Feign的介绍&#xff08;1.1&#xff09; 使用Feign的步骤&#xff08;1.2&#xff09; 自定义配置&#xff08;2&#xff09; 配置Feign日志的两种方式&#xff08;2.1&#xff09; Feign使用优化…

一只英短,有什么牌子的口粮适合它?

亲爱的铲屎官&#xff0c;你问到了一只英短适合什么牌子的口粮&#xff0c;那我一定要推荐你试试福派斯鲜肉无谷猫粮&#xff01;&#x1f431;&#x1f35a; 首先&#xff0c;英短猫咪的肠胃比较敏感&#xff0c;所以选择一款无谷的猫粮是非常重要的。福派斯鲜肉无谷猫粮就是一…

Python人工智能:气象数据可视化的新工具

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能&#xff0c;这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…

SpringBoot实现RabbitMQ的广播交换机(SpringAMQP 实现Fanout广播交换机)

文章目录 声明交换机消息接收消息发送效果 广播交换机的特定是: 将消息交给所有绑定到交换机的队列 在广播模式下&#xff0c;消息发送流程是这样的&#xff1a; 1&#xff09; 可以有多个队列2&#xff09; 每个队列都要绑定到 Exchange&#xff08;交换机&#xff09;3&…

信息安全之网络安全防护

先来看看计算机网络通信面临的威胁&#xff1a; 截获——从网络上窃听他人的通信内容中断——有意中断他人在网络上的通信篡改——故意篡改网络上传送的报文伪造——伪造信息在网络上传送 截获信息的攻击称为被动攻击&#xff0c;而更改信息和拒绝用户使用资源的攻击称为主动…

RabbitMQ安装及使用笔记

RabbitMQ安装及使用笔记 RabbitMQ是一个开源的消息代理软件&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;&#xff0c;用于在分布式系统中进行消息传递。 1.安装 利用docker load命令加载mq镜像 docker load -i mq.tar 基于Docker来安装RabbitMQ&#xff…

【计算机网络】http协议的原理与应用,https是如何保证安全传输的

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

C# 高级文件操作与异步编程探索(初步)

文章目录 文本文件的读写探秘StreamReader 类深度剖析StreamWriter 类细节解读编码和中文乱码的解决方案 二进制文件的读写BinaryReader 类全面解析BinaryWriter 类深度探讨 异步编程与C#的未来方向同步与异步&#xff1a;本质解读Task 的神奇所在async/await 的魔法 在现代编程…

威联通安装Kafka

最近在学习 Kafka 的知识&#xff0c;遇到一些问题网上搜到的信息不全。想要在本地安装一个 Kafka 进行验证&#xff0c;想到了之前买的 Nas 就开始折腾。 用 Docker 的方式安装 Kafka 现在的 Nas 很多都支持 Docker&#xff0c;我买的也支持。威联通的 Docker 叫 Container S…

C语言例4-36:求Fibonacci数列的前40个数

教材优化代码如下&#xff1a; //求Fibonacci数列的前40个数 #include<stdio.h> int main(void) {long int f11,f21;int i1;for(;i<20;i){printf("%15ld%15ld",f1,f2);if(i%20)printf("\n");f1f2;f2f1;}return 0; } 结果如下&#xff1a; 我的基…

深度学习故障诊断实战 | 数据预处理之基于滑动窗的数据样本增强

前言 本期给大家分享介绍如何基于滑动窗方法进行数据样本增强 背景 深度学习模型训练需要大量的样本。在故障诊断领域&#xff0c;每个类别大都会达到300个样本。但是在实际公开数据集中&#xff0c;以CWRU数据集为例&#xff0c;每个类别只有24组数据&#xff0c;这明显是不…

Golang-Gorm-快速上手

Gorm文档 GORM文档地址 安装依赖 go get -u "gorm.io/driver/mysql"go get -u "gorm.io/gorm"连接数据库 默认连接方式 func main() {// 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情dsn : "user:passtcp(127.0.0…

GEE实践应用|热岛效应(一)地表温度计算

目录 1.学习目标 2.理论介绍 3.从MODIS获得地表温度 4.从Landsat卫星获得地表温度 1.学习目标 ①了解如何使用GEE计算地表温度 2.理论介绍 城市化涉及用建筑物、道路和停车场等建筑结构取代自然景观。这种土地覆盖的改变也改变了土地表面的特性。这些变化的范围从表面反射和…

设计模式-设配器模式

目录 &#x1f38a;1.适配器模式介绍 &#x1f383;2.适配器类型 &#x1f38f;3.接口适配器 &#x1f390;4.类的适配器 &#x1f38e;5.优缺点 1.适配器模式介绍 适配器模式&#xff08;Adapter Pattern&#xff09;是作为两个不兼容的接口之间的桥梁。这种类型的设…

【项目技术介绍篇】若依管理系统功能介绍

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过大学刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0…

快速上手Spring Cloud 六:容器化与微服务化

快速上手Spring Cloud 一&#xff1a;Spring Cloud 简介 快速上手Spring Cloud 二&#xff1a;核心组件解析 快速上手Spring Cloud 三&#xff1a;API网关深入探索与实战应用 快速上手Spring Cloud 四&#xff1a;微服务治理与安全 快速上手Spring Cloud 五&#xff1a;Spring …