深入微服务-Nacos 配置中心核心概念及实战

4 篇文章 0 订阅
3 篇文章 1 订阅

系列文章目录



前言

本系列带着大家深入微服务 Spring体系的各个框架的基本使用以及底层原理。上一篇文章介绍了Nacos的核心概念以及客户端实现服务发现的功能,本节将带着大家学习下Nacos Config核心概念以及实战


分布式配置中心的作用

分布式配置中心可以集中管理程序配置以及实现不重启服务容器,动态修改程序的配置内容,市面上的分布式配置中心有携程的Apollo,SpringCloud Config,Nacos Config 配置中心。

Nacos 配置中心是什么

  • Nacos Config 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持
  • 使用 Nacos Config,可以在 Nacos Server 配置界面集中管理 Spring Cloud 应用的外部属性配置
  • 当应用程序通过部署管道(例如:Jenkins)从开发到测试再到生产时,可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容
    在这里插入图片描述

Nacos 配置中心核心概念

  • 配置 (Configuration)
    在软件开发过程中将一些需要变更的参数、变量从代码中分离出来独立管理,以独立的配置文件的形式存在,根据不同的部署环境可以进行切换不同的配置。配置变更是调整系统运行时的有效手段之一。
  • 配置管理 (Configuration Management)
    在数据中心中,系统中所有配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动统称为配置管理

Nacos 配置中心的配置一致性模型

Nacos 配置管理一致性分为两部分,第一部分是Server间一致性协议(Nacos Server集群环境),一个是SDK(Nacos Config Client)与Server的一致性协议,配置作为分布式系统中飞强一致性数据,在出现脑裂的时候高可用性高于一致性,因此配置中心采用的是AP一致性协议

Nacos Config 实战

需实现效果:通过Nacos实现配置的动态变更

1、启动Nacos Server
2、nacos server中新建serviceA-dev.yaml
在这里插入图片描述

3、搭建Nacos Config 服务
3.1) 引入Nacos Client依赖

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

3.2) 添加bootstrap.yaml

spring:
  profiles:
    active: dev #指定环境
  application:
    name: serviceA # 服务名称
  cloud:
    nacos:
      config:
        server-addr: nacos:8848
        file-extension: yaml
        username: nacos
        password: nacos

3.3) 添加启动类,测试功能

@SpringBootApplication
public class NacosConfigApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosConfigApplication.class, args);
        String userName = applicationContext.getEnvironment().getProperty("user.name");
        String userAge = applicationContext.getEnvironment().getProperty("user.age");
        System.out.println("my name is :"+userName+"; age: "+userAge);
    }
}

启动服务之后,控制台输出
在这里插入图片描述

Nacos Config功能

支持profile粒度的配置

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} 这个配置项来配置,实现读取不同的环境

spring:
  profiles:
    active: dev #指定环境

支持自定义namespace配置

Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等
在没有明确指定 ${spring.cloud.nacos.config.namespace} 配置的情况下, 默认使用的是 Nacos 上 public 这个namespae。如果需要使用自定义的命名空间,可以通过以下配置来实现:
namespace 对应的是命名空间的id

spring:
  cloud:
    nacos:
      config:
        namespace: xxx # 命名空间ID

命名空间ID默认为默认生成,可指定
在这里插入图片描述

支持自定义 Group 的配置

在没有明确指定 ${spring.cloud.nacos.config.group} 配置的情况下, 默认使用的是 DEFAULT_GROUP 。如果需要自定义自己的 Group,可以通过以下配置来实现:

spring:
  cloud:
    nacos:
      config:
        group: DEV_GROUP

支持共享配置

共享配置 解决多个应用间配置共享的问题

spring:
  cloud:
    nacos:
      config:
        shared-configs:
          - data-id: shared-configs.yml
            refresh: true
  • 通过 spring.cloud.nacos.config.shared-configs[n].data-id 来支持多个共享 Data Id 的配置。
  • 通过 spring.cloud.nacos.config.shared-configs[n].group 来配置自定义 Data Id 所在的组,不明确配置的话,默认是 DEFAULT_GROUP。
  • 通过 spring.cloud.nacos.config.shared-configs[n].refresh 来控制该Data Id在配置变更时,是否支持应用中动态刷新,默认false

