详解Nacos配置中心的实现

目录
  • 基础配置
    • pom文件
    • YML文件
    • 配置配置中心文件
    • Nacos中的匹配规则
  • Nacos作为配置中心-分类配置
    • Nacos的图形化管理界面
    • 三种方案加载配置
      • DataID方案
      • Group方案
      • Namespace方案

基础配置

新建module:cloudalibaba-config-nacos-client3377

pom文件

版本号已经由父工程控制

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>cloud2020</artifactId>
        <groupId>com.atguigu.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>cloudalibaba-config-nacos-client3377</artifactId>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <!--nacos-config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--nacos-discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--web + actuator-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--一般基础配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

YML文件

俩个yml文件:

Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,

拉取配置之后,才能保证项目的正常启动。

springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application

bootstrap.yml文件

# nacos配置
server:
  port: 3377
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式的配置

application.yml文件

spring:
  profiles:
    active: dev # 表示开发环境

Nacos界面配置对应

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

prefix 默认为 spring.application.name 的值

spring.profile.active 即为当前环境对应的 profile,可以通过配置项 spring.profile.active 来配置。

file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置

具备回滚功能

主启动类

@EnableDiscoveryClient
@SpringBootApplication
public class NacosConfigClientMain3377
{
    public static void main(String[] args) {
            SpringApplication.run(NacosConfigClientMain3377.class, args);
    }
}

Controller类

@RestController
@RefreshScope
public class ConfigClientController {
    @Value("${config.info}")
    private  String configInfo;
    @GetMapping("/config/info")
    public String getConfigInfo() {
        return configInfo;
    }
}

配置配置中心文件

打开nacos ,登录到http://localhost:8848/nacos

填写配置内容

config:
 info: "dev config version=1"

填写以后发布

测试1

打开浏览器访问:localhost:3377/config/info

修改配置文件:

config:
 info: "dev config version=2"

测试1

打开浏览器访问:localhost:3377/config/info

Nacos中的匹配规则

Nacos作为配置中心-分类配置

问题

多环境多项目管理

问题1:

实际开发中,通常一个系统会准备

dev开发环境

test测试环境

prod生产环境。

如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢?

问题2:

一个大型分布式微服务系统会有很多微服务子项目,

每个微服务项目又都会有相应的开发环境、测试环境、预发环境、正式环境......

那怎么对这些微服务配置进行管理呢?

Nacos的图形化管理界面

配置管理

命名空间

三种方案加载配置

DataID方案

指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置

测试2

重新启动3377

打开浏览器访问:http://localhost:3377/config/info

Group方案

通过Group实现环境区分

在config下增加一条group的配置即可。可配置为DEV_GROUP或TEST_GROUP

Namespace方案

bootstrap

# nacos注册中心
server:
  port: 3377
spring:
  application:
    name: nacos-order
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yaml #这里我们获取的yaml格式的配置
        namespace: 5da1dccc-ee26-49e0-b8e5-7d9559b95ab0
        #group: DEV_GROUP
        group: TEST_GROUP

application

# Nacos注册配置,application.yml
spring:
  profiles:
    #active: test
    active: dev
    #active: info

