SpringCloud-搭建Nacos配置中心

news2024/11/28 22:53:57

一、Nacos 功能介绍

Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一个分布式服务注册、配置管理,以及服务健康管理平台。在微服务架构中,配置管理是至关重要的一环,Nacos 提供了可靠、动态的配置管理功能,为分布式系统的配置中心提供了便捷的解决方案。

Nacos的主要功能图:

Nacos 除了可以作为服务的注册中心,同样可以作为集中管理配置信息的配置中心来使用。我们通过在 Nacos 的控制台中对配置信息进行修改,可以直接作用到应用,避免应用的重新发布,这个过程叫配置的热更新。

下面我们就来一步一步介绍如何在 Spring Cloud 微服务项目里搭建 Nacos 配置中心。


二、安装 Nacos

Nacos的安装相对简单,首先需要从官方网站下载最新版本的Nacos Server压缩包。解压后,通过执行相应的启动脚本,即可启动Nacos服务。在启动过程中,可以通过修改配置文件来配置Nacos的各项参数,例如数据库配置、端口号等。

可以参考我之前写过的这篇文章:SpringCloud-搭建Nacos服务中心


三、项目引入 Nacos

首先我们准备好或者创建一个微服务项目,如果不会创建,可以参考:

SpringCloud-创建多模块项目

项目准备好之后,我们引入 Nacos,引入注册中心的流程可以参考下面的文章:

SpringCloud-项目引入Nacos

这次,由于我们需要使用到 Nacos 配置管理的功能,所以每个服务模块的 pom.xml 里还需要引入用于 Nacos 配置管理的 jar 包:

<!-- Maven 依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>


四、Nacos控制台新建配置

我们访问 Nacos 的控制台页面,Nacos 控制台默认地址是 localhost:8848/nacos,创建配置:

配置起名为:springcloud-provider.yaml,类型选为 YAML 类型,配置内容我们写一个时间格式:

pattern:
    dateformat: yyyy-MM-dd HH:mm:ss

其他内容我们先不写,Namespace 用于指定命名空间来实现环境隔离,Namespace 是最外层的环境,向内依次是 Group 和服务。

点击发布,可以看到这条配置已经显示在控制台了。

创建配置成功,接着,我们要去实现项目读取 Nacos 上的配置。 


五、微服务项目读取配置

1、创建bootstrap.yml文件

在 /resource 文件夹下创建 bootstrap.yml 文件,和原先的 application.yml 配置文件平级,并将原先配置文件中的 nacos 配置的部分移动到优先级更高的文件 bootstrap.yml 里。

bootstrap.yml:

server:
  #程序端口号
  port: 8083
spring:
  application:
    name: springcloud-provider
  profiles:
    active: dev
  cloud:
    nacos:
      config:
        file-extension: yaml
        username: nacos
        password: nacos
        server-addr: 127.0.0.1:8848
      discovery:
        server-addr: 127.0.0.1:8848

原先的 application.yml 变成:

management:
  endpoints:
    web:
      exposure:
        #公开所有端点
        include: '*'


2、增加bootstrap.yml的读取依赖

每个想要进行 Nacos 配置管理的服务模块,不仅需要创建 bootstrap.yml 文件,还需要引入能够在项目启动时自动发现并加载 bootstrap.yml 文件的依赖,在 pom.xml 里添加:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
    <version>3.0.1</version>
</dependency>

这样在在项目启动时,bootstrap.yml 文件就可以自动被发现并加载了。


3、编写读取配置信息的接口

在 Spring Cloud 项目中,我们可以通过注入 @Value 注解来读取 Nacos 中的配置信息。

创建 ConfigController 类:

package com.example.springcloudprovider.demos.web;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {

    @Value("${pattern.dateformat}")
    private String dateformat;

    @GetMapping("dateformat")
    public String now(){
        return dateformat;
    }

}


4、测试读取配置信息

启动项目,访问测试接口:localhost:8083/config/dateformat

可以看到我们在 Nacos 上配置的日期格式已经被加载到项目里了。


六、测试Nacos对配置热更新

1、修改Nacos上配置内容

我们在 Nacos 控制台里修改配置,将 dateformat 改为 yyyy-MM-dd HH:mm:ssss


