SpringCloudAlibaba微服务实战系列(二)Nacos配置中心

SpringCloudAlibaba Nacos配置中心

在java代码中或者在配置文件中写配置,是最不雅的,意味着每次修改配置都需要重新打包或者替换class文件。若放在远程的配置文件中,每次修改了配置后只需要重启一次服务即可。话不多说,直接干货拉满。

集成nacos配置中心

首先引入配置相关的依赖

<!--Nacos 配置中心依赖-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--bootstrap的依赖,由于SpringCloud2020版本上bootstrap被默认禁用了所以要引入才能使用-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

其次保证项目启动时,配置先从nacos配置中心获取,所以配置都写在bootstrap.ymlbootstrap.properties中即可。bootstrap的文件比application的优先级要高。配置详情如下:

server:port: 9001
spring:application:name: consumer # 应用名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址config:server-addr: localhost:8848 # nacos地址file-extension: yml # 指定配置内容的数据格式

nacos中的DataId配置

DataId主要是使当前项目快速进行多套配置内容的切换,看看DataId的组成格式:

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

  • prefix:项目的服务名,也就是spirng.application.name的值
  • spring.profiles.active:当前的环境
  • file-extension:文件后缀

当spring.profiles.active为空时,对应的’-'连接符也将会不存在,DataId的格式就是变换为${prefix}.${file-extension}

设置profiles为dev

server:port: 9001
spring:application:name: consumer # 应用名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址config:server-addr: localhost:8848 # nacos地址file-extension: yml # 指定配置内容的数据格式profiles:active: dev

那么我们的文件名就应该为consumer-dev.yml,我们需要在nacos上创建配置,先创建consumer-dev.yml和consumer-prod.yml文件

在这里插入图片描述

在这里插入图片描述

通过代码获取这个配置,然后通过调整环境,注意它们的配置返回。

@RestController// @RestController注解是@Controller+@ResponseBody
@RefreshScope //通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新
public class ConfigController {@Value("${custom.info}")// 注解获取custom.info配置的值private String config;@RequestMapping("/getConfig")public String getConfig() {  // 获取配置的接口return config;}
}

调用查看结果:

D:\springcloud\doc>curl localhost:9001/getConfig
nacos config dev

切换为prod环境,重启项目再次调用

spring:profiles:active: prod
D:\springcloud\doc>curl localhost:9001/getConfig
nacos config prod

莫得问题~

Nacos的Group配置

group是分组的意思,表示配置内容归于哪个组,默认的是DEFAULT_GROUP组,如创建配置文件时声明一个CONSUMER_GROUP

在这里插入图片描述

java代码配置:

server:port: 9001
spring:application:name: consumer # 应用名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址config:server-addr: localhost:8848 # nacos地址file-extension: yml # 指定配置内容的数据格式group: CONSUMER_GROUP # 指定某GROUPprofiles:active: dev

重启调用

D:\springcloud\doc>curl localhost:9001/getConfig
nacos config dev CONSUMER_GROUP

nacos的Namespace配置

namespace表示命名空间,比较粗粒度的控制。默认的namespace是public,当创建新的命名空间时,如果要指定此命名空间,则需要在java配置中声明它的namespace的id值

在这里插入图片描述

如上图创建了一个命名空间,在namespace中创建consumer-dev.yml的配置文件

在这里插入图片描述

在这里插入图片描述

在java配置中namespace是填写的ID值而不是名称

server:port: 9001
spring:application:name: consumer # 应用名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址config:server-addr: localhost:8848 # nacos地址file-extension: yml # 指定配置内容的数据格式namespace: e6d5450d-a8d3-45c4-9801-091586082104 # 命名空间的id值profiles:active: dev

Nacos的持久化

Nacos默认的是使用嵌入式数据库Derby数据库,也就表明越到后面越容易出现瓶颈,如存储容量限制,不方便数据查询、存储优化等等。Nacos支持使用mysql做数据持久化,版本要求mysql在5.6.5+

mysql数据持久化

在mysql中创建一个数据库,并且导入nacos-mysql.sql的文件(路径是/conf/nacos-mysql.sql)

在这里插入图片描述

在Nacos的conf/application.properties文件中添加mysql数据源支持

#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql	# 添加mysql数据源### Count of DB:
db.num=1### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root		# 数据库账号
db.password.0=123456	# 密码

重启下nacos,登录进入后,发现我们刚刚测试的那些数据都不在了,这就是不做持久化的问题。

现在已经将数据的持久化加上了,我们像刚刚一样随便添加几个数据,然后再次重启nacos,看看数据有没有丢失。

在这里插入图片描述

