栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

服务注册与配置一站式管理神器Nacos(四)-- 配置中心的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

服务注册与配置一站式管理神器Nacos(四)-- 配置中心的使用

一、配置 配置介绍:

通常我们在项目中会有很多参数需要配置到项目中去,应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数、启动参数等。

配置的几个特点: 1、配置是独立于程序的只读变量

配置对于程序是只读的,程序通过读取配置来改变自己的行为,但是程序不应该去改变配置

2、配置伴随应用的整个生命周期

配置贯穿于应用的整个生命周期,应用在启动时通过读取配置来初始化,在运行时根据配置调整行为。
比如:启动时需要读取服务的端口号、系统在运行过程中需要读取定时策略执行定时任务等。

3、配置可以有多种加载方式

常见的有程序内部hard code,配置文件,环境变量,启动参数,基于数据库等

4、配置需要治理

同一份程序在不同的环境(开发,测试,生产)、不同的集群(如不同的数据中心)经常需要有不同的
配置,所以需要有完善的环境、集群配置管理

配置中心

在微服务架构中,当系统从一个单体应用,被拆分成分布式系统上一个个服务节点后,配置文件也必须跟着迁移,这样配置就分散了,不仅如此,分散中还包含着冗余,而配置中心的作用就是将配置从各应用中剥离出来,对配置进行统一管理,应用自身不需要自己去管理配置

配置中心的服务流程:

1、用户在配置中心更新配置信息。
2、服务A和服务B及时得到配置更新通知,从配置中心获取配置。

总得来说,配置中心就是一种统一管理各种应用配置的基础服务组件
在系统架构中,配置中心是整个微服务基础架构体系中的一个组件,如下图。它的功能看上去并不起眼,无非就是
配置的管理和存取,但它是整个微服务架构中不可或缺的一环。

配置中心特性:

1、配置项容易读取和修改
2、分布式环境下应用配置的可管理性,即提供远程管理配置的能力
3、支持对配置的修改的检视以把控风险
4、可以查看配置修改的历史记录
5、不同部署环境下应用配置的隔离性

主流配置中心对比

目前市面上用的比较多的配置中心有:Spring Cloud Config、Apollo、Nacos,下面是比对情况。

从配置中心角度来看,性能方面Nacos的读写性能最高,Apollo次之,Spring Cloud Config依赖Git场景不适合开
放的大规模自动化运维API。功能方面Apollo最为完善,nacos具有Apollo大部分配置管理功能,而Spring Cloud
Config不带运维管理界面,需要自行开发。Nacos的一大优势是整合了注册中心、配置中心功能,部署和操作相比
Apollo都要直观简单,因此它简化了架构复杂度,并减轻运维及部署工作。

Nacos配置管理 1、发布配置

首先在nacos发布配置,nacos-restful-consumer服务从nacos读取配置。
浏览器访问 http://127.0.0.1:8848/nacos ,打开nacos控制台,并点击菜单配置管理->配置列表:
在Nacos添加如下的配置:
nacos-restful-consumer:
注:如发布失败,按以下思路去排除错误。
1、nacos的版本和mysql的版本是否对应。 如果mysql是8.0以上,则nacos需1.4版本以上。
2、如果版本兼容,则需考虑mysql的url连接,用户名,密码是否正确。

2、获取配置

要想从配置中心获取配置需添加nacos-config的依赖:


	com.alibaba.cloud
	spring‐cloud‐starter‐alibaba‐nacos‐config

在bootstrap.yml添加配置:

spring:
	cloud:
		nacos:
			config:
				server‐addr: 127.0.0.1:8848 # 配置中心地址
				file‐extension: yaml
				group: DEFAULT_GROUP

注意:要使用配置中心就要在bootstrap.yml中来配置,bootstrap.yml配置文件的加载顺序要比application.yml要优先。

在nacos-restful-consumer工程的controller中增加获取配置的web访问端点/configs,通过标准的spring @Value方式。

@Value("${common.name}")
private String common_name;

@GetMapping(value = "/configs")
public String getvalue(){
return common_name;
}

基于上面的例子,若要实现配置的动态更新,只需要进行如下改造:

// 注入配置文件上下文
@Autowired
private ConfigurableApplicationContext applicationContext;

@GetMapping(value = "/configs")
public String getConfigs(){
return applicationContext.getEnvironment().getProperty("common.name");
}

我们通过nacos控制台更新common.name的配置值,再次访问web端点/configs,发现应用程序能够获取到最新的配置值,说明spring-cloud-starter-alibaba-nacos-config 支持配置的动态更新。

注:Note 可以通过配置spring.cloud.nacos.config.refresh.enabled=false来关闭动态刷新

配置模型管理

对于Nacos配置管理,通过Namespace、group、Data ID能够定位到一个配置集。

配置集(Data ID)

在系统中,一个配置文件通常就是一个配置集,一个配置集可以包含了系统的各种配置信息,例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。每个配置集都可以定义一个有意义的名称,就是配置集的ID即Data ID。

配置项

配置集中包含的一个个配置内容就是配置项。它代表一个具体的可配置的参数与其值域,通常以 key=value 的形式存在。例如我们常配置系统的日志输出级别(logLevel=INFO|WARN|ERROR) 就是一个配置项。

配置分组(Group)

配置分组是对配置集进行分组,通过一个有意义的字符串(如 Buy 或 Trade )来表示,不同的配置分组下可以有相同的配置集(Data ID)。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常见场景:可用于区分不同的项目或应用,例如:学生管理系统的配置集可以定义一个group为:STUDENT_GROUP。

命名空间(Namespace)

命名空间(namespace)可用于进行不同环境的配置隔离。例如可以隔离开发环境、测试环境和生产环境,因为它们的配置可能各不相同,或者是隔离不同的用户,不同的开发人员使用同一个nacos管理各自的配置,可通过namespace隔离。不同的命名空间下,可以存在相同名称的配置分组(Group) 或 配置集。
如果想了解的更加深入,请看下图:

Namespace:代表不同环境,如开发、测试、生产环境。
Group:代表某项目,如XX医疗项目、XX电商项目
DataId:每个项目下往往有若干个工程,每个配置集(DataId)是一个工程的主配置文件

下面演示下获取某配置集的代码:
获取配置集需要指定:
1、nacos服务地址,必须指定
2、namespace,如不指定默认public
在config中指定namespace,例子如下:

config:
server‐addr: 127.0.0.1:8848 # 配置中心地址
file‐extension: yaml
namespace: a1f8e863‐3117‐48c4‐9dd3‐e9ddc2af90a8 # 开发环境
group: DEFAULT_GROUP # xx业务组

3、group,如不指定默认 DEFAULT_GROUP 见上边第2点的例子。
4、dataId,必须指定,名称为应用名称+配置文件扩展名

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1041246.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号