2、查看项目内配置是否更新

再次访问测试接口:localhost:8083/config/dateformat

可以看到我们的项目配置已经被热更新了,即配置实时更新,不需要重新启动或部署项目。

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

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

相关文章

python-分享篇-GUI界面开发-PyQt5-禁止窗体显示最大化按钮及调整窗体大小

代码 # -*- coding: utf-8 -*-# Form implementation generated from reading ui file nochange.ui # # Created by: PyQt5 UI code generator 5.11.3 # # WARNING! All changes made in this file will be lost! 禁止窗体显示最大化按钮及调整窗体大小from PyQt5 import QtCo…

开局托儿所

一&#xff0c;游戏规则 示例&#xff1a; 9549366345591582732535371762455786747469134955224161766515693255444341522757146691483635716392362557418825198461525396798798225943422864547928724689891326449758 二&#xff0c;贪心算法 我们先用贪心算法试一下&#xf…

wordpress好的网站主题

有什么好的网站主题&#xff0c;都分享在这里了。 蓝色风格的wordpress模板&#xff0c;好的wordpress网站主题&#xff0c;需要既好看&#xff0c;又好用。 https://www.zhanyes.com/qiye/6305.html 血红色的好看的wordpress主题&#xff0c;布局经典&#xff0c;设计好的&am…

Vue2学习第二天

Vue2 学习第二天 1. 数据绑定 Vue 中有 2 种数据绑定的方式&#xff1a; 单向绑定(v-bind)&#xff1a;数据只能从 data 流向页面。双向绑定(v-model)&#xff1a;数据不仅能从 data 流向页面&#xff0c;还可以从页面流向 data。 备注&#xff1a; 双向绑定一般都应用在表单…

大学生画图搜题答案神器?一键查询完备大学题库 #知识分享#经验分享#学习方法

大学生必备的搜题工具&#xff0c;专业课本习题、电子版教材、考研资料、英语四六级等考试题目也能一并搜索&#xff0c;每道题目都有详细的讲解&#xff0c;每个都堪称大学神器。 1.试题易 这是一个网站 涵盖初高中&#xff0f;大学&#xff0f;专升本&#xff0f;考研&…

python视频播放列表信息库之m3u8使用详解

m3u8库是什么&#xff1f; m3u8是一个用于解析和操作M3U8文件的Python库。M3U8文件&#xff0c;是指使用UTF-8编码格式的M3U文件&#xff0c;它们通常用于播放列表文件&#xff0c;尤其是在HTTP Live Streaming&#xff08;HLS&#xff09;中。简单来说&#xff0c;m3u8库能帮…

嵌入式中I2C 相关的硬件问题汇总及死锁解决办法

本文主要介绍如何解决I2C设备硬件设计上的各种问题&#xff0c;希望对大家有所帮助&#xff01; 关于I2C协议详细的讲解&#xff0c;可以参考之前的推文&#xff1a;全面解析 I2C 通信协议 一般情况下&#xff0c; i2c 设备焊接没什么问题&#xff0c;按照设备手册一步步来&a…

<网络安全>《33 网络信息安全基础(4)网络安全工程师进阶体系(一)》

1 图谱 1 基础入门 1.1 网络安全导论 网络安全行业简介&#xff1a; 行业前景 历史 重要事件 网络安全意识与法律法规 安全意识 法律法规 案例 网络安全管理概述 安全运营、运维、模型 等保测评 等保简介、等保规定、流程和规范 1.2 渗透测试基础 渗透测试概述 - 流程、分…

Go语言每日一练——链表篇(九)

传送门 牛客面试笔试必刷101题 ----------------链表相加(二) 题目以及解析 题目 解题代码及解析 解析 这一道题主要是要对链表相加的过程进行模拟&#xff0c;虽然思路不难但是细节出比较多&#xff0c;这里博主的思路主要是先将两个链表反转过来然后以Head1为基础来模拟…

java 宠物在线商城系统Myeclipse开发mysql数据库web结构jsp编程servlet计算机网页项目

一、源码特点 java 宠物在线商城系统是一套完善的java web信息管理系统 servletdaobean mvc模式&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S 模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&…

