Spring Cloud Alibaba(二)Nacos统一配置管理

news/2024/11/29 9:55:34/

目录

一、为什么需要配置中心

二、常用的配置中心

Nacos 的几个概念

三、Nacos配置中心的使用

(一)properties格式

1、导入依赖

2、在配置中心新建配置

3、修改配置文件名为bootstrap.yml

4、在微服务中添加nacos config服务地址的配置

5、测试获取注册中心的配置

(二)yaml格式

(三)profiles.active—粒度配置

经常会出现的报错信息:

常见报错


在这里插入图片描述

一、为什么需要配置中心

在没有配置中心之前,传统应用配置的存在以下痛点:

(1)采用本地静态配置,无法保证实时性:修改配置不灵活且需要经过较长的测试发布周期,无法尽快通知到客户端,还有些配置对实时性要求很高,比方说主备切换配置或者碰上故障需要修改配置,这时通过传统的静态配置或者重新发布的方式去配置,那么响应速度是非常慢的,业务风险非常大

(2)易引发生产事故:比如在发布的时候,容易将测试环境的配置带到生产上,引发生产事故。

(3)配置散乱且格式不标准:有的用properties格式,有的用xml格式,还有的存DB,团队倾向自造轮子,做法五花八门。

(4)配置缺乏安全审计、版本控制、配置权限控制功能:谁?在什么时间?修改了什么配置?无从追溯,出了问题也无法及时回滚到上一个版本;无法对配置的变更发布进行认证授权,所有人都能修改和发布配置。

    而配置中心区别于传统的配置信息分散到系统各个角落的方式,对系统中的配置文件进行集中统一管理,而不需要逐一对单个的服务器进行管理。那这样做有什么好处呢?
使用配置中心之后

(1)通过格式统一化配置中心,可以使得配置标准化、

(2)当配置信息发生变动时,修改实时生效,无需要重新重启服务器,就能够自动感知相应的变化,并将新的变化统一发送到相应程序上,快速响应变化。比方说某个功能只是针对某个地区用户,还有某个功能只在大促的时段开放,使用配置中心后只需要相关人员在配置中心动态去调整参数,就基本上可以实时或准实时去调整相关对应的业务。

(3)通过审计功能还可以追溯问题

二、常用的配置中心

微服务中配置中心的主流解决方案主要有三种:Nacos、Apollo、Config+Bus,不过里我们主要介绍 Nacos 作为配置中心的用法。

在这里插入图片描述

Nacos 的几个概念

命名空间(Namespace)
命名空间可用于进行不同环境的配置隔离。一般一个环境划分到一个命名空间
配置分组(Group)
配置分组用于将不同的服务可以归类到同一分组。一般将一个项目的配置分到一组
配置集(Data ID)
在系统中,一个配置文件通常就是一个配置集。一般微服务的配置就是一个配置集
在这里插入图片描述

三、Nacos配置中心的使用

使用nacos作为配置中心,其实就是将nacos当做一个服务端,将各个微服务看成是客户端,我们将各个微服务的配置文件统一存放在nacos上,然后各个微服务从nacos上拉取配置即可。

就相当于服务模块请求nacos,nacos响应给服务模块一些数据

(一)properties格式

1、导入依赖

哪个服务模块要获取nacos配置管理的数据,就在哪个模块上添加依赖

<!--nacos的config配置中心依赖-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--把application.yml配置文件名称改为bootstrap.xml-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

2、在配置中心新建配置

 

3、修改配置文件名为bootstrap.yml

4、在微服务中添加nacos config服务地址的配置

spring:application:name: user-server #注册服务的名称# 配置数据源datasource:druid:url: jdbc:mysql://localhost:3306/nacos?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8driver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: 123456#clout配置nacos服务注册中心cloud:nacos:discovery: #配置客户端server-addr: 192.168.100.129:8848 #虚拟机ip地址和端口号username: nacos #nacos网址的账号密码password: nacos#配置nacos网站的config配置中心config:server-addr: 192.168.100.129:8848 #虚拟机ip地址和端口号file-extension: properties #配置内容的类型格式username: nacos #nacos网站的账号密码password: nacos

5、测试获取注册中心的配置

