Nacos基础介绍—配置中心

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

一、什么是配置中心

在微服务架构中,配置中心就是统一管理各个微服务配置文件的服务。把传统的单体jar包拆分成多个微服务后,配置文件也要拆分,每个微服务都要有自己的配置文件。为了统一维护,方便管理,所以出现了配置中心的概念。所有的微服务配置文件都在配置中心中管理和读取,因此,出现了配置中心的概念。提供配置中心的服务有Nacos,Apollo等,这里我们讲解Nacos的配置中心功能。

二、Nacos服务端配置中心功能

Nacos提供了配置中心的功能,首先,需要在Nacos服务端,配置好服务的配置文件,具体配置如下:
配置命名空间:
命名空间主要用于隔离开发环境。如开发环境,生产环境,测试环境。
nacos 配置中心,# nacos,spring cloud,微服务,java
其中,public是Nacos默认提供的命名空间,如果不单独配置命名空间,那么默认所有的配置信息都在public命名空间中。

配置列表
在命名空间中配置好后,在配置列表中就会有几个命名空间的tab。
我们以开发环境dev为例,配置某个微服务的配置文件信息。
nacos 配置中心,# nacos,spring cloud,微服务,java
新建配置界面如下:
nacos 配置中心,# nacos,spring cloud,微服务,java

Data ID:
Data ID是配置项的唯一标识,它的命名是有一定规范的。我们在配置信息时,一定是先有了微服务客户端,根据客户端需求,才在配置中心配置的信息。
Data ID的命名规范是:

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

其中spring.application.name就是微服务客户端配置文件中配置的服务名称。${spring.profiles.active}是配置文件中配置的环境信息。${spring.cloud.nacos.config.file-extension}是微服务客户端配置文件中配置的file-extension信息。这个信息的作用是指定配置中心中配置信息的格式,一般选择yaml格式的。
假设微服务客户端服务名叫mall-user-consumer-demo,开发环境为dev。file-extension扩展格式为yaml,则Data ID命名为:mall-user-consumer-demo-dev.yaml。

Group
组的概念。上面讲到的命名空间是用来隔离项目环境的。Group是在同一个项目环境中更细粒度的区分配置项,博主现在还没理解有何场景使用Group进行分组,在Data ID中命名已经是通过服务名命名了,而且微服务客户端拉取数据时会根据服务名进行映射的,已经通过Data ID可以区分不同微服务客户端了,不理解Group是进行什么更细粒度的区分。

配置格式
配置格式的勾选要与file-extension扩展模式的配置相对应。一般选择yaml格式。
然后在配置栏中写配置信息即可:
nacos 配置中心,# nacos,spring cloud,微服务,java

三、微服务客户端配置信息拉取配置中心

踩坑一:
博主刚开始将所有的配置都放在了application.yml中,包括nacos的注册中心配置和配置中心配置,但是在项目启动中,一直报连接的还是localhost:8848。而nacos地址配置的并不是本地。为何还会去连接localhost地址呢?
原因是微服务客户端连接nacos配置中心,是发生在application.yml文件读取之前去拉取的,此时并不知道application.yml中配置的是什么信息,所以只能按默认配置去连接,因此就连接localhost地址去了。那么如何进行地址的修改呢?就是把nacos配置中心的内容,配置到bootstrap.yml中。bootstrap.yml配置文件是先于application.yml文件读取的,而且发生在拉取配置中心信息之前,所以配置在bootstrap.yml文件中,可以解决该问题。
关于application.yml配置文件和bootstrap.yml配置文件的区别,可以参考这篇文章:application.yml与bootstrap.yml的区别

踩坑二:
当客户端配置nacos的配置中心地址为nginx集群时,项目启动无法成功,而单独配置成某个节点时,可以正常使用,这个问题博主猜测是nacos2.x增加了两个端口,而nginx里并没有配置两个端口的转发规则,所以配置中心连接nginx时,会出现错误。

下面,讲解微服务客户端拉取配置中心信息的集成过程:

  1. 加入nacos配置中心依赖:
<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
  1. bootstrap.yml中配置nacos配置中心的相关信息:
spring:
  #配置nacos注册中心地址
  cloud:
    nacos:
      discovery:
        server-addr: 39.100.116.73:80
        #namespace: 39e1e969-15f9-46d2-832d-fa052da55377
        #group: mall-user
      #        cluster-name: BJ
      config: #配置中心的相关配置
        server-addr: 39.100.116.73:8851
        file-extension: yaml  #与配置中心的扩展项相对应
        namespace: 507945ce-1b37-4d59-90aa-f2707fee0013  #命名空间id

