Nacos(配置中心)

有关Spring Cloud Alibaba之前写过四篇文章,这篇也是在上面项目的基础上进行开发。

Spring Cloud Alibaba(1)---入门篇

Spring Cloud Alibaba(2)---RestTemplate微服务项目

Spring Cloud Alibaba(3)---Nacos概述

Spring Cloud Alibaba(4)---Nacos(注册中心)

另外有关配置中心,之前也详细写过Apollo配置中心,所以一些有关配置中心的理论知识,这里就不在陈述,具体看下面文章

Apollo(1)--- Apollo入门介绍篇

Apollo(2)--- Apollo架构设计

Apollo(3)--- SpringBoot整合Apollo

前言

有关Nacos客户端的搭建和Nacos的介绍在 Spring Cloud Alibaba(2)---Nacos概述 都有讲到,所以这里不在陈述。这里在上篇博客项目基础上(Spring Cloud Alibaba(4)---Nacos(注册中心)),来实现配置中心的功能。

一、Nacos 服务端初始化

1、启动Nacos客户端

有关Nacos搭建我这里不在陈述,上面博客有写,或者直接看官网如何搭建:Nacos 官网

sh startup.sh -m standalone

2、添加配置

启动好Nacos之后,在Nacos添加如下的配置

具体含义下面会做介绍

二、springBoot整合Nacos(配置中心)

说明 这里贴出的代码是在上篇博客 Spring Cloud Alibaba(4)---Nacos(注册中心) 中项目的基础上添加。

1、pom.xml

  <!--添加nacos配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2、Controller层

@RestController
@RequestMapping("api/v1/config")
public class ConfigTestController { /**
* nacos获取配置
*/
@Value("${user.name}")
private String name; @RequestMapping("test-config")
public Object findByGoodsId() {
return name;
} }

3、bootstrap.yml

spring:
application:
name: mall-goods cloud:
nacos:
config:
server-addr: 127.0.0.1:8848 #Nacos配置中心地址
file-extension: yaml #文件拓展格式 profiles:
active: dev

4、测试

成功获取Nacos配置的数据

三、Nacos配置管理的模型

对于Nacos配置管理, 通过Namespace, Group, DataId能够定位到一个配置集

1、配置管理模型概念

1)Namespace(命名空间)

命名空间(namespace)可用于对不同的环境进行配置隔离. 例如: 可以隔离开发环境, 测试环境, 生成环境. 因为他们的配置可能各不相同. 或者是隔离不同的用户, 不同的开发人员使

用同一个Nacos管理各自的配置, 可通过namespace进行隔离。不同的命名空间下, 可以存在相同名称的配置分组(Group)或配置项(Data Id)

默认值:public

2)Group(配置分组)

配置分组就是上图中的Group. 配置分组是对配置集进行分组. 通过一个有意义的字符串(如: buy, trade)来表示. 不同的配置分组下可以有相同的配置集(Data ID)

默认值:DEFAULT_GROUP

3)DataId(配置集)

在系统中, 通常一个配置文件, 就是一个配置集。一个配置集可以包含系统的各种配置信息. 例如:一个配置集可能包含系统的数据源、连接池, 日志等级的配置信息。每个配置集

都可以定义一个有意义的名称, 就是配置集的Id, 即Data Id

4)配置项

配置集中包含的一个个配置内容, 就是配置项。 他代表具体的可配置的参数. 通常以key=value的形式存在.

2、通俗理解

这里通俗去理解这几个概念含义

 Namespace: 代表不同的环境, 如: 开发、测试, 生产等
Group: 可以代表某个项目, 如XX就业项目, XX电商项目
DataId: 每个项目下往往有若干个工程, 每个配置集(DataId)是一个工程的主配置文件(比如这里的mall-goods.yaml就是一个配置集)

3、页面理解

1)代表 Namespace(命名空间),默认就创建好public,这里创建好了一个dev
2)代表 Group(配置分组),这里默认分组 DEFAULT_GROUP
3)代表 DataId(配置集),这里有个配置mall-goods.yaml,配置集里有配置项user.name: "我是张三的好朋友李四"

四、补充

1、为什么要用bootstrap.yaml

为什么用bootstrap.yaml而不用application.xml官方有说明

必须使用 bootstrap.properties 配置文件来配置Nacos Server 地址

虽然 bootstrap.yamlapplication.xml 都属于配置文件,功能也一样。但技术上,bootstrap.yml由父Spring ApplicationContext加载。父ApplicationContext会在

application.yml之前被加载。当使用 Spring Cloud 的时候,配置信息一般是从 config server 加载的,为了取得配置信息(比如密码等),你需要一些提早的或引导配置。

因此,把 config server信息放在 bootstrap.yml,用来加载真正需要的配置信息。

说明 bootstrap.properties 和 bootstrap.yaml到没有什么区别,只是格式上有点不一样。

2、DataId(配置集)和微服务对于关系

我们在Nacos配置的配置集叫: mall-goods.yaml,它是如何和我们项目匹配上的呢?

我们再来看下我们的 bootstrap.yml 的配置

我们前面说了,通过namespace, group, dataId能够定位到一个配置集。从这个配置中我们没有去指明具体namespace,那就代表采用默认的 public。没有制定group,

代表采用默认DEFAULT_GROUP。那么配置集就为

${spring.application.name}.${file-extension:properties} #这里就相当于 mall-goods.yaml
${spring.application.name}-${profile}.${file-extension:properties} # 这里就相当于 mall-goods-dev.yaml

如果同时配置的话,mall-goods-dev.yaml会覆盖mall-goods.yaml中的配置

3、补充

