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. ElementUI使用总结

    首先声明,我这总结的官网都有,只是将自己使用时遇到的问题,重新记录一下,官网地址:https://element.eleme.cn/ 1.表格内指定行数给定不同样式(类似于隔行变色,也能叫指定行数不同 ...

  2. WPF -- 一种添加静态资源的方式

    本文介绍使用独立的xaml文件添加静态资源的方式. 步骤 创建XAML文件,如ImageButton.xaml,添加ResourceDictionary标签,并添加静态资源: 在App.xaml的Ap ...

  3. JAVA基础(一)—— 基础类型与面向对象

    JAVA基础(一)--基础类型与面向对象 1 数据类型 基本类型 byte short int long float double boolean char n 8 16 32 64 32 64 tr ...

  4. Google单元测试框架gtest--值参数测试

    测试一个方法,需要较多个参数进行测试,比如最大值.最小值.异常值和正常值.这中间会有较多重复代码工作,而值参数测试就是避免这种重复性工作,并且不会损失测试的便利性和准确性. 如果测试一个函数,需要些各 ...

  5. hive中更改表impala中不能生效

    hive中的更新或者新建表impala 不能实时更新 Impala是基于Hive的大数据实时分析查询引擎,直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的meta ...

  6. macOS下Chrome和Safari导入证实抓包HTTPS

    目录 下载证书 mac OS导入证书 Chrome设置代理 Safari设置代理 下面的操作基于Mac OS Catalina(v10.15.3),抓包拦截工具基于Burp Suite v2.1.05 ...

  7. Boltdb学习笔记之〇--概述

    更多精彩内容,请关注微信公众号:后端技术小屋 看了boltdb也有一阵子了,看完之后总想写点什么,因为感觉到这可能是个不小的坑,所以迟迟没有动笔(没错我的拖延症又犯了..).最近有一种流行的说法:如果 ...

  8. Python爬虫学习三------requests+BeautifulSoup爬取简单网页

    第一次第一次用MarkDown来写博客,先试试效果吧! 昨天2018俄罗斯世界杯拉开了大幕,作为一个伪球迷,当然也得为世界杯做出一点贡献啦. 于是今天就编写了一个爬虫程序将腾讯新闻下世界杯专题的相关新 ...

  9. Java方法:练习,控制台简易计算器

    可以更改计算个数的简易计算器 package com.zdz.method; import java.util.Scanner; public class Operator { public stat ...

  10. Go Module实战:基于私有化仓库的GO模块使用实践

    新年开工近一月,2021 年第一期 Open Talk 定档 3 月 18 日晚 8 点,本期我们邀请到了又拍云资深后端开发工程师刘云鹏和我们一起聊聊 Go 最新特性 Go Module 实战. 刘云 ...