@RestController
@RequestMapping("/user")
public class UserController {@Value("${username}")//通过配置中心的配置内容的键获取valuepublic String username;@Value("${age}")//通过配置中心的配置内容的键获取valuepublic String age;@GetMapping("/test2")public void test2(){System.out.println(username); //控制台打印张三System.out.println(age);//99}}

6、可以将yml配置文件中数据库的配置移至配置中心,并修改工程中数据源的配置

在user服务模块中获取配置中心的配置内容数据源配置,这样也可以把数据库配置成功,就可以把yml配置文件中的数据源配置删除了

@Configuration
public class DataSourceConfig {@Value("${spring.datasource.druid.username}")private String username;@Value("${spring.datasource.druid.password}")private String password;@Value("${spring.datasource.druid.url}")private String url;@Value("${spring.datasource.druid.driver-class-name}")private String driverClassName;@Beanpublic DataSource dataSource(){DruidDataSource druidDataSource = new DruidDataSource();druidDataSource.setUrl(url);druidDataSource.setUsername(username);druidDataSource.setPassword(password);druidDataSource.setDriverClassName(driverClassName);return druidDataSource;}
}

(二)yaml格式

1、配置中心新建配置

在这里插入图片描述

2、修改工程配置文件名为bootstrap.yml并修改配置文件配置

在这里插入图片描述

(三)profiles.active—粒度配置

1、配置中心创建配置

data id : 服务名-命名空间名.后缀名(order-server-dev.yaml)

在这里插入图片描述

2、工程模块配置

在这里插入图片描述

经常会出现的报错信息:

org.springframework.beans.factory.BeanCreationException:@Value没有注入成功,要仔细检查一遍

常见报错

1、如果启动不了报错,有可能出现的问题是:防火墙没有关闭,关闭防火墙后再去开启Nacos服务

查看防火状态

systemctl status firewalld

img

systemctl stop firewalld

然后再去启动Nacos服务

2、如果启动成功了,发现nacos服务注册中心网站没有任何数据和注册的消息,有可能是本机的网络更改了

因为conf/application.properties文件中IP地址是当前网络属性的IPv4地址,如果更换了网络要修改IP地址

# 启用standalone模式
nacos.standalone=true
# 修改端口号
server.port=8848
# 修改数据存储位置
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.216.176:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

注意要修改以下参数: 

server.port:修改为要使用的端口号 db.url.0:修改为MySQL数据库的连接地址,IP地址是当前网络属性的IPv4地址,换一个网络会发生变化,记得修改

db.user、db.password:并设置正确的数据库用户名和密码


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

相关文章

2013蓝桥杯真题省赛翻硬币 C语言/C++

[蓝桥杯 2013 省 B] 翻硬币 题目背景 小明正在玩一个“翻硬币”的游戏。 题目描述 桌上放着排成一排的若干硬币。我们用 * 表示正面&#xff0c;用 o 表示反面&#xff08;是小写字母&#xff0c;不是零&#xff09;&#xff0c;比如可能情形是 **oo***oooo&#xff0c;如果…

【Python_Pandas】reset_index() 函数解析

【Python_Pandas】reset_index函数解析 文章目录 【Python_Pandas】reset_index函数解析1. 介绍2. 示例2.1 参数drop2.2 参数inplace2.3 参数level2.4 参数col_level2.5 参数col_fill 参考 1. 介绍 pandas.DataFrame.reset_index reset_index(levelNone, dropFalse, inplaceF…

辅助驾驶功能开发-功能规范篇(16)-2-领航辅助系统NAP-自动变道-1

书接上回 2.3.4.自动变道 当车辆处于导航引导模式NOA功能时(即车辆横向控制功能激活),且车速大于40km/h,驾驶员按下转向灯拨杆或系统判断当前有变道需要时,自动变道系统通过对车道线、自车道前方目标距离、邻近车道前后方目标距离等环境条件进行判断,在转向灯亮起3s后控…

Oracle_11g_RAC安装与配置for_Linux(2)

确认软件要求 LINUX发行版要求 Linux Distribution Requirements Asianux Distributions Asianux Server 3, Service Pack 2 (SP2) Oracle Linux Distributions Oracle Linux 4 Update 7, kernel 2.6.9 or laterOracle Linux 5 Update 2, kernel 2.6.18 or later (compatib…

Hugging Face Transformers Agent

&#x1f917;Hugging Face Transformers Agent 就在两天前&#xff0c;&#x1f917;Hugging Face 发布了 Transformers Agent——一种利用自然语言从精选工具集合中选择工具并完成各种任务的代理。听着是不是似曾相识&#xff1f; 没错&#xff0c;Hugging Face Transformer…

数据分析06——Pandas中的数据抽取

1、前言&#xff1a; 在Pandas中进行数据抽取主要有两种方法&#xff0c;一种是loc方法&#xff0c;一种是iloc方法&#xff1b;在获取数据时可以获取的数据有三种形式&#xff0c;一种是Series类型&#xff0c;一种是DataFrame类型&#xff0c;还有一种是直接获取数据值&…

一五一、web+小程序骨架屏整理

骨架屏介绍 请点击查看智能小程序骨架屏 车载小程序骨架屏 车载小程序为方便开发者设置骨架屏&#xff0c;在智能小程序的基础上抽取出骨架屏模板&#xff0c;开发者只需要在 skeleton 文件夹下配置config.json&#xff08;page 和骨架屏的映射关系文件&#xff09;即可生效骨…

stm32f407单片机上通过HAL库实现can总线数据的收发

最近在使用can总线&#xff0c;由于这个以前接触的比较少&#xff0c;所以调试代码的时候直接是下载的正点原子的例程&#xff0c;在这个基础上修改调试的。现在将调试中遇到的问题&#xff0c;总结一下&#xff0c;避免以后踩坑。目前写了一个查询方式的&#xff0c;一个中断方…