Nacos配置中心

简介: 本章基于Nacos实现配置中心,解决微服务架构中配置管理难题。通过引入nacos-config依赖与bootstrap.yaml文件,实现应用启动时优先加载远程配置,动态获取userservice-dev.yaml等环境配置,支持热更新、集中化管理,提升系统可用性与运维效率。

.引言
上一节我们借助于Nacos实现注册中心,完美替换了Eureka在项目之初的功能,开始本章节之前我们一起回忆下Nacos实现注册中心的关键步骤

  1. 引入springcloud-alibaba/nacos-discovery依赖
  2. 去除原eureka依赖、去除配置文件中eureka注册信息
  3. 新增nacos注册信息:spring.cloud.nacos.server-addr:localhost:8848
  4. 重启项目并验证
    在此基础之上我们验证了Nacos的负载均衡策略、权重控制、环境隔离等信息,希望大家还能有点印象。
    2.为什么需要配置中心
    试想最初的单体应用到如今的微服务部署(服务可能上百个),配置文件从修改到重启完成,服务中断可以按分钟计。以笔者负责应用为例,当数十数百个应用都需要修改配置,每个都重启部署的时候,服务中断将不再是可估算的现象。

因此我们需要一个类似注册中心的中间件,将配置中心从应用中解耦,应用不再是完全读取本地配置(部分不会频繁热更新的参数仍应用自身维护),而是直接拉取配置中心的信息作为应用参数,后续执行自己的业务流程。
下图为Nacos实现原理图:

但是引入配置中心的同时,我们不免思考一些Nacos已经遇到过、并成功解决的问题:
● 配置中心挂了怎么办?
● 谁负责将配置变更同步给应用?pull?push?
● 配置中心本身多节点部署,自身数据不同步又该如何解决呢?
Nacos是如何解决这些问题的,读者们可以参见上一节:Nacos白皮书或等笔者后续给出分析,基于上述背景,我们本章节将借助Nacos带领大家实现一个配置中心。
3.Nacos实现配置中心
3.1 新增配置信息
Nacos实现配置中心较为简单,首先在服务端新增一个配置信息(profile指项目运行环节:dev/test/pro)

注意:此处笔者新增在public空间下,如有部分读者是dev添加,则对应需要追加namespace(参见上节)

3.2 微服务拉取配置信息
配置完成之后,下一步就是在应用中拉取到刚才的配置信息。回顾我们原来的应用启动过程,应用启动时会读取本地配置文件application.yml,nacos也不例外他会将nacos配置信息同application.yml中的信息合并输出。那么问题来了:如果应用不能先读取到nacos配置信息(nacos地址-->配置信息)又怎么合并到一起呢?因此Spring引入一个新的配置文件:bootstarp.yaml文件,其读取顺序要优先于application.yml文件,如下:

1.引入nacos-config依赖
在user-service中新增nacos-config依赖


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

2.新增bootstrap.yaml文件
在user-service中新增配置文件:bootstrap.yaml,内容如下:
spring:
application:
name: userservice # 服务名称
profiles:
active: dev # 当前使用dev环境
cloud:
nacos:
server-addr: localhost:8848
config:
file-extension: yaml # 文件后缀名
此时应用就会使用以下规则作为文件的DataId匹配对应的配置文件:{spring.application.name}-${spring.procile.active}.${spring.cloud.nacos.config.file-extension}
以本例为准读取的即为:userservice-dev.yaml

相关文章
|
消息中间件 IDE Java
阿里云spring脚手架
阿里云spring脚手架
5105 1
|
Java 数据库连接 Maven
IDEA下Maven骨架(archetype)搭建
通过Maven生成骨架(通用项目目录结构)流程记录
1845 1
|
11月前
|
负载均衡 Java Nacos
Spring Cloud五大组件
Spring Cloud五大组件
|
4月前
|
算法 Java 微服务
【SpringCloud(1)】初识微服务架构:创建一个简单的微服务;java与Spring与微服务;初入RestTemplate
微服务架构是What?? 微服务架构是一种架构模式,它提出将单一应用程序划分为一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。 每个服务允许在其独立的进程中,服务于服务间采用轻量级的通信机制互相协作(通常是Http协议的RESTful API或RPC协议)。 每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具对其进行构建
559 126
|
2月前
|
弹性计算 数据库连接
阿里云服务器ECS按流量收费标准,公网带宽1GB流量0.8元/GB(中国大陆地域)
阿里云ECS按流量计费,中国大陆多数地域0.8元/GB,青岛0.72元/GB,中国香港1.0元/GB,美国0.5元/GB,日本0.6元/GB,韩国0.8元/GB。仅公网出方向流量收费,内网及入向流量免费,支持设置峰值带宽,按小时结算,多地域价格差异明显,适合流量波动大的业务场景。
430 2
|
2月前
|
弹性计算 测试技术
阿里云服务器按使用流量计费:适用场景、收费标准及费用控制详解
阿里云服务器的按使用流量计费模式,针对公网访问需求具有特定场景适配性,其收费标准因地域而异,同时可通过相关设置控制费用风险,以下为详细说明:
|
前端开发 Java Nacos
spring cloud nacos整合gateway(二)
spring cloud nacos整合gateway
264 1
|
负载均衡 Java Nacos
spring cloud nacos整合gateway(一)
spring cloud nacos整合gateway
1042 1
|
监控 Java 测试技术
Spring Boot和XXL-Job:高效定时任务管理
Spring Boot和XXL-Job:高效定时任务管理
1389 0
|
Java Maven
Maven配置阿里云镜像与JDK编译版本
Maven配置阿里云镜像与JDK编译版本
7758 0
Maven配置阿里云镜像与JDK编译版本