如何使用Spring Cloud Config进行分布式配置,知道一个算你牛

本章将要讨论的主题包括:

口由 Spring Cloud Config Server公开的HTTP API。

口服务器端的不同类型的存储库后端。

口与服务发现集成。

口使用SpringCloudBus和消息代理自动重新加载配置。

HTTPAPI资源简介

===========

Config Server将提供HTTP API,它可以通过各种方式调用。以下端点都是可用的。

口application}/profle}[/{lbel}]: 以JSON格式返回数据; label 参数是可选的。

口/application}- {profile}.yml:返回YAML格式。

口/{abel}/application)- {profile}.yml: 这是前一个端点的变体,开发人员可以传递一个可选的label参数。

口/{application}-{profile}. properties: 返回properties 文件使用的简单键/值格式。

口 /{abel}/application)- {profile} .properties: 这是前一个端点的变体,开发人员可以传递一个可选的label参数。

从客户端的角度来看,aplication 参数是应用程序的名称,它取自spring. aplication.name或springconfig.name的属性,profile 是活动配置文件或以逗号分隔的活动配置文件列表。最后一个可用的参数label是一个可选属性,只有在使用Git作为后端存储时才很重要。它将设置Git分支的名称以进行配置,默认为master.

如何使用Spring Cloud Config进行分布式配置,知道一个算你牛

现在可以从最简单的基于文件系统后端的例子开始。默认情况下,Spring Cloud Config Server将尝试从Git存储库获取配置数据。要启用原生配置文件,开发人员应该将spring profiles active选项设置为native来启动服务器。它将搜索存储在以下位置的文件:classpath:/. casspath:/config. fle:/. fle:/config. 这意味着properties 或YAML文件也可以放在JAR文件中。为测试起见,我们已经在src/main/resourcee中创建了一个 config文件夹。我们的配置文件将存储在该位置中。现在需要回到本书第4章的示例中。在第4章中已经介绍了集群发现环境的配置,该环境中的每个客户端服务实例都在不同的区域中启动。它有3个可用区域和3个客户端实例,每个实例都在application.yml文件中有自己的配置文件。该示例的源代码在config分支中可用,以下是其链接。

https://gi thub。com/piomin/

sample-spring-cloud-netflix/tree/config

我们当前的任务是将该配置迁移到Spring Cloud Config Server.这里不妨自我提醒一下这个示例的属性。以下是用于客户端应用程序的第一个实例的配置文件设置。根据所选的配置文件,有一个修改实例运行的端口、默认发现服务器URL和区域名称。

spring:

profiles: zonel

eureka:

instance :

metadataMap :

zone: zonel

client :

serviceUrl:

defaultZone: http://localhost:8761/eureka/

server:

port:

$(PORT:80811}

在前面所介绍的示例中,为简单起见,已经将所有配置文件设置放在单个aplication.yml文件中。该文件也可以分为3个不同的文件,其名称包括配置文件application

zonel.yml.pplicao-zone2.ymo和pplication zone3.yml.当然,这样的名称对于单个应用程序来说是唯一的,因此,如果决定将文件移动到远程配置服务器中,则应该注意它们的名称。客户端应用程序名称是从spring.aplication.name 注入的,在这种情况下,它是client-service。因此,总而言之,笔者已经在src/main/resources/config目录中创建了名为client-service-zone[n].yml的3个配置文件,其中,[m]是实例的编号。现在,当开发人员调用http:oh/o:/88/clie/ service/zone端点时,将接收到以下JISON格式的响应。

{

“name”:“client-service”,

“profiles”:[" zone1"],

“label” :null ,

“version” :null,

“state”" :nul1,

“propertySources”:[{

“name” :“classpath:/config/client- service-zonel . yml”,

“source”:{

“eureka . instance . metadataMap . zone” :“zone1”,

“eureka. client. serviceUrl . defaultZone” :“http://localhost: 8761/eureka/”,

“server . port”:“$ {PORT:8081}”

}

}]

}

还可以为第二个实例调用

ht:t/t/los5/888/client-servicee -zone2.properties,它将以下响应作为属性列表返回。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

为什么我不完全主张自学?
平台上的大牛基本上都有很多年的工作经验了,你有没有想过之前行业的门槛是什么样的,现在行业门槛是什么样的?以前企业对于程序员能力要求没有这么高,甚至十多年前你只要会写个“Hello World”,你都可以入门这个行业,所以以前要入门是完全可以入门的。
②现在也有一些优秀的年轻大牛,他们或许也是自学成才,但是他们一定是具备优秀的学习能力,优秀的自我管理能力(时间管理,静心坚持等方面)以及善于发现问题并总结问题。
如果说你认为你的目标十分明确,能做到第②点所说的几个点,以目前的市场来看,你才真正的适合去自学。

除此之外,对于绝大部分人来说,报班一定是最好的一种快速成长的方式。但是有个问题,现在市场上的培训机构质量参差不齐,如果你没有找准一个好的培训班,完全是浪费精力,时间以及金钱,这个需要自己去甄别选择。

我个人建议线上比线下的性价比更高,线下培训价格基本上没2W是下不来的,线上教育现在比较成熟了,此次疫情期间,学生基本上都感受过线上的学习模式。相比线下而言,线上的优势以我的了解主要是以下几个方面:
①价格:线上的价格基本上是线下的一半;
②老师:相对而言线上教育的师资力量比线下更强大也更加丰富,资源更好协调;
③时间:学习时间相对而言更自由,不用裸辞学习,适合边学边工作,降低生活压力;
④课程:从课程内容来说,确实要比线下讲的更加深入。

应该学哪些技术才能达到企业的要求?(下图总结)

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
哪些技术才能达到企业的要求?(下图总结)**

[外链图片转存中…(img-V5cMlW8p-1713632730578)]

[外链图片转存中…(img-7ufHmTbV-1713632730578)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值