热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于springboot:教程系列二Spring-Cloud-Tencent-使用配置中心管理配置

导读:当利用的配置多了之后,往往须要配置核心来治理配置的生命周期,例如批改、公布、版本治理、回滚、多集群治理等。另外也常常遇到须要动静下发配置的场

导读:当利用的配置多了之后,往往须要配置核心来治理配置的生命周期,例如批改、公布、版本治理、回滚、多集群治理等。另外也常常遇到须要动静下发配置的场景,例如开关、业务参数等等。本文次要介绍 Spring Cloud Tencent 如何集成北极星配置核心。

Github 地址: Spring Cloud Tencent

模块简介

配置核心模块是 Spring Cloud Tencent 最外围的模块之一,实现了 Spring Cloud PropertySourceLoader SPI 接口(PolarisConfigFileLocator.java)。
在利用启动 Bootstrap 阶段,Spring Cloud 会调用 PolarisConfigFileLocator 从 Polaris 服务端获取配置文件并加载到 Spring 上下文里。通过 Spring Boot 规范的
@Value@ConfigurationProperties 注解即可获取配置内容。
动静配置刷新能力,则通过 Spring Cloud 规范的 @RefreshScope 机制实现。

留神: 因为 Spring Cloud PropertySourceLoader SPI 是在 Bootstrap 阶段调用,所以 Polaris Config 相干的配置内容(例如Polaris 服务地址)须要放在 bootstrap.yml 文件里,而不能放在 application.yml 文件里,否则会初始化失败。

疾速入门

本章节将介绍如何在 Spring Cloud 我的项目中应用 Spring Cloud Tencent Config 的性能。
残缺 Example 代码请参考:polaris-config-example

第一步:引入 Polaris 服务端

形式一:搭建本地北极星服务

搭建北极星服务请参考 Polaris Getting Started

形式二:应用北极星开源提供的体验环境

  • Console Address : http://14.116.241.63:8080/

    • Username: polaris
    • Password: polaris
  • Server Address: grpc://183.47.111.80:8091

    形式三:应用腾讯云北极星服务

    腾讯云提供了免运维的北极星云服务,基于云服务能够疾速开明生产级高可用北极星集群 理解更多

    第二步:引入 Spring Cloud Tencent Config 依赖

  1. 参考 Spring Cloud Tencent 版本治理 文档获取最新的版本号,引入 Spring Cloud Tencent Bom,例如:

    
        
            com.tencent.cloud
            spring-cloud-tencent-dependencies
            1.5.0-Hoxton.SR9
            pom
            import
        
    
  1. 引入 Spring Cloud Tencent Config Starter

    
     com.tencent.cloud
     spring-cloud-starter-tencent-polaris-config
    

    第三步:减少 Spring Cloud Tencent Config Starter 的配置文件

    在您我的项目的 bootstrap.yml 配置文件中退出以下配置内容,留神肯定要放在 bootstrap.yml 里。
    外围配置内容为配置北极星服务端地址以及注入的配置文件信息

    1. 配置 Polaris 配置核心地址

    如果您应用的北极星配置核心和注册核心是同一套北极星集群,则只需配置 spring.cloud.polaris.address 即可。
    如果您部署了两套北极星集群,别离用于注册核心和配置核心,则 spring.cloud.polaris.address 用于指定注册核心集群的地址,spring.cloud.polaris.config.address 用于指定配置核心的地址。
    如下所示:

    spring:
      application:
     name: ${application.name}
      cloud:
     polaris:
       address: grpc://${批改为第一步部署的 Polaris 服务地址}:8091 # 必填
       namespace: default # 全局 namespace 参数
       config:
         address: grpc://${独立的配置核心}:8093 # 选填,只有在配置核心和注册核心是两个不同的地址时才须要配置
         auto-refresh: true # 选填,当配置公布后,动静刷新 Spring 上下文,默认值为 true面

    2. 注入配置文件

    咱们举荐的最佳实际是在北极星管控端创立一个名为以后利用名( ${spring.application.name}) 的配置分组,Spring Cloud Tencent Config 会主动注入以后利用名分组下的

  • application-${activeProfile}.properties
  • application-${activeProfile}.yml
  • application.properties
  • application.yml
  • bootstrap-${activeProfile}.properties
  • bootstrap-${activeProfile}.yml
  • bootstrap.properties
  • bootstrap.yml

    优先级从上到下顺次升高

留神:是 yml 后缀,而不是 yaml

主动注入以上配置文件合乎 Spring Boot 的标准,可能满足绝大部分利用场景了。
只有当您须要注入额定自定义的配置文件时,才须要在 bootstrap.yml 里配置 spring.cloud.polaris.config.groups,如下所示:

spring:
  cloud:
    polaris:
      config:
        groups:
          - name: ${spring.application.name} # 选填,注入自定义配置的配置分组
            files: [ "config/application.properties", "config/bootstrap.yml" ] # 注入自定义配置文件列表,当 key 抵触时,排在后面的配置文件优先级高于前面

第四步:代码里应用配置

1. 通过 @Value 注入

@Value("${timeout:1000}")
private int timeout;

2. 通过 @ConfigurationProperties 注入

@RefreshScope
@Component
@ConfigurationProperties(prefix = "teacher")
public class Person {

    private String name;

    private int age;

    String getName() {
        return name;
    }

    void setName(String name) {
        this.name = name;
    }

    int getAge() {
        return age;
    }

    void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" + "name='" + name + '\'' + ", age=" + age + '}';
    }

}

第五步:在北极星控制台增加配置文件

1. 创立 Namespace

Namespace 为北极星里外围的概念,通过 Namespace 逻辑隔离资源,例如通常用于标识不同的环境、不同的集群。

2. 创立配置文件分组

北极星的配置文件分组概念为一组配置文件的汇合,举荐把利用名作为一个分组名,例如在咱们的示例中,新建一个 polaris-config-example 的分组。
polaris-config-example 利用的配置文件都放在polaris-config-example 分组下,这样便于配置管理。

3. 创立并公布配置文件

北极星配置核心的控制台,配置文件名能够通过 / 来按树状目录构造展现,树状构造能够清晰的治理配置文件。例如一个利用下分不同的模块,每个模块都有独立的一组配置文件,则能够创立 module1/file1.properties, module1/file2.yaml, module2/file3.yaml

留神:配置文件名强烈建议带文件后缀,例如 .properties .yaml .yml .json 等。因为客户端会通过文件名后缀来解析文件内容,如果客户端发现不意识的后缀名则默认当做 .properties 文件解决。

配置好的实例如下图所示:

第六步:启动利用

到此接入 Spring Cloud Tencent Config 即已实现。

第七步: 实现动静刷新配置能力

Spring Cloud 通过在配置变更的时候,重建 Bean 的形式实现动静刷新能力。通过以下两个步骤即可实现刷新能力:

步骤一:开启动静刷新开关(默认为关上状态)

bootstrap.yml 里配置 spring.cloud.polaris.config.auto-refresh=true

步骤二:给 Bean 打上 @RefreshScope 注解

残缺的配置参数

配置项Key 默认值 是否必填 配置项阐明
spring.cloud.polaris.config.enabled true 是否开启配置模块
spring.cloud.polaris.config.address 北极星服务端地址,可不填。当配置核心和注册核心为不同的地址时候才须要填写
spring.cloud.polaris.config.port 8093 北极星配置核心的端口号,默认为 8093
spring.cloud.polaris.config.auto-refresh true 是否动静更新配置
spring.cloud.polaris.config.groups 从北极星服务端获取自定义的配置文件
spring.cloud.polaris.config.connect-remote-server true 是否连贯到近程北极星配置核心服务端,当没有网络环境或者无北极星服务端时可敞开

北极星配置核心原理介绍

客户端端视角

  1. 利用启动时,同步从服务端拉取一次配置,获取最新的配置内容
  2. 把第一步拉取到的所有的配置文件生成 ListVersion> 的数据 ,并向服务端发送订阅配置申请,申请内容为 ListVersion>
  3. 当收到配置文件的推送音讯时,向服务端拉取最新的配置文件

订阅配置服务端视角

  1. 先查看客户端 ListVersion> 的申请里是否存在 File 版本号落后,如果存在,则立马响应 File -> NewVersion 内容给客户端
  2. 如果客户端配置文件版本号都是最新的,则在内存里保护 File -> List 的数据结构并 Hold 申请 30s。如果 30s 内有配置文件公布,则立马响应申请,返回 File -> NewVersion 给所有客户端

公布推送配置简化流程

  1. 用户在界面点击公布按钮,服务端更新数据库里配置公布表的数据。配置公布表的外围字段:file, version, content, mtime
  2. 每个北极星服务端实例,都会定时1s扫描配置公布表,依据 mtime 捞出最近 1s 内变更过的数据
  3. 北极星服务端实例扫描到最新变更的数据之后
  4. 从新加载内存缓存
  5. 向内存里的音讯公布管道里写入一条音讯
  6. 推送协程从音讯公布管道里获取到音讯,并生产音讯。通过 File -> List 信息,获取所有订阅配置文件的客户端信息,并响应客户端 Hold 的申请。

推荐阅读
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
author-avatar
mobiledu2502894453
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有