Java开发 - 配置中心初体验

news/2024/11/30 2:40:38/

目录

 

前言

配置中心介绍

什么是配置中心

Nacos配置中心

数据结构

命名空间

分组

服务

配置中心添加配置

读取配置

本地添加依赖

本地添加配置

测试

结语


 

前言

前文讲了ELK,ELK说简单也简单,说复杂也复杂,但说实话,微服务里这么些个东西,从部署角度来看,比起Dubbo,Nacos这些,ELK算是比较难的一个了,上一篇博客博主也只是简单的讲解了安装,关于具体使用还差得很远。所以里面推荐了官方的账号,官方的账号里面内容很多很大,需要耐心去学习。博主还是推荐大家去官方的c站账号下学习,又具体又全面,而且还不会有问题。开始新的学习前,那喊两声:ELK牛逼,ELK真难,加油!加油!

配置中心介绍

配置中心我们也是针对微服务来说的,所以这个配置中心当然是微服务的配置中心,下面,我们就来说说什么是配置中心。

什么是配置中心

就像文字描述的那样,配置中心主要用来解决配置问题,在微服务项目中,我们的配置一般是写在yml文件或者properties文件中的,这是我们所熟知的一种写法。

有时候,多个子项目共用一个配置的时候,当需要修改时,往往需要去修改每一个子项目的配置,搞不好还会改错,这时候,如果能有一个地方可以统一修改,全部生效,那该是多么轻松啊,这就是配置中心的作用。

总结一下就是:配置中心能够达到高效修改各模块配置的作用。

Nacos配置中心

Nacos我们都知道,我们前面微服务中已经学过,我们知道Nacos是注册中心,所有的子项目都在Nacos服务器上留下了自己的身份信息,所以Nacos就可以尝试对已知的服务器做一些管理,比如配置。

Nacos作为配置中心支持的文件格式很多,除了我们所熟悉的properties,yml,还支持txt,json,xml等,实际我们可能用不到那么多。

数据结构

Nacos数据结构,简单分,可以分为三个部分,分别是:命名空间,分组,服务。

命名空间

命名空间又命Namespace,是Nacos提供的最大的数据结构,一个Nacos可以有多个命名空间,命名空间也可以有多个分组,命名空间在Nacos中可自行创建,创建方法见下方:

f67debcbec5e4232bebdc8aec96e4828.png

我们创建的命名空间叫:

00b0500ca18a4ac588e98c97a9f0f757.png

要注意,默认的public命名空间不能删除和修改,你也无法删除和修改。只要自己创建了命名空间,注册Nacos时就可以指定可注册到的命名空间名称了。好处就是,多个命名空间可以对项目起到隔离的作用,使他们之间互不干扰。

要切换命名空间,请看下图:

2f104dec30ab45c69ff14a87849429bc.png  

分组

命名空间中,我们说,一个命名空间可以有多个分组,分组的作用就是对他们做进一步的隔离,不需要额外的分组时,分组名可自定义,我们一般推荐使用:DEFAULF_GROUP。细心的小伙伴会发现,这在我们微服务项目中也是有使用的。

服务

当命名空间和分组名称都确定之后,就可以添加服务和配置了,我们微服务中的各模块就是服务,默认保存在public命名空间下,下面我们就用配置中心功能来修改下配置的位置,设置了命名空间,其实就是设置命名空间ID,这在我们的命名空间截图中是有体现的,大家可以翻上去看一看。

值得一提的是,配置中心的优先级高于项目中已有的yml等配置文件的优先级。这一点,我们在下面会继续讲他们的优先级,这决定了他们的生效顺序。

配置中心添加配置

下面,我们来添加一下配置,就以我们前面学的微服务项目中的cart模块为例,下面开始添加配置:

04020798f6d4499f803e2efbc29897aa.png

配置管理-配置立列表-右上方+号,点击后进入下面的页面:

823e687e9df6453c86eedc15171cc713.png

Data ID就是该配置的名字,可自定义,建议名称格式:nacos-cart.yaml。

Group默认为我们推荐的名称,没有其他分组的情况建议使用默认的,避免搞乱。

配置格式我们建议选YAML,这种格式的层级效果明显,便于观察,主要是现在仅支持YAML和Properties。

配置内容,根据需要把我们本地的配置文件中的内容填写进来。

这里为了测试效果,我们不会把整个配置文件都贴进去,其实贴进去也可以,但为了看效果,我们只把数据库链接部分的配置贴进去,同时把本地文件中数据库部分删除。

像这样:

34498bc60df541d5971140164c715876.png

e70bd74213bd4e878106f38de2ffa91a.png  

读取配置

做完这些还不够,配置中心还不能够正常工作,还需要两步来完成读取配置,让配置中心工作。万丈高楼平地起,虽然前期麻烦一点,但是后面香啊。

本地添加依赖

<!--  配置中心的依赖  -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--  支持SpringCloud加载系统配置文件的依赖   -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

本地添加配置

添加配置时,需要我们新建一个file,名字叫bootstrap.yml,千万别写错了,创建成功后前面的logo也是一片叶子,不同的是右下角是个云的标志:

1a5b30672c614b30b348677e44fb4184.png

接着在这个文件中添加配置信息: 

spring:cloud:nacos:discovery:server-addr: localhost:8848config:#  指定配置中心的位置server-addr: localhost:8848# 指定配置文件所在的组名(命名空间默认public不需要指定)group: DEFAULT_GROUP# 设置配置文件的后缀名# 默认情况下会加载[项目名].[后缀名]为DataId的配置# 当前项目名称为nacos-cart所以默认加载的DataId为:nacos-cart.yamlfile-extension: yaml 