到此这篇关于详解Nacos配置中心的实现的文章就介绍到这了,更多相关Nacos配置中心内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解Nacos中注册中心和配置中心的实现

    目录 1.Nacos 简介 Nacos 特性介绍 2.注册中心实现 2.1 创建服务提供者 2.2 创建服务消费者 3.配置中心实现 3.1 新建项目并添加依赖 3.2 配置 Nacos Config 信息 3.3 编写代码读取配置文件 3.4 Nacos 控制台添加配置信息 3.5 动态刷新功能 4.项目源码 小结 Spring Cloud Alibaba 是阿里巴巴提供的一站式微服务开发解决方案,目前已被 Spring Cloud 官方收录.而 Nacos 作为 Spring Cloud A

  • Nacos配置中心的配置文件的匹配规则及说明

    目录 Nacos配置中心配置文件的匹配 1.配置微服务配置中心文件 2.常用细节 3.从一个配置中心加载多个配置集 Nacos配置中心配置不成功问题 1.扫描包 2.关于配置nacos 3.为何没有热加载? 4.配置好为何还是没有热加载? 5.另一个坑 6.如何打开项目中的nacos Nacos配置中心配置文件的匹配 详情见nacos的官方文档 1.配置微服务配置中心文件 在 Nacos Spring Cloud 中,数据集(Data Id) 的配置完整格式如下: ${prefix}-${spr

  • SpringCloud安装Nacos完成配置中心

    目录 1. Nacos介绍 2. docker安装Nacos 2.1 docker-compose.yaml 2.2 启动后访问控制台 3.Springboot集成Nacos 3.1 pom依赖 3.2 yaml配置 3.3 测试配置动态化 3.4 测试日志 eureka注册中心 1. Nacos介绍 官网说明:Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. 2. docker安装Nacos 基

  • Nacos配置中心搭建及动态刷新配置及踩坑记录

    目录 一.Nacos配置中心介绍 二.配置中心搭建 1.配置中心启用 2.创建配置文件 3.工程配置 三.试验结果 四.踩坑经历 五.总结 近期有用到阿里的开源配置中心及注册中心nacos,特此记录并分享一些学习笔记及配置踩坑点. 一.Nacos配置中心介绍 从架构图上可以知道,Nacos提供了两种服务,一种是用于服务注册.发现的Naming Service,一种是用于配置中心.动态配置的Config Service,而他们底层均由core模块来支持. 外层提供OpenAPI供客户端使用,并提供

  • nacos配置中心远程调用读取不到配置文件的解决

    目录 nacos配置中心远程调用读取不到配置文件 下面引用官方文档的一段内容 读取不到nacos配置中心内容的坑 这是出错的配置 这是正确的配置 nacos配置中心远程调用读取不到配置文件 1.由于公司要求,对nacos做了命名空间的配置.(这个开始我步入了迷途....) 为了更好的区分配置文件,我们创建了两个命名空间,dev和test,在学习的时候,我们并未创建这些命名空间,所以一直正常使用,创建命名空间后我们无法读取到配置文件. 那么添加命名空间后需要在配置文件中支持命名空间,类似你创建了g

  • 详解Nacos配置中心的实现

    目录 基础配置 pom文件 YML文件 配置配置中心文件 Nacos中的匹配规则 Nacos作为配置中心-分类配置 Nacos的图形化管理界面 三种方案加载配置 DataID方案 Group方案 Namespace方案 基础配置 新建module:cloudalibaba-config-nacos-client3377 pom文件 版本号已经由父工程控制 <?xml version="1.0" encoding="UTF-8"?> <project

  • SpringBoot使用Nacos配置中心的实现

    本文介绍SpringBoot如何使用阿里巴巴Nacos做配置中心. 1.Nacos简介 Nacos是阿里巴巴集团开源的一个易于使用的平台,专为动态服务发现,配置和服务管理而设计.它可以帮助您轻松构建云本机应用程序和微服务平台. Nacos基本上支持现在所有类型的服务,例如,Dubbo / gRPC服务,Spring Cloud RESTFul服务或Kubernetes服务. 尤其是使用Eureka注册中心的,并且担心Eureka闭源的开发者们,可以将注册中心修改为Nacos,本文主要介绍Naco

  • linux系统下hosts文件详解及配置

    hosts文件 hosts -- the static table lookup for host name(主机名查询静态表). hosts文件是Linux系统上一个负责ip地址与域名快速解析的文件,以ascii格式保存在/etc/目录下.hosts文件包含了ip地址与主机名之间的映射,还包括主机的别名.在没有域名解析服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的ip地址,否则就需要使用dns服务程序来解决.通过可以将常用的域名和ip地址映射加入到hosts文件中

  • 详解servlet配置load-on-startup的作用

    在servlet的配置当中,<load-on-startup>1</load-on-startup>的含义是:标记容器是否在启动的时候就加载这个servlet. 当值为0或者大于0时,表示容器在应用启动时就加载这个servlet:当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载. 正数的值越小,启动该servlet的优先级越高. 如果我们在web.xml中设置了多个servlet的时候,可以使用load-on-startup来指定servlet的加载顺序,服

  • 详解Apache配置多个监听端口和不同的网站目录

    详解Apache配置多个监听端口和不同的网站目录 一 :添加多端口 Listen 80 Listen 81 Listen 82 二:设置虚拟主机目录 NameVirtualHost *:80 <VirtualHost *:80> ServerName localhost DocumentRoot "D:/phpStudy/WWW/" </VirtualHost> NameVirtualHost *:81 <VirtualHost *:81> Serv

  • 详解Eslint 配置及规则说明

    本文介绍了详解Eslint 配置及规则说明,分享给大家,具体如下: 中文官方网站 安装 可以全局安装,也可以在项目下面安装. 如下是在项目中安装示例,只需要在 package.json 中添加如下配置,并进行安装: "eslint": "^4.11.0" 配置 配置方式有两种,但建议使用文件配置的形式,比较独立,便于维护. 使用文件配置的方式:在项目的根目录下,新建一个名为 .eslintrc 的文件,在此文件中添加一些检查规则. 文件配置方式 env:你的脚本将要

  • 详解apache配置域名的坑

    没有用过apache,出来工作后,一直都是nginx(不是运维),最近朋友的一个小项目出了点问题.接触到apache. 首先.配置域名,监听889这个端口 第二步,重启apache /www/server/apache/bin/apachectl restart 第三步,外网浏览器访问 ,访问不了 第四步.排查原因 1. 在服务器上本地 curl localhost:889 访问,连接拒绝 2.查看端口的使用情况  lsof -i:889 3.查询了一下监听 netstat -tnl. 监听是正

  • 详解VScode 配置为 LaTeX 编辑器(IDE)

    VScode 配置为 LaTeX IDE 在Windows中,配置VScode作为LaTeX的编辑器(IDE),并使用SumatraPDF预览PDF文件.主要是LaTeX Workshop扩展的设置,如果要使用外部的PDF阅读器,则还需要设置SumatraPDF. 安装扩展 ctrl+shift+x调出应用商店,搜索并安装LaTeX Workshop扩展: 配置LaTeX Workshop LaTeX文件.tex的编译.预览.辅助文件的清理等都在扩展latex workshop中设置. LaTe

  • 详解maven配置多仓库的方法示例

    刚接触maven就是在公司里配置好的,所以一直以来使用都没毛病,所以一直没有去动这些固有的东西. 但是,后来把公司的电脑拿回家之后,发现有的东西就搞不起来了.原因也看一下就明白了,因为在公司的时候用的是公司的maven私服,所以回家后,用不了也是正常. 但是,真的脱离了公司,自己就不能工作了吗?不可能吧. 难道一下开源工具都必须要依赖于公司的网络? 这明显是不合理的. 那么,就扯出本次文章的意义了,在家里,自然是要公有的maven仓库了,那么,怎样配置maven仓库才能让自己用起来顺心呢? 1.

随机推荐