server:port: 9001
spring:application:name: consumer # 应用名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址config:server-addr: localhost:8848 # nacos地址file-extension: yml # 指定配置内容的数据格式profiles:active: dev

调试:

D:\springcloud\doc>curl localhost:9001/getConfig
nacos config dev

重启nacos,可以看到我们的数据都还在

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CVB6CGNJ-1690076592178)(../imgs1/16.png)]

nacos的配置扩展

除了通过${prefix}-${spring.profiles.active}.${file-extension}的方式指定我们的配置文件,我们还可以直接通过dataId配置指定nacos上的一些共享配置

如创建了一个redis的共享配置

在这里插入图片描述

在java项目中不仅要读取consumer-dev.yml还要读取redis.yml的配置,可以使用extension-configs来声明

server:port: 9001
spring:application:name: consumer # 应用名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址config:server-addr: localhost:8848 # nacos地址file-extension: yml # 指定配置内容的数据格式extension-configs:-dataId: redis.ymlgroup: DEFAULT_GROUPrefresh: trueprofiles:active: dev

extension-configs是一个数组,extension-configs中若有多个配置时

extension-configs:-dataId: redis.ymlgroup: DEFAULT_GROUPrefresh: true-dataId: rabbitmq.ymlgroup: DEFAULT_GROUPrefresh: true

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

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

相关文章

NoSQL之 Redis配置与优化

文章目录 一.关系数据库与非关系型数据库1.关系型数据库2.非关系型数据库3.关系型数据库和非关系型数据库区别4.非关系型数据库产生背景 二.Redis简介1.了解Redis2.Redis 具有以下几个优点3.Redis为何这么快 三.Redis 安装及应用1.Redis 安装部署2.Redis 命令工具2.1 redis-cli…

会点C++还需要再学Python吗?

提到的C、数据结构与算法、操作系统、计算机网络和数据库技术等确实是计算机科学中非常重要的基础知识领域&#xff0c;对于软件开发和计算机工程师来说&#xff0c;它们是必备的核心知识。掌握这些知识对于开发高性能、可靠和安全的应用程序非常重要。Python作为一种脚本语言&…

运动蓝牙耳机什么牌子的好用、最好用的运动蓝牙耳机推荐

音乐是运动的灵魂&#xff0c;而一款优秀的运动耳机则是让音乐与我们的身体完美融合的关键。今天&#xff0c;我推荐五款备受运动爱好者喜爱的耳机&#xff0c;它们以卓越的音质、舒适的佩戴和出色的稳定性能脱颖而出&#xff0c;助你在运动中创造最佳状态。 1、NANK南卡Runne…

安全第一天

1. 编码 1.1 ASCLL编码 ASCII 是基于拉丁字母的一套电脑编码系统&#xff0c;主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准&#xff0c;并等同于国际标准ISO/IEC 646。 1.2 URL编码 URL&#xff1a;&#xff08;统一资源定位器、定位地址&#xff0c;俗称网页…

k8s常见的资源对象使用

目录 一、kubernetes内置资源对象 1.1、kubernetes内置资源对象介绍 1.2、kubernetes资源对象操作命令 二、job与cronjob计划任务 2.1、job计划任务 2.2、cronjob计划任务 三、RC/RS副本控制器 3.1、RC副本控制器 3.2、RS副本控制器 3.3、RS更新pod 四、Deployment副…

概率论的学习和整理21:用EXCEL来做假设检验(未完成草稿)

目录 1 EXCEL可以用来做假设检验 1.1 如何打开 数据分析 和 规划求解 1.2 EXCEL里关于正态分布的准备知识 2 基本的假设检验 2.1 最基本的假设检验&#xff0c;单边的Z检验 2.1 双样本F检验 2.1.1 例题 2.1.2 进行F检验之前需要满足一些假设条件 2.1.3 计算步骤 2.1…

MySQL 数据抽稀 每分钟取一条

假如原始数据为每5秒一个数据&#xff0c;现在想展示为每4分钟一条数据&#xff0c;先按照分钟数把除以4余数为0的行选出来&#xff0c;在按照 年月日 时分&#xff0c;做组内排序&#xff08;窗函数ROW_NUMBER&#xff09;&#xff0c;最后再拿出序号为1的行。 WITH data_01 …

网工实操基础学习23.07.05

1.交换机&#xff0c;路由器 交换机的作用是链接同一个网络下的所有设备&#xff0c;如果有无线设备加入&#xff0c;需要添加AP&#xff08;无线接入点&#xff09;设备在交换机层次上 路由器的作用是将不同网络下的设备链接 2.IP地址 划分网段&#xff1a;网络位、网段、…

大模型开发(十二):Function calling 流程优化并实现多轮对话任务