其实我这里还有很多细节没讲,比如怎么指定分组,指定命名空间和一些其它规则,具体可以看官网说明,讲的还挺清楚的。

官方讲解:Spring Cloud Alibaba Nacos Config

还有一些Nacos集群搭建、Naocos将数据存储到mysql数据库的知识,这里也不说了。自己可以网上查查。

GitHub地址:spring-cloud-alibaba-study

少说多做,句句都会得到别人的重视;多说少做,句句都会受到别人的忽视。(5)

Spring Cloud Alibaba(5)---Nacos(配置中心)的更多相关文章

  1. Spring Cloud Alibaba(4)---Nacos(注册中心)

    Nacos(注册中心) 有关Spring Cloud Alibaba之前写过三篇文章. Spring Cloud Alibaba(1)---入门篇 Spring Cloud Alibaba(2)--- ...

  2. Spring Cloud Alibaba 使用nacos 注册中心

    ### 背景 上一文我们讲到了如何去搭建注册中心,这一次我们讲述如何使用nacos作为注册中心 ### spring-cloud-alibaba-basis 创建基础依赖 首先我们创建一个spring ...

  3. Spring Cloud Alibaba(6)---Nacos持久化Mysql8.0版本

    Nacos持久化Mysql8.0版本 有关Nacos之前写过三篇文章. Spring Cloud Alibaba(3)---Nacos概述 Spring Cloud Alibaba(4)---Naco ...

  4. Spring Cloud Alibaba(2)---Nacos概述

    Spring Cloud Alibaba(2)---nacos概述 上一篇博客讲了有关 SpringCloudAlibaba的概述,这篇开始讲SpringCloudAlibaba组件之一---Naco ...

  5. Spring Cloud Alibaba(3)---Nacos概述

    Spring Cloud Alibaba(3)---nacos概述 上一篇博客讲了有关 SpringCloudAlibaba的概述,这篇开始讲SpringCloudAlibaba组件之一---Naco ...

  6. Spring Cloud 入门教程 - 搭建配置中心服务

    简介 Spring Cloud 提供了一个部署微服务的平台,包括了微服务中常见的组件:配置中心服务, API网关,断路器,服务注册与发现,分布式追溯,OAuth2,消费者驱动合约等.我们不必先知道每个 ...

  7. Spring Boot + Spring Cloud 实现权限管理系统 配置中心(Config、Bus)

    技术背景 如今微服务架构盛行,在分布式系统中,项目日益庞大,子项目日益增多,每个项目都散落着各种配置文件,且随着服务的增加而不断增多.此时,往往某一个基础服务信息变更,都会导致一系列服务的更新和重启, ...

  8. SpringCloud实战之初级入门(三)— spring cloud config搭建git配置中心

    目录 1.环境介绍 2.配置中心 2.1 创建工程 2.2 修改配置文件 2.3 在github中加入配置文件 2.3 修改启动文件 3. 访问配置中心 1.环境介绍 上一篇文章中,我们介绍了如何利用 ...

  9. 【Spring Cloud】Spring Cloud Config 实现分布式配置中心

    Spring Cloud Config 实现分布式配置中心 一.分布式配置中心 分布式系统中,往往拥有大量的服务应用,而每个应用程序都需要有对应的配置文件来协助完成服务环境初始化.运行.因此生产了大量 ...

随机推荐

  1. eclipse自定义快捷键

    eclipse系统自带的快捷键设置有时候使用起来并不习惯,可以自定义某些常用的快捷键. 依次打开 Window->Preference->General->Keys,这里显示了所有的 ...

  2. JS数组的常用属性或方法

    1.length 数组长度 计算数组的长度 var arr=[1,2,3,4,5]; console.log(arr.length);//输出结果是5 2. push() 添加元素 向数组尾部添加新元 ...

  3. shell编程基础二

    一.流程控制 while循环:只要条件满足一直循环 read -p "请输入一个数字:" white_data while [ ${white_data} -lt 20 ] do ...

  4. CTF-杂项笔记

                01 赛题解答 (1)目标:了解modbus协议 (2)解题: 密文:666C61677B4533334237464438413342383431434139363939454 ...

  5. weblogic弱口令+后台getshell

     https://www.cnblogs.com/bmjoker/p/9822886.html利用docker环境模拟了一个真实的weblogic环境,其后台存在一个弱口令,并且前台存在任意文件读取漏 ...

  6. 如何在 C# 8 中使用 Channels

    在面对 生产者-消费者 的场景下, netcore 提供了一个新的命名空间 System.Threading.Channels 来帮助我们更高效的处理此类问题,有了这个 Channels 存在, 生产 ...

  7. VUE中的子父组件、兄弟组件之间相互传值,相互调用彼此的方法

    vue--组件传值 父组件传值给子组件--"props" 一.父组件--示例 <template> <child :choose-data="choos ...

  8. [Redis知识体系] 一文全面总结Redis知识体系

    本系列主要对Redis知识体系进行详解.@pdai Redis教程 - Redis知识体系详解 知识体系 学习资料 知识体系 知识体系 相关文章 首先,我们通过学习Redis的概念基础,了解它适用的场 ...

  9. ClickHouse元数据异常-MySQLHandlerFactory:Failed to read RSA key pair from server

    Clickhouse版本:20.3.6.40-2 clickhouse集群三个节点,一分片,三副本,三个节点数据完全一样 1. 问题描述 在使用连接工具操作时,发现其中一个节点连接拒绝,无法操作,另外 ...

  10. 使用自定义注解和切面AOP实现Java程序增强

    1.注解介绍 1.1注解的本质 Oracle官方对注解的定义为: Annotations, a form of metadata, provide data about a program that ...