这里里面的文字部分,很重要,特别是group和文件扩展名:

不要纠结这个名字,如果你想要,你可以随便写名字,然后在配置中配置名字:

spring:cloud:nacos:config:name: xxxxx

最后一定要点击发布:

4d0fb4497fcc4eb8be55688ab2e7a716.png

发布成功后会有如下提示,接下来就可以准备测试环节了: 

430ce3fced254f918a46cf387709042e.png

测试

测试很简单,运行你的功能就可以了,在此之前,请启动需要开启的服务,如Nacos,seata等,看自己项目需要开启。运行后,只要cart模块能正常运行并工作,你的测试就是成功的,我们在cart中引入了knife4j,它能正常工作,就代表测试是成功的,不再贴测试结果了,请大家严格自行完成测试。

优先级说明

简单来说,bootstrap.yml>bootstrap.properties>application.yml>application.properties。这是从项目启动到启动完成过程中,配置文件生效的先后顺序,可以看到,yml的优先级永远高于properties,bootstrap.yml优先级最高。

bootstrap这组配置文件有点特殊,一般是专门用于加载系统级别的配置,这些配置一般不会轻易修改。

特别注意,只有SpringCloud项目才能加载bootstrap的配置,加载这组配置也是需要依赖的,上面已经给出:spring-cloud-starter-bootstrap,不过我们给出的依赖是2020年之后的依赖,之前的依赖不是这个,是什么我就不说了,避免误导大家,感兴趣的可以查下。

结语

配置中心的使用整体上算是比较简单的,操作性也不强,只要细心一点就可以完成,难度指数只能算是一颗星了,想起上篇ELK博主就不免心中叹息,只怪博主ELK也没学到家,还不能够用最简洁的方式让大家快速学会,革命尚未成功,同志仍需努力,一起加油吧,童鞋们!

 


http://www.ppmy.cn/news/41646.html

相关文章

动力节点王鹤SpringBoot3笔记-了解AOT和GraalVM

9 了解AOT和GraalVM 9.1 提供性能的技术 什么是AOT&#xff1a; Ahead-of-Time Compilation &#xff1a;预编译&#xff08;提前编译&#xff09;它在 JEP-295 中描述&#xff0c;并在 Java 9 中作为实验性功能添加。 AOT是提升Java程序性能的一种方法&#xff0c;特别是提供…

LAZADA将缩短履约时效,卖家发货倍感压力

Lazada的跨境卖家们&#xff0c;恐怕又要头疼了。 近日&#xff0c; Lazada官方宣布&#xff0c;为了提升消费者体验&#xff0c;平台将调整商家履约订单时效。从2023年5月4日起生成的订单履约时效将有所更新。 具体而言&#xff0c;内地、香港和Laz Go Global的履约节点为“点…

elasticsearch 认知

1.大数据领域需要解决以下三个问题 如何存储数据 传统的关系数据库&#xff08;MySQL、Oracle、和Access等&#xff09;主导了20世纪的数据存储模式&#xff0c;但当数据量达到太字节级&#xff0c;甚至拍字节级时&#xff0c;关系型数据库表现出了难以解决的瓶颈问题。为了解决…

SDUT操作系统课程(CATS)专题一+专题三(参考总结)

CATS专题一+进程同步模型.信号量机制 总结:先看进程优先级,优先级高的进程先进行,一般在CATS中第三个才会出现P/V操作 两个信号量都初始值为零,P操作为信号量减一 如:X=X-1=-1. V操作为信号量加一 如:Y=Y+1=1. 其中如果信号量为-1时,当前进程为阻塞状态,切换到另一…

你真的会自动化测试?自动化测试技术选型抉择

自动化测试框架 在学习自动化测试或者实践自动化测试时&#xff0c;我们一定会对一个名词不陌生&#xff0c;那就是“自动化测试框架”&#xff0c;而有些人也将Selenium、Appium这样的工具也称之为“自动化测试框架”&#xff0c;那么到底自动化测试框架如何理解呢&#xff1…

7nm舱泊一体SoC的新玩家

2016年&#xff0c;高通推出基于14纳米工艺的汽车座舱芯片骁龙820A&#xff0c;彼时&#xff0c;传统座舱SoC霸主NXP主推的是28纳米工艺的iMX8系列。不过&#xff0c;两款芯片都没有能够达到预期的量产效果。 真正的时代变革&#xff0c;来自于高通在2019年发布的全球首款量产7…

Zookeeper集群 + Fafka集群

目录 第一章Zookeeper 概述 1.1.Zookeeper 定义 1.2.Zookeeper 工作机制 1.3.Zookeeper 特点 1.4.Zookeeper 数据结构 1.5.Zookeeper 应用场景 1.6.Zookeeper 原理之选举机制 1.7.部署 Zookeeper 集群 总结 第二章消息队列概述 2.1消息队列需求原因 2.2消息队列的优…

SQL Server的死锁说明

死锁指南一、了解死锁二、检测并结束死锁2.1、可能死锁的资源三、处理死锁四、最大限度地减少死锁4.1、以相同的顺序访问对象4.2、避免事务中的用户交互4.3、保持交易简短且在一个批次中4.4、使用较低的隔离级别4.5、使用基于行版本控制的隔离级别4.6、使用绑定连接4.7、停止事…