支持自定义扩展DataId配置

支持自定义 Data Id 的配置

spring:
  cloud:
    nacos:
      config:
        extension-configs:
          - data-id: shared-configs.yml
            refresh: true
  • 通过 spring.cloud.nacos.config.extension-configs[n].data-id 的配置方式来支持多个 Data Id 的配置。
  • 通过 spring.cloud.nacos.config.extension-configs[n].group 的配置方式自定义 Data Id 所在的组,不明确配置的话,默认是 DEFAULT_GROUP。
  • 通过 spring.cloud.nacos.config.extension-configs[n].refresh 的配置方式来控制该 Data Id 在配置变更时,是否支持应用中可动态刷新, 感知到最新的配置值。默认是不支持的

总结

Nacos 基础篇差不多更新完了,后面会给大家带来Nacos 源码解析部分,感谢支持

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
课程介绍 【完善体系+精品资料】本课程总计115课时,打造全网最全的微服务体系课程;从微服务是什么、能够做什么开始讲起,绝对零基础入门到精通类型。课程整体脉络十分清晰,每个章节一个知识点,画图+源码+运行讲解,不信你学不会。1、课程先讲解了什么是单体架构、什么是微服务架构、他们之间有什么区别和联系,各自有什么优缺点。2、从本质入手,使用最简单的Spring Boot搭建微服务,让你认清微服务是一种思想和解决问题的手段,而不是新兴技术。3、讲解Spring Boot 与 Spring Cloud 微服务架构之间的联系,原生的RestTemplate工具,以及Actuator监控端点的使用。4、带着微服务所带来的各种优缺点,为大家引入服务发现与注册的概念和原理,从而引入我们的第一个注册中心服务Eureka。5、引入负载均衡的理念,区分什么是服务端负载均衡,什么是客户端负载均衡,进而引入Ribbon负载均衡组件的详细使用。6、为了解决微服务之间复杂的调用,降低代码的复杂,我们引入了Feign声明式客户端,让你几行代码学习服务的远程调用。7、为了解决服务之间的稳定性,避免发生雪崩问题,我们引入了Hystrix断路器,服务降级和熔断机制。8、微服务集群十分庞大,监控起来是十分困难的,尤其是对每一个接口的熔断情况进行监控,因此我们引入了Turbine微服务监控。9、微服务的调用是杂乱无章的,可以网状调用,怎么做到统一的入口出口,统一的授权、加密、解密、日志过滤,我们引入了第一代网关Zuul。10、微服务的配置分散,每次要修改配置都要重启服务,因此我们引入了Config配置中心。11、跟上主流,Consul是当前主流的服务注册与发现、配置中心一体化的解决方案。12、阿里的Nacos服务注册与发现、配置中心在国内炙手可热,Nacos 经历过双十一的微服务中间件。13、Turbin做微服务监控还是太弱,我们需要更强大,可视化,操作性更强的监控系统,因此我引入了Spring Boot Admin体系。14、Zuul已经停止更新支持,Spring Cloud官方推荐的二代网关Spring Cloud Gateway更加强大。15、微服务的安全架构体系虽然复杂,但是是有学习条例的,什么是认证授权、什么是OAuth2.0的原理、 JWT、怎么样去开发实现。 课程资料 【独家资料】1、课程附带全部63个项目源码,其中Hoxton版本项目源码37个,Edgware版本项目26个,2、230页高清PDF正版课件。3、附带nacos、consul、cmder等视频配套软件。学习方法1、每一节课程均有代码,较好的方式为一边听我的讲解,一边使用我提供的项目代码进行观察和运行。2、课程体系庞大,但是并不杂乱,每个章节只针对一个知识点,减轻学习压力。3、坚持每天学习1~2个章节,可以在地铁、公交上用手机学习。【完善知识体系图】

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

janyxe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值