首页
/
每日頭條
/
圖文
/
springcloudconfig是什麼
springcloudconfig是什麼
更新时间:2025-07-08 18:34:42
Config配置中心

在采用分布式微服務架構的系統中,由于服務數量衆多,為了方便服務配置文件的統一管理,需要分布式配置中心組件。如果分散管理各個服務的配置,那麼上線之後的配置如何保持一緻将會是一個很讓人頭疼的問題。

因此,各個服務的配置定然需要集中管理。Spring Cloud Config配置中心是一個比較好的解決方案。使用Spring Cloud Config配置中心涉及兩部分内容:

(1)config-server:服務端配置。

(2)config-client:客戶端配置。

config-server服務端組件

通過Spring Cloud構建一個config-server服務大緻需要3步。首先,在pom.xml中引入spring-cloud-Config-server依賴,如下所示:

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>

其次,在所創建的Spring Boot程序的啟動類上添加@EnableConfigServer注解,開啟Config Server服務,代碼如下:

@EnableConfigServer @SpringBootApplication public class Application { public static void main(String[] args) { new SpringApplicationBuilder(Application.class). web(true).run(args); } }

最後,設置屬性文件的位置。Spring Cloud Config提供本地存儲配置的方式。在bootstrap啟動屬性文件中,設置屬性spring.profiles.active=native,并且設置屬性文件所在的位置,如下所示:

server: port: 7788 #配置中心端口 spring: application: name: config-server #服務名稱 profiles: active: native #設置讀取本地配置文件 cloud: config: server: native: searchLocations: classpath:config/ #聲明本地配置文件的存放位置

配置說明:

(1)spring.profiles.active=native,表示讀取本地配置,而不是從Git讀取配置。

(2)search-locations=classpath:config/,表示查找文件的路徑,在類路徑的config下。

服務端的配置文件放置規則:在配置路徑下,以{label}/{application}-{profile}.properties的命令規範放置對應的配置文件。上面的實例放置了以下配置文件:

/dev/crazymaker-common.yml /dev/crazymaker-db.yml /dev/crazymaker-Redis.yml

以上文件分别對通用(common)、數據庫(db)、緩存(redis)的相關屬性進行設置。作為示例,緩存(redis)的配置如下:

spring: redis: blockWhenExhausted: true #鍊接耗盡時是否阻塞 database: 0 #指定Redis數據庫 host: ${SCAFFOLD_REDIS_HOST:localhost} #Redis主機IP maxIdle: 100 #最大空閑連接數 maxTotal: 2000 #最大連接數 maxWaitMillis: 60000 #獲取鍊接最大等待毫秒數 minEvictableIdleTimeMillis: 1800000 #最小空閑時間 numTestsPerEvictionRun: 1024 #每次釋放鍊接的最大數目 password: ${SCAFFOLD_REDIS_PSW:123456} #密碼,如果沒有設置密碼,這個配置就可以不設置 port: 6379 #Redis端口 softMinEvictableIdleTimeMillis: 10000 #鍊接空閑多久後釋放 testOnBorrow: false #在使用時檢查有效性 testWhileIdle: true #獲取鍊接時檢查有效性 timeBetweenEvictionRunsMillis: 30000 #釋放鍊接的掃描間隔(毫秒) connTimeout: 6000 #鍊接超時毫秒數 readTimeout: 6000 #讀取超時毫秒數

Config配置中心啟動之後,可以使用以下地址格式直接訪問加載好的配置屬性:

http://${CONFIG-HOST}: ${CONFIG-PORT}/{application}/{profile}[/{label}]

例如,通過地址

http://192.168.233.128:7788/crazymaker/redis/dev訪問示例中配置的緩存的相關屬性,如圖2-11所示。

springcloudconfig是什麼(一文帶你弄明白Spring)1

圖2-11 返回的配置信息

特别說明:Spring Cloud Config-Server支持多種配置方式,比如Git、Native、SVN等。雖然官方建議使用Git方式進行配置,但是這裡沒有重點介紹Git方式,而是使用了本地文件的方式,有以下3個原因:

(1)對于學習或者一般的開發來說,本地文件的配置方式更簡化。

(2)生産環境建議使用Nacos,其具備注冊中心和配置中心相結合的功能,更加方便與簡單。

(3)掌握了Native的配置方式之後,對于Git的配置方式就能觸類旁通。

config-client客戶端組件

客戶端config-client同config-server一樣,需要新增springcloud-starter-eureka的依賴用來注冊服務,然後增加spring-cloudstarter-config依賴引入配置相關的JAR包。

<dependencies> ... <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> </dependencies>

在bootstrap.properties中,按如下規則增加客戶端配置的映射規則:

spring.cloud.config.label:dev #對應服務端規則中的{label}部分 spring.application.name:crazymaker #對應服務端規則中的{application}部分 spring.cloud.config.profile:redis #對應服務端規則中的{profile}部分 spring.cloud.config.uri:http://${CONFIG-HOST}:7788/ #配置中心config-server獨立的uri地址

效果如圖2-12所示。

springcloudconfig是什麼(一文帶你弄明白Spring)2

圖2-12 客戶端配置項與服務端配置文件的映射規則

如果是與Eureka的客戶端配合使用,那麼建議開啟配置服務的自動發現機制,使用如下配置:

spring.cloud.config.discovery.enabled: true spring.cloud.config.discovery.service-id: config-server

配置中心的兩種發現機制不能同時存在,二者選其一即可。

客戶端config屬性的相關配置隻有配置在bootstrap.properties(或bootstrap.yml)中,config部分的内容才能被正确加載,原因是config的相關配置必須早于application.properties,而bootstrap.properties的加載也早于application.properties。

本文給大家講解的内容是Spring Cloud Config配置中心
  1. 下篇文章給大家講解的是微服務的RPC遠程調用;
  2. 覺得文章不錯的朋友可以轉發此文關注小編;
  3. 感謝大家的支持
,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
何炅汪涵為什麼一直在湖南台(汪涵為何炅慶生)
何炅汪涵為什麼一直在湖南台(汪涵為何炅慶生)
  4月28号當天,因生日何炅就長時間挂在微博熱搜上,沒有奢華的生日派對,何炅依然堅守在工作崗位上,錄制着五四晚會。何炅稱:大家的祝福都收到了,非常感動,但最有意義的就是生日參加公益活動,被萬千觀衆尊稱何老師的他,最後還低調親和說“小何感恩”!果然是雅人深緻不矜不伐的人民老師。      ​過個生日就能目睹到何炅的強大人緣,幾乎半個娛樂圈都跑到他微博裡留言,...
2025-07-08
夏洛特煩惱你不一定知道的細節(刷了N遍夏洛特煩惱後搜集了一些很有趣很贊的小細節)
夏洛特煩惱你不一定知道的細節(刷了N遍夏洛特煩惱後搜集了一些很有趣很贊的小細節)
  與同事閑聊到《夏洛特煩惱》的一些印象深刻的橋段,之後搜集整理了60多張圖片,盆兒友們注意流量哈~大家看看還有沒有可以補充的,我在評論區等你!   大春張揚運球打到裆。      2.大春!防他!!      3.大哥你的書包沒拉诶。。。  4.“有沒有人來看我啊?”“木有诶~”“你騙人!!”      5.魔性的校長。      6.出名了想吃烤串了咋整...
2025-07-08
廣東最好的海島旅遊攻略(廣東最适合短途遊玩的10大海島)
廣東最好的海島旅遊攻略(廣東最适合短途遊玩的10大海島)
  清明小長假馬上就要到啦!   各位小夥伴是不是早就按捺不住   想去浪浪浪浪浪的心呐!   今天,最姐就給大家帶來   10條廣州周邊海島遊線路   總有一款适合你!      惠州 喜洲島   喜洲島又叫許洲,當地人稱“南丫島”   小島就在壩光村對面的海中   是一個無人管理的荒島   這裡比三亞安靜、比洱海多情            喜洲島的沙灘有...
2025-07-08
管澤元奇葩說娃娃(小柒說熱搜租女友過年)
管澤元奇葩說娃娃(小柒說熱搜租女友過年)
  #小柒說熱搜#第二期開講!      馬上過年了,被催婚催的着急了,就想着租個女友、男友回家,可是這麼大的市場,就會催生很多套路,不小心,你就中招了。      比較常見的一招,就是給你一堆承諾,或者一堆原則性的話題,然後自證清白的告訴你:綠色出租,不要歪想。      可是,當你要看照片的時候,就套路來了,20元一次。你想一想,一天就照片也可以掙不少呀...
2025-07-08
民進會員享有什麼權利(民進會員在行動)
民進會員享有什麼權利(民進會員在行動)
  近日,上海本土新冠肺炎疫情反複,防控形勢嚴峻複雜。廣大民進會員積極貫徹落實疫情防控的部署要求,凝心聚力,勇擔責任,奔赴疫情防控各條戰線,為堅決打赢疫情防控阻擊戰,全力守護城市安全有序與市民群衆健康安全,展現民進擔當與作為。   民進金山區委   堅守崗位,守土有責      左圖:吳鳴;右圖:俞紅麗(左二)   亭林醫院閉環管理期間,民進金山區委副主委吳...
2025-07-08
Copyright 2023-2025 - www.tftnews.com All Rights Reserved