全文共1w余字&#xff0c;预计阅读时间约25~40分钟 | 满满干货(附代码案例)&#xff0c;建议收藏&#xff01; 本文目标&#xff1a;围绕Chat模型的Function calling功能进行更高层次的函数封装&#xff0c;并实现一个能够调用外部函数的多轮对话任务 写在前面&#xff1a;本文…

华为数通HCIA-数通网络基础

基础概念 通信&#xff1a;两个实体之间进行信息交流 数据通信&#xff1a;网络设备之间进行的通信 计算机网络&#xff1a;实现网络设备之间进行数据通信的媒介 园区网络&#xff08;企业网络&#xff09;/私网/内网&#xff1a;用于实现园区内部互通&#xff0c;并且需要部…

WAF/Web应用安全(拦截恶意非法请求)

Web 应用防火墙&#xff08;Web Application Firewall&#xff0c; WAF&#xff09;通过对 HTTP(S) 请求进行检测&#xff0c;识别并阻断 SQL 注入、跨站脚本攻击、跨站请求伪造等攻击&#xff0c;保护 Web 服务安全稳定。 Web 安全是所有互联网应用必须具备的功能&#xff0c…

Python实现抽象工厂模式

抽象工厂模式是一种创建型设计模式&#xff0c;用于创建一系列相关或依赖对象的家族&#xff0c;而无需指定具体类。在Python中&#xff0c;可以通过类和接口的组合来实现抽象工厂模式。 下面是一个简单的Python实现抽象工厂模式的示例&#xff1a; # 抽象产品接口 class Abs…

【前端知识】React 基础巩固(三十二)——Redux的三大原则、使用流程及实践

React 基础巩固(三十二)——Redux的三大原则 一、Redux的三大原则 单一数据源 整个应用程序的state被存储在一颗object tree 中&#xff0c;并且这个object tree 只存储在一个store中&#xff1b;Redux并没有强制让我们不能创建多个Store&#xff0c;但是那样做不利于数据维护…

OpenHarmony与HarmonyOS联系与区别

目录 1. 背景 2.OpenHarmony 3.HarmonyOS 4.鸿蒙生态 5.OpenHarmony与HarmonyOS的技术上实现区别 1.语言支持 2.SDK 的不同 3.运行调测方式不同 4.对APK的兼容性不同 5.包含关系 6.调试命令 6.何时选择OpenHarmony或是HarmonyOS&#xff1f; 1. 背景 开篇就说“关于…

RabbitMQ集群搭建

说明&#xff1a;集群&#xff0c;不管是Redis集群&#xff0c;还是MQ集群&#xff0c;都是为了提高系统的可用性&#xff0c;使系统不至于因为Redis、MQ宕机而崩溃。本文介绍RabbitMQ集群搭建&#xff0c;RabbitMQ集群分为以下三类&#xff1a; 普通集群 镜像集群 仲裁队列 …

C语言中指针(简略复习)

一、指针 1. 指针运算 设p为指针&#xff0c;T为类型&#xff0c;n为整型数字&#xff0c;则pn表示&#xff0c;指针从当前位置向后移动n个数据单位&#xff0c;而不是n个字节。 数据类型不同&#xff0c;移动的数据单位字节数也不同&#xff0c;实际上移动的字节数为n*sizeo…

3DVR全景旅游,最新数字化智慧文旅

导语&#xff1a; 随着科技的飞速发展&#xff0c;3DVR全景旅游正以其独特的特点和无限的优势&#xff0c;成为当今智慧文旅的领航者。穿戴上VR设备&#xff0c;只需一个轻轻的点击&#xff0c;你将被带入一个全新的数字世界&#xff0c;领略美景、探索奇迹。让我们一起深入了…

探索容器镜像安全管理之道

邓宇星&#xff0c;Rancher 中国软件架构师&#xff0c;7 年云原生领域经验&#xff0c;参与 Rancher 1.x 到 Rancher 2.x 版本迭代变化&#xff0c;目前负责 Rancher for openEuler(RFO)项目开发。 最近 Rancher v2.7.4 发布了&#xff0c;作为一个安全更新版本&#xff0c;也…

【Spring MVC】Spring MVC的功能使用和相关注解介绍

Spring MVC主要有三个功能&#xff1a; 连接获取参数输出数据 对于 Spring MVC 来说&#xff0c;掌握了以上 3 个功能就相当于掌握了Spring MVC。 1.连接 连接的功能&#xff1a;将⽤户&#xff08;浏览器&#xff09;和 Java 程序连接起来&#xff0c;也就是访问⼀个地址能…

基于YOLOv5的WiderFace人脸检测检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于YOLOv5的WiderFace人脸检测系统可用于日常生活中检测与定位人脸目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的人脸目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型训练数据集&…