Spring Cloud集成Nacos作为配置中心

这篇具有很好参考价值的文章主要介绍了Spring Cloud集成Nacos作为配置中心。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

往期回顾

Nacos的安装与配置

Spring Cloud集成Nacos作为注册中心

LoadBalacer集成Nacos实现负载均衡

常见的负载均衡策略分析

Spring Cloud集成Dubbo实现RPC调用

前面我们已经介绍了Nacos 的安装与配置,Spring Cloud 集成Nacos 作为服务的注册中心,集成Nacos 实现服务的负载均衡和一些常见的负载均衡策略以及使用Dubbo进行RPC调用

接下来,我们将介绍如何使用Nacos 作为配置中心加载远程配制文件

配置中心

什么是配置中心?

配置中心,顾名思义,就是用来统一管理项目中所有配置的系统。

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

如果一个中型的项目,不采用配置中心的模式,一大堆的各类配置项,各种不定时的修改需求,一定会让开发同学非常头疼且管理十分混乱。所以,我们需要使用配置中心对这些配置进行集中管理。

一个合格的配置中心需要满足如下特性:

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

配置中心的作用

  1. 对配置文件进行集中管理,在不同的环境下或者不同配置中,可以对配置文件进行更新和部署
  2. 在程序的运行期间,可以对程序中的配置文件进行动态性调整。使用分布式配置中心,就不需要在每一台服务器上都进行配置文件的修改,只需要在总服务器中进行修改,系统就会向其他的服务器进行统一的修改配置
  3. 如果系统程序的配置发生了变动,无需要重新重启服务器,就能够自动感知相应的变化,并将新的变化统一发送到相应程序上
  4. 支持不同环境的隔离和切换

分布式配置中心作用有很多,这里仅仅简单罗列了几个最为常见的作用

Nacos Config

Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。

Spring Cloud Alibaba Nacos Config 是 Config Server 和 Client 的替代方案,客户端和服务器上的概念与 Spring Environment 和 PropertySource 有着一致的抽象,在特殊的 bootstrap 阶段,配置被加载到 Spring 环境中。当应用程序通过部署管道从开发到测试再到生产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容。

Nacos是Spring Cloud组件Spring Cloud Config的替代方案

Spring Cloud Config 分为服务端和客户端两个部分。服务端被称为分布式配置中心,它是个独立的应用,可以从配置仓库获取配置信息并提供给客户端使用。客户端可以通过配置中心来获取配置信息,在启动时加载配置。Spring Cloud Config 的配置中心默认采用Git来存储配置信息,所以天然就支持配置信息的版本管理,并且可以使用Git客户端来方便地管理和访问配置信息

快速开始

1.启动Nacos服务

如若还未启动Nacos请参见 Nacos的安装与配置

2.引入依赖

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

这里我遇见了一个bug,详细参见Param ‘serviceName‘ is illegal, serviceName is blank

这个bug出现的原因是我没有导入bootstrap的依赖,导入以下依赖即可

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

3.修改配制文件

修改application.yml ,启用的是dev环境的配置

spring:
  profiles:
    active: dev
server:
  port: 8081

添加bootstrap.yml ,主要是对Nacos的作为配置中心的功能进行配置:

spring:
  application:
    name: user-service
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.199.128:8848 #Nacos地址
      config:
        server-addr: 192.168.199.128:8848 #Nacos地址
        file-extension: yaml #这里我们获取的yaml格式的配置

management:
  endpoints:
    web:
      exposure:
        include: "*"

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath:cuit/epoch/pymjl/mapper/xml/*.xml
  type-aliases-package: cuit.epoch.pymjl.entity
  

注意:

当你使用域名的方式来访问 Nacos 时,spring.cloud.nacos.config.server-addr 配置的方式为 域名:port

例如 Nacos 的域名为abc.com.nacos,监听的端口为 80,则 spring.cloud.nacos.config.server-addr=abc.com.nacos:80注意 80 端口不能省略。

4.创建Controller

@RefreshScope 可以使Nacos 客户端运行过程中可以获取到配置中心配置的变化然后更新

package cuit.epoch.pymjl.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author Pymjl
 * @version 1.0
 * @date 2022/8/31 20:15
 **/
