首页 > 其他分享 >六、配置获取规则

六、配置获取规则

时间:2023-07-01 19:58:33浏览次数:35  
标签:name 获取 配置 cluster 应用 规则 my

在有了cluster概念后,配置的规则就显得重要了。

比如应用部署在A机房,但是并没有在Apollo新建cluster,这个时候Apollo的行为是怎样的?

或者在运行时指定了cluster=SomeCluster,但是并没有在Apollo新建cluster,这个时候Apollo的行为是怎样的?

接下来就来介绍一下配置获取的规则。

一、 应用自身配置的获取规则

当应用使用下面的语句获取配置时,我们称之为获取应用自身的配置,也就是应用自身的application namespace的配置。

Config config = ConfigService.getAppConfig();

对这种情况的配置获取规则,简而言之如下:

  1. 首先查找运行时cluster的配置(通过apollo.cluster指定)

  2. 如果没有找到,则查找数据中心cluster的配置

  3. 如果还是没有找到,则返回默认cluster的配置

 

图示如下:
 

 

所以如果应用部署在A数据中心,但是用户没有在Apollo创建cluster,那么获取的配置就是默认cluster(default)的。

如果应用部署在A数据中心,同时在运行时指定了SomeCluster,但是没有在Apollo创建SomeCluster,那么获取的配置就是A数据中心cluster的配置,如果A数据中心cluster没有配置的话,那么获取的配置就是默认cluster(default)的。

演示

default 集群中的application namesapce添加配置:

my.name=username

修改springboot程序中的application.properties配置:

apollo.cluster=green0001

green0001集群在Apollo中不存在。启动后获取my.name配置的值,显示为username。当green0001集群不存在时,使用的是默认集群中的配置。

 

现在default 集群中的my.name配置为:

my.name=username

green集群中的my.name配置为:

my.name=李四

修改springboot程序中的application.properties配置:

apollo.cluster=green

重启程序后获取my.name配置,显示为李四。当配置的集群有配置值时就优先使用。

二、公共组件配置的获取规则

FX.Hermes.Producer为例,hermes producer是hermes发布的公共组件。当使用下面的语句获取配置时,我们称之为获取公共组件的配置。

Config config = ConfigService.getConfig("FX.Hermes.Producer");

对这种情况的配置获取规则,简而言之如下:

  1. 首先获取当前应用下的FX.Hermes.Producer namespace的配置

  2. 然后获取hermes应用下FX.Hermes.Producer namespace的配置

  3. 上面两部分配置的并集就是最终使用的配置,如有key一样的部分,以当前应用优先

 
图示如下:
 

 

演示

在common_app应用中配置:
 

 

在my_app001应用中关联common_app应用的common namespace,并修改配置:
 

 

修改SpringBoot项目的application.properties:

apollo.bootstrap.namespaces = application,common

增加common namesapce。

 

在Controller中新增:

@Value("${kk.v1}")
private String v1;

@Value("${kk.v2}")
private String v2;

@GetMapping("/v1")
public String v1() {
    return v1;
}

@GetMapping("/v2")
public String v2() {
    return v2;
}

启动程序后访问http://localhost:8000/v1,和http://localhost:8000/v2,获取到的值都是345。当配置在关联的namesapce中,首先从当前应用中获取,获取不到再到关联的应用中获取。

标签:name,获取,配置,cluster,应用,规则,my
From: https://www.cnblogs.com/shigongp/p/17519215.html

相关文章

  • nginx和php的配置,解释php文件
    nginx和php环境安装好,安装步骤在此省略# 这里新加的# PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI协议默认配置.# Fastcgi服务器和程序(PHP,Python)沟通的协议.location~.php${root/usr/share/nginx/html;fastcgi_pass127.0.0.1:9000;fastcgi_index......
  • Linux安装JDK并配置环境变量
    一、查询已有JAVA环境版本信息java-version二、下载OracleJDK安装包https://www.oracle.com/java/technologies/downloads/archive/四、安装+配置JDK以下方式适用于安装各版本JDK,本文以JDK1.8为例1、创建一个java目录mkdir-p/home/local/java2、进入目录cd/home/loca......
  • rsync配置和使用+inotify实时同步
    1,rsync基本用法1.1问题 掌握远程同步的基本操作,使用rsync完成以下任务1,将目录/boot同步到目录/todir下2,将目录/boot下的文档同步到/todir下3,在目录/boot下新增文件a.txt,删除/todir下的子目录grub2,再次同步时/todir与/boot一致1.2方案本地同步操作rsync [选项]  本地目录1......
  • Taurus .Net Core 微服务开源框架:Admin 插件【4-3】 - 配置管理-Mvc【Plugin-MicroSer
    前言:继上篇:Taurus.NetCore微服务开源框架:Admin插件【4-2】-配置管理-Mvc【含请求日志打印】本篇继续介绍下一个内容:1、系统配置节点:Mvc- Plugin- MicroService 配置界面:注册中心 界面如下:简要说明:该菜单下,显示该微服务类型的菜单,可能为服务端、或客户端、或两......
  • Nginx 配置基础入门
    Nginx是什么Nginx("enginex")是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强。Nginx官网:http://nginx.org/Nginx安装Nginx官网下载地址:http://nginx.org/en/download.html其中nginx-1.23.4这一列是Linux版本。Windows安装解压Nginx压缩包后,目录如下:启动nginx的方法1......
  • 添加ingress规则的时候报错
    [root@k8s-master01test]#kubectlapply-fweb-ingress.yamlErrorfromserver(InternalError):errorwhencreating"web-ingress.yaml":Internalerroroccurred:failedcallingwebhook"validate.nginx.ingress.kubernetes.io":failedtoca......
  • nginx之location规则详解
    一、语法规则:=开头表示精确匹配^~ 开头表示uri以某个常规字符串开头,理解为匹配url路径即可(非正则)~ 开头表示区分大小写的正则匹配~* 开头表示不区分大小写的正则匹配!~和!~*分别为区分大小写不匹配及不区分大小写不匹配的正则/ 通用匹配,任何请求都会匹配......
  • nginx之proxy_pass规则详解
    在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。假设下面四种情况分别用http://192.168.1.1/proxy/test.html进行访问。第一种:location/proxy/{proxy_passhttp://127.0.0.1/;}代......
  • 数据流量来回路径一致配置
    修改OSPF开销,实现数据来回路径一致未配置前,路由表有多条路径[R1]displayiprouting-tableRouteFlags:R-relay,D-downloadtofib------------------------------------------------------------------------------RoutingTables:PublicDestinations:37......
  • 关于Linux-Kernel-Live-patching-的效果演示-kpatch auto-配置
    本文为了演示出效果,准备了如下的环境操作系统:RedHatEnterpriseLinuxrelease8.7(Ootpa)内核版本:4.18.0-372.9.1.el8.x86_64 1、关于操作系统版本、内核、内核相关的软件包版本,情况如下:[root@qq-5201351~]#cat/etc/redhat-releaseRedHatEnterpriseLinuxrelease......