因为在application.yml中配置了服务名称和profiles开发环境,所以,结合这两个配置文件,就可以根据Data ID命名规则找到相应的配置项,并拉取相关信息。

  1. 获取配置中心信息
    使用@RefreshScope注解,用于实时拉取更新后的配置中心的信息,无需重启项目。
    通过@Value注解,进行配置中心信息的获取,代码如下;
@RefreshScope
@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {
 @Value("${user.name}")
    private String username;
    @Value("${user.age}")
    private Integer age;
    @Value("${user.id}")
    private String id;
    @GetMapping("getNacosConfig")
    public String test(){
        return "id:"+id+",name:"+username+",age:"+age;
    }
}

这样,就获取到了配置中心的信息。

四、共享配置

官网地址:https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config

spring:
  #配置nacos注册中心地址
  cloud:
    nacos:
      discovery:
        server-addr: 39.100.116.73:80
        #namespace: 39e1e969-15f9-46d2-832d-fa052da55377
        #group: mall-user
      #        cluster-name: BJ
      config:
        server-addr: 39.100.116.73:8851
        file-extension: yaml
        namespace: 507945ce-1b37-4d59-90aa-f2707fee0013
        shared-configs[0]: #配置共享配置
          data-id: db.yaml
          group: DEFAULT_GROUP
          refresh: true

补充

在nacos配置中心中,客户端的配置文件中只要配置了namespace的data-id,那么就会自动加载客户端application-name.file-extension命名的配置项信息进来。如果想指定自定义命名的其他配置项配置,需要如下配置:

exetension-configs[0]: 
          data-id: db.yaml  #自定义配置名
          group: DEFAULT_GROUP #分组
          refresh: true  #配置自动刷新

需要注意的是,在配置的时候需要配置自动刷新,在实体类里,也需要写@RefreshScope才能生效。

此外,nacos自动刷新Mysql数据源配置和redis数据源配置可参考下面两篇文章:
Mysql动态配置 redis动态配置文章来源地址https://www.toymoban.com/news/detail-657903.html

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

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

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

相关文章

  • 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日
    浏览(52)
  • 微服务 Spring Cloud 7,Nacos配置中心的Pull原理,附源码

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

    2024年02月04日
    浏览(58)
  • 【深入了解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日
    浏览(62)
  • Spring Cloud Alibaba nacos配置中心

    第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Spring Cloud Netflix 之 Hystrix 第九章 代码管理gitlab 使用 第十章 Spr

    2024年02月08日
    浏览(54)
  • Spring Cloud集成Nacos作为配置中心

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

    2024年02月15日
    浏览(52)
  • Spring Cloud Alibaba Nacos 构建配置中心

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

    2024年02月08日
    浏览(55)
  • 【微服务 Spring Cloud Alibaba】- Nacos 服务注册中心

    目录 1. 什么是注册中心? 1.2 注册中心的作用 2. SpringBoot 整合 Nacos 实现服务注册中心 2.1 将服务注册到 Nacos 2.2 实现消费者 3. 服务列表各个参数的含义、作用以及应用场景 注册中心是微服务架构中的一个重要组件,它用于实现 服务注册 与 服务发现 。 【思考一】什么叫服务

    2024年02月06日
    浏览(75)
  • Spring Cloud Gateway集成Nacos作为注册中心和配置中心

    本篇文章将介绍Spring Cloud Alibaba体系下Spring Cloud Gateway的搭建,服务注册中心和分布式配置中心使用Nacos,后续将会持续更新,介绍集成Sentinel,如何做日志链路追踪,如何做全链路灰度发布设计,以及Spring Cloud Gateway的扩展等。 ​ Spring Boot,Spring Cloud,Discovery,Config等基础依

    2024年02月11日
    浏览(97)
  • Spring Cloud中微服务已经启动,但是没有注册到nacos中心

    今天写了一个Spring Cloud模块,然后启动测试效果,结果一直报503或者401的错误,排查后发现是服务启动,但是没有注册到nacos中心。 这是后端已经启动模块:  这是nacos中心: 可以看出,这里模块没有注册到nacos中。 找了一下午的博客,发现那些不是说的spring-boot-starter-web起

    2024年02月10日
    浏览(50)
  • Spring Cloud微服务在Windows本地开发时禁用Nacos注册中心注册

    码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 本文将介绍如何在Spring Cloud微服务架构中,实现在Windows本地开发环境下禁用服务自动注册到Nacos注册中心,而在Linux服务器环境下则自动启用注册功能。这样的配置有助于开发者在本

    2024年03月18日
    浏览(111)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包