Windows11通过SMB映射NAS网络驱动磁盘

环境 NAS&#xff1a;威联通TS-416 操作系统&#xff1a;Windows11 第一步 连接NAS winr 打开运行&#xff0c;输入NAS局域网IP地址&#xff0c;按照如下的格式输入 然后输入NAS的账号和密码就可以通过SMB连接到NAS了 第二步 映射网络驱动器 举个栗子&#xff1a;右键Stora…

记录 | windows pyqt5 pycharm配置

一、下载安装 离线安装 通过PyPI下载 https://pypi.org/ 依此搜索 python_dotenv&#xff0c;PyQt5_sip&#xff0c;PyQt5&#xff0c;pyqt5_tools&#xff0c;注意PyQt5和pyqt5_tools版本对应。 下载之后放在\Anaconda3\Lib\site-packagescmd依次 pip install *.whl 二…

python系统学习Day2

section3 python Foudamentals part one&#xff1a;data types and variables 数据类型&#xff1a;整数、浮点数、字符串、布尔值、空值 #整型&#xff0c;没有大小限制 >>>9 / 3 #3.0 >>>10 // 3 #3 地板除 >>>10 % 3 #1 取余#浮点型&#xff…

H12-821_48

48.下面是台路由器输出的BGP信息,关于这段信息描述措误的是 A.路由器的Router ID是1.1.1.9 B.display bgp network命令来显示BGP通过network ( BGP)的通告的路由信息 C.该路由器所在AS号是10 D.该路由器通过import-route命今引入了4.4.4.0/24的网段 答案&#xff1a;D 注释&am…

C++初阶:适合新手的手撕list(模拟实现list)

上次讲了常用的接口&#xff1a;今天就来进行模拟实现啦 文章目录 1.基本结构与文件规划2.空参构造函数&#xff08;constructor)3.完善迭代器&#xff08;iterator&#xff09;(begin(),end())4.List Capacity&#xff08;size(),empty())4.增删改查(push_back,pop_back,pop_f…

【初始C++】引用的概念及使用场景、引用与指针的区别、内联函数、类型推导关键字auto、范围for循环、指针空值nullptr

目录 1.引用 1.1引用的概念 1.2引用的特性 1.3使用场景 1.4引用与指针的区别 2.内联函数 2.1内联函数的概念 2.2内联函数的特征 3.auto关键字&#xff08;C11&#xff09; 4.基于范围的for循环&#xff08;C11&#xff09; 5.指针空值nullptr&#xff08;C11&#x…

攻防演练后的一点随记

攻防演练 攻防演练算是告一段落了&#xff0c;各位红队和蓝队的兄弟们都辛苦了&#xff0c;写一点随记&#xff0c;供大家参考。 记得第一次参加攻防演练是在2018年&#xff0c;当时被派到北京&#xff0c;在某个政企单位做攻防演练支撑工作&#xff0c;然后2020年又被紧急派到…

RK3568笔记十六:Framebuffer实验

若该文为原创文章&#xff0c;转载请注明原文出处。 本意是移植LVGL&#xff0c;但在编译DRM过程中一直编译失败&#xff0c;然后就想Framebuffer是否可以用&#xff0c;所以测试一下。 一、framebuffer介绍 FrameBuffer中文译名为帧缓冲驱动&#xff0c;它是出现在2.2.xx内…

剑指offer——数值的整数次方

目录 1. 题目描述2. 一般思路2.1 有问题的思路2.2 全面但不高效的思路2.3 面试小提示 3. 全面又高效的思路 1. 题目描述 题目:实现函数 double Power(double base,int exponent)&#xff0c;求base 的exponent 次方。不得使用库函数&#xff0c;同时不需要考虑大数问题 2. 一般…

【AIGC】Stable Diffusion的常见错误

Stable Diffusion 在使用过程中可能会遇到各种各样的错误。以下是一些常见的错误以及可能的解决方案&#xff1a; 模型加载错误&#xff1a;可能出现模型文件损坏或缺失的情况。解决方案包括重新下载模型文件&#xff0c;确保文件完整并放置在正确的位置。 依赖项错误&#x…