@RestController
@RefreshScope
@RequestMapping("/config")
public class ConfigController {
    @Value("${config.info:default}")
    private String info;

    @GetMapping("/info")
    public String getInfo() {
        return info;
    }
}

5.基于 dataid 为 yaml 的文件扩展名配置方式

我们先来讲下Nacos中的dataid的组成格式及与SpringBoot配置文件中的属性对应关系:

${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

比如说我们现在要获取应用名称为user-service的应用在dev环境下的yaml配置,dataid如下:

user-service-dev.yaml

根据上面的命名方式在Nacos 控制台添加如下配置

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource 
    driver-class-name: com.mysql.cj.jdbc.Driver 
    url: jdbc:mysql://192.168.199.128:3306/cloud_learn?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
    username: root 
    password: 123456 
    druid:
      initialSize: 10  
      minIdle: 10       
      maxActive: 100    
      maxWait: 60000    
      timeBetweenEvictionRunsMillis: 60000  
      minEvictableIdleTimeMillis: 30000     
      validationQuery: select 'x' 
      testWhileIdle: true    
      #通过别名的方式配置扩展插件,常用的插件有:监控统计用的filter:stat,日志用的filter:log4j,防御sql注入的filter:wall  
      filters: stat,wall 
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 
      # 合并多个DruidDataSource的监控数据
      useGlobalDataSourceStat: false 
  cache:
    type: redis
  redis:
    host: 192.168.199.128
    port: 6379
    password: 123456
config:
  info: This is Nacos config test

dubbo:
  application:
    name: ${spring.application.name}
    logger: slf4j
  protocol:
    name: dubbo
    port: -1
  registry:
    address: nacos://192.168.199.128:8848
  config-center:
    address: nacos://192.168.199.128:8848
  metadata-report:
    address: nacos://192.168.199.128:8848
  consumer:
    validation: true
    timeout: 3000
    check: false
    loadbalance: roundrobin
  scan:
    base-packages: cuit.epoch.pymjl.controller

如图所示:

springcloudnacos配置中心,springcloud,微服务,java,spring cloud

spring-cloud-starter-alibaba-nacos-config 在加载配置的时候,不仅仅加载了以 dataid 为 ${spring.application.name}.${file-extension:properties} 为前缀的基础配置,还加载了dataid为 ${spring.application.name}-${profile}.${file-extension:properties} 的基础配置。

在日常开发中如果遇到多套环境下的不同配置,可以通过Spring 提供的 ${spring.profiles.active} 这个配置项来配置。

开始测试

先启动服务,如图,启动成功

springcloudnacos配置中心,springcloud,微服务,java,spring cloud

访问接口测试

springcloudnacos配置中心,springcloud,微服务,java,spring cloud

接下来我们更改在Nacos 中的配置,然后发布更新

config:
  info: Changeing the nacos config

观察Spring的控制台输出

springcloudnacos配置中心,springcloud,微服务,java,spring cloud

再访问刚才的接口

springcloudnacos配置中心,springcloud,微服务,java,spring cloud

可见,配制文件完成了实时的动态更新,至此

关于Nacos的其他配置可参见官方文档

ngeing the nacos config文章来源地址https://www.toymoban.com/news/detail-606200.html


观察Spring的控制台输出

[外链图片转存中...(img-RvY46qND-1662117389530)]

再访问刚才的接口

[外链图片转存中...(img-5eS2GBg2-1662117389530)]

可见,配制文件完成了实时的动态更新,至此

关于Nacos的其他配置可参见[官方文档](https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config)

项目源码:[gitee](https://gitee.com/pymjl_0/cloud-learn)	[github](https://github.com/Pymjl/cloud-learn)

到了这里,关于Spring Cloud集成Nacos作为配置中心的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Spring Cloud Alibaba Nacos 构建配置中心

    登录 Nacos 面板,依次点击左侧菜单栏【命名空间→新建命名空间】、填写命名空间名和描述信息,点击【确定】: 依次点击左侧菜单栏【配置管理→配置列表】、切换到指定命名空间【此处为 shop】、点击右侧【+】号: 添加配置 填写【Data ID】要求组内唯一,【Group】组名,

    2024年02月08日
    浏览(59)
  • Spring Cloud Alibaba--Nacos服务注册和配置中心

    Nacos 是Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos的特性,官网解释如下: 服务发现和服务健康监测 Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Age

    2024年02月05日
    浏览(61)
  • Spring Cloud Alibaba Nacos(服务注册及配置中心)

    Nacos是由阿里巴巴提供的一款专门构建云本地应用的 动态服务发现、配置中心和服务管理平台 。 在Spring Cloud Alibaba中常使用Nacos作为注册中心和分布式配置中心。  (1)服务发现和管理 动态服务发现是以服务为中心(例如微服务或云原生)体系结构的关键。Nacos支持基于DN

    2024年02月16日
    浏览(70)
  • Spring Cloud Alibaba 微服务2,注册中心演变 + Nacos注册中心与配置中心

    🏆作者简介: 哪吒 ,CSDN2022博客之星Top1、CSDN2021博客之星Top2、多届新星计划导师✌、博客专家💪 , 专注Java硬核干货分享,立志做到Java赛道全网Top N。 🏆本文收录于 Java基础教程系列(进阶篇) ,本专栏是针对大学生、初级Java工程师精心打造, 针对Java生态,逐个击破,

    2024年02月02日
    浏览(320)
  • Spring Cloud集成Nacos实现本地配置优先 | Spring Cloud 9

    Nacos Config Starter 实现了 org.springframework.cloud.bootstrap.config.PropertySourceLocator 接口,并将优先级设置为最高。 在 Spring Cloud 应用启动阶段,会主动从 Nacos Server 端获取对应的数据,并将获取到的数据转换成 PropertySource 且注入到 Environment 的 PropertySources 属性中,所以使用 @Value 注解

    2024年02月15日
    浏览(66)
  • spring cloud使用git作为配置中心,git开启了双因子认证,如何写本地配置文件

    spring cloud使用git作为配置中心,git开启了双因子认证,死活认证不成功!!!!! 报错 org.eclipse.jgit.api.errors.TransportException: https://git.qualink.com/zhaoxin15/sc-config.git: not authorized 或者就是 java.net.ConnectException: Connection refused: connect 如果你的git也开启了双因子认证,那么配置

    2024年02月11日
    浏览(44)
  • day10-Spring Cloud Alibaba Nacos-服务注册与配置中心

    官网:https://github.com/alibaba/nacos,Nacos官方中文手册 Nacos:Spring Cloud Alibaba服务注册与配置中心(非常详细) (biancheng.net) Spring Cloud Alibaba系列-一文读懂Nacos原理 - 掘金 (juejin.cn) Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服

    2024年02月08日
    浏览(56)
  • 微服务 Spring Cloud 7,Nacos配置中心的Pull原理,附源码

    大家好,我是哪吒。 在单体服务时代,关于配置信息,管理一套配置文件即可。 而拆分成微服务之后,每一个系统都会有自己的配置,并且都各不相同,有些配置还需要动态改变,以达到动态降级、切流量、扩缩容等目的。 在Spring Boot开发中,可以把配置项放到config文件中

    2024年02月04日
    浏览(62)
  • Spring Cloud开发实践(七): 集成Consul配置中心

    Spring Cloud开发实践(一): 简介和根模块 Spring Cloud开发实践(二): Eureka服务和接口定义 Spring Cloud开发实践(三): 接口实现和下游调用 Spring Cloud开发实践(四): Docker部署 Spring Cloud开发实践(五): Consul - 服务注册的另一个选择 Spring Cloud开发实践(六): 基于Consul和Spring Cloud 2021.0的演示项目

    2024年02月07日
    浏览(39)
  • 【深入了解Spring Cloud Alibaba Nacos:服务注册和配置中心】—— 每天一点小知识

                                                                💧 深入了解 S p r i n g C l o u d A l i b a b a N a c o s :服务注册和配置中心 color{#FF1493}{深入了解Spring Cloud Alibaba Nacos:服务注册和配置中心} 深入了解 Sp r in g Cl o u d A l ibaba N a cos :服务注

    2024年02月11日
    浏览(69)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包