基于分布式系统结构下Nacos配置中心的应用

这篇具有很好参考价值的文章主要介绍了基于分布式系统结构下Nacos配置中心的应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在上一篇nacos初始中,已经描述过Nacos的基本知识,在这篇博客里记录的是Nacos配置中心的使用。

Nacos配置中心的作用

  1. 集中化配置管理:Nacos配置中心支持将应用程序的配置信息集中管理,包括常规的属性配置、文本配置、JSON配置等。你可以通过Nacos的控制台或API进行配置的创建、更新、删除和查询。

  2. 动态配置更新:配置中心可以实现配置的动态更新,即在应用程序运行期间,无需重启应用程序就能修改已经配置的属性。当配置更新时,Nacos能够即时通知到应用程序,应用程序可以立即获取新的配置值。

  3. 配置版本管理:Nacos配置中心支持配置的版本管理,可以为每个配置项设定不同的版本,并且可以查看和恢复历史版本的配置。

  4. 统一的命名空间管理:Nacos配置中心支持命名空间的划分,不同的命名空间可以实现配置的隔离和管理。每个命名空间都具有独立的配置存储和权限设置。

  5. 高可用和可扩展:Nacos配置中心支持集群部署,可以确保高可用性和可伸缩性。你可以根据应用程序的需求进行配置中心的水平扩展,以应对高并发的配置读取请求。

基于分布式系统结构下Nacos配置中心的应用,java,开发语言

🆗上图描述了如何通过nacos集中管理多个服务的配置

  • 用户通过Nacos Server的控制太集中对多个服务的配置进行管理
  • 各个服务统一从Nacos Server 中获取各自的配置,并监听配置的变化

发布配置

在上一篇博客中,我简单发布了一个配置,并通过Java代码进行了获取。在这篇博客中,我还是先发布一个自定义配置,然后基于微服务进行获取。

基于分布式系统结构下Nacos配置中心的应用,java,开发语言

基于分布式系统结构下Nacos配置中心的应用,java,开发语言

基于分布式系统结构下Nacos配置中心的应用,java,开发语言

配置发布后获取配置,首先需要有搭建好的微服务项目,分别新建service1和service2两个微服务,下面以service1为例,进行获取

step1:修改配置文件名为bootstrap.yaml

基于分布式系统结构下Nacos配置中心的应用,java,开发语言

step2:设置配置文件,如下图所示

基于分布式系统结构下Nacos配置中心的应用,java,开发语言

step3:定义访问端点,我偷懒,在启动类上加了

基于分布式系统结构下Nacos配置中心的应用,java,开发语言

这里的@Value是Spring提供的用于属性赋值的注解,支持直接注入常量值、SpEL表达式、属性文件中的值以及其他Spring容器中的bean,这里的用法是注入属性文件中的值

配置热更新

所谓配置热更新是说可以在不重启服务器的情况下,在运行时对应用程序的配置进行动态的修改,配置热更新可以通过两种方式实现,分别是硬编码和添加注解

1.硬编码方式

@RestController

public class NacosConfigController {

@Autowired

private ConfigurableApplicationContext applicationContext;

    @GetMapping("/nacos-config-test2")

    public String nacosConfingTest2() {

        return applicationContext.getEnvironment().getProperty("config.appName");

    }

}

2.在@Value注入的变量所在类上添加注解@RefreshScope

@RestController

@RefreshScope//只需要在需要动态读取配置的类上添加此注解就可以

public class NacosConfigController {

    @Value("${config.appName}")

    private String appName;

    @GetMapping("/nacos-config-test1")

    public String nacosConfingTest1() {

        return appName;

    }

}

配置共享

配置共享是说,提取各个微服务中的相同配置生成一个公共的配置文件,供所有微服务使用。通过配置共享,可以避免在每个应用程序中都配置相同的信息,提高配置的复用性和一致性。

同一服务下的配置共享

实现步骤:

  • 新建一个以 spring.application.name 命名的配置文件,然后将其所有环境的公共配置放在里面
  • 新建一个名为service-product-test.yaml配置存放测试环境的配置
  • 新建一个名为service-product-dev.yaml配置存放开发环境的配置
  • 在两个环境文件中配置独有信息,例如:

#多配置一段

config:

env: test

#多配置一段

config:

env: dev

  • 添加测试方法
@RestController

@RefreshScope

public class NacosConfigController {

    @Value("${config.env}")

    private String env;

    //3 同一微服务的不同环境下共享配置

    @GetMapping("/nacos-config-test3")

    public String nacosConfingTest3() {
    
        return env;

    }

}

在不同服务下共享配置

不同服务之间实现配置共享的原理类似于文件引入,就是定义一个公共配置,然后在当前配置中引入。

  • 在nacos中定义一个DataID为all-service.yaml的配置,用于所有微服务共享

spring: 
    datasource: 
        driver-class-name: com.mysql.jdbc.Driver 
        url: jdbc:mysql:///shopserverTimezone=UTC
        username: root 
        password: root 
    cloud:
        nacos: 
            discovery: 
                server-addr: 127.0.0.1:8848

  • 修改bootstrap.yaml

spring: 
    application: 
        name: service-product 
    cloud: 
        nacos: 
            config: 
                server-addr: 127.0.0.1:8848 #nacos中心地址 
                file-extension: yaml # 配置文件格式 
                shared-dataids: all-service.yaml # 配置要引入的配置
                refreshable-dataids: all-service.yaml # 配置要实现动态配置刷新的配置         
    profiles: 
        active: dev # 环境标识

然后启动微服务测试就可以啦 文章来源地址https://www.toymoban.com/news/detail-707958.html

到了这里,关于基于分布式系统结构下Nacos配置中心的应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式配置中心 Apollo

    1、客户端和服务端会保持一个长连接,从而第一时间获取配置更新的推送。 2、客户端还会定时从Apollo配置中心服务端拉取应用的最新配置,而且客户端定时拉取会上报给本地版本,默认每隔5分钟拉取一次,也可以通过运行时指定apollo.refreshInterval来覆盖,单位为分钟。 3、客

    2024年02月10日
    浏览(31)
  • 第三章 分布式配置中心

    分布式配置中心是为了解决在分布式系统中进行配置管理的需求而引入的。在传统的单体应用中,通常使用配置文件集中管理系统的配置信息。然而,在分布式系统中,由于系统规模变大、节点众多,并且可能部署在不同的服务器上,传统的配置文件方式会面临一些挑战。

    2024年02月04日
    浏览(30)
  • SpringCloud分布式配置中心——Config

    本专栏学习内容来自尚硅谷周阳老师的视频 有兴趣的小伙伴可以点击视频地址观看 由于微服务越来越多,项目越来越庞大,每一个项目都至少有两三个不同环境的application.properties文件,不易管理,假设我们数据库迁移,那么所有配置文件中有关数据库的地址都需要更改,不

    2023年04月22日
    浏览(27)
  • 微服务 分布式配置中心Apollo详解

    配置就是应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数、启动参数等。常见的配置properties,yml,xml等。 先说为什么需要配置中心,传统的配置有什么问题? 没有配置也可以在代码写死,为什么需

    2023年04月08日
    浏览(25)
  • config: 分布式配置中心 & bus: 消息总线

    每一个应用程序在运行时都需要相应的yml配置,分布式架构下多个服务器和应用服务面临着多个配置文件,在修改和发布上难度较大,需要有一个管理中心来统一管理,优雅的解决了配置的动态变更、持久化、运维成本等问题 流程: 分布式配置中心去远程仓库将创建好的yml文件

    2023年04月23日
    浏览(35)
  • 【SpringCloud框架之Config分布式配置中心】

    本笔记内容为尚硅谷SpringCloud框架开发Config配置中心部分 目录 一、概述 1、是什么 2、作用 二、Config服务端配置与测试 1、建仓库并克隆 2、新建项目 1.新建Module 2.POM 3.YML 4.主启动类 5.windows下修改hosts文件,增加映射 6.测试通过Config微服务是否可以从GitHub上获取配置内容  7.配

    2023年04月15日
    浏览(34)
  • 理解 Spring Cloud 分布式配置中心Eureka

    作者:禅与计算机程序设计艺术 在 Spring Cloud 的世界里,分布式系统经历了开发、测试、运维三个阶段。而在开发阶段,通常采用集中式配置方式,将所有配置文件统一管理在一台服务器上。随着业务系统的不断扩张,各个微服务模块都需要配置自己的属性值。因此,需要一

    2024年02月08日
    浏览(32)
  • 微服务架构学习与思考(13):分布式配置中心

    微服务架构系列文章集合:https://www.cnblogs.com/jiujuan/p/17307285.html 用编程语言编写应用项目时,一般都会有项目的配置文件。比如用 java 编写项目,有一个 properties 的配置文件,会把一些配置信息写入到该文本文件中,例如数据库相关的配置信息。 这也体现了软件设计的一个原

    2024年02月06日
    浏览(35)
  • 分布式配置中心Apollo中Namespace的类型整理

    Namespace类型有三种: 【1】私有类型 【2】公共类型 【3】关联类型(继承类型) 私有类型的Namespace具有private权限。例如上文提到的“application” Namespace就是私有类型。 1.介绍 公共类型的Namespace具有public权限。公共类型的Namespace相当于游离于应用之外的配置,且通过Namespace的

    2024年02月09日
    浏览(27)
  • 【SpringCloud config分布式配置中心】—— 每天一点小知识

    ·                                                                         💧 S p r i n g C l o u d c o n f i g 分布式配置中心 color{#FF1493}{SpringCloud config分布式配置中心} Sp r in g Cl o u d co n f i g 分布式配置中心 💧           🌷 仰望天空,妳

    2024年02月11日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包