首页
/
每日頭條
/
圖文
/
springcloud 配置詳解
springcloud 配置詳解
更新时间:2025-04-18 21:46:02

springcloud 配置詳解?在使用springcloud做項目,我們會把原有的各個模塊需要拆分成多個服務,服務數據數量多,且很多的配置内容重複,且維護的代價太高比如修改數據庫的ip,修改了某個中間件的ip,這就需要修改每個涉及到這個配置的服務,可想而知需要做多少的重複工作,而且手動修改還十分容易出錯 使用配置中心就可以讓維護人員隻修改一個地方(一般是使用git),并主動通知對應的服務,取更新拉取最新的配置,下面我們就來聊聊關于springcloud 配置詳解?接下來我們就一起去了解一下吧!

springcloud 配置詳解(springcloud之config配置中心搭建)1

springcloud 配置詳解

在使用springcloud做項目,我們會把原有的各個模塊需要拆分成多個服務,服務數據數量多,且很多的配置内容重複,且維護的代價太高。比如修改數據庫的ip,修改了某個中間件的ip,這就需要修改每個涉及到這個配置的服務,可想而知需要做多少的重複工作,而且手動修改還十分容易出錯。 使用配置中心就可以讓維護人員隻修改一個地方(一般是使用git),并主動通知對應的服務,取更新拉取最新的配置。

1.配置中心架構圖2.流程說明

各個服務的配置信息,統一集中在git倉庫進行管理,并創建一個config-server服務作為"中間人",來處理服務和git之間的關系,消息總線用在動态更新時使用,這裡使用rabbitmq。 1.當服務啟動時候,會取config-server獲取服務所需的配置信息 2.config-server會主動取git倉庫拉取最新的配置,并緩存在本地倉庫中 3.服務得到最新配置後,也會将配置加載到本地進行緩存,并加載初始化工作,最後啟動服務

3.消息總線

隻要服務沒有進行重啟,服務會運行期間都是回去的本地配置緩存,若此時修改了git倉庫中的配置信息,如何及時通知到對應的服務并更新服務配置呢?這時候消息總線就起到了作用。 配置中心提供了一些動态刷新配置的接口,當我們修改了git配置,調用對應的接口,即可刷新對應服務的配置信息,當然前提是各服務,config-server連接的是同一個rabbitmq地址,因為消息的通知是通過mq隊列處理的。

4.配置中心搭建

1.創建項目子模塊config-server,添加依賴

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency>

啟動類添加注釋 @EnableEurekaClient @EnableConfigServer 主要是配置注冊中心eureka客戶端,配置中心config-server服務端,還有rabbitmq消息總線

2.配置文件 <1>創建bootstrap.yml文件

server: port: 8762 spring: application: name: config-server profiles: active: @spring.active@ cloud: bus: enabled: true trace: enabled: true config: name: spring-admin,rabbitmq server: git: uri: git地址 # 配置git倉庫的地址 username: 賬号 # git倉庫的賬号 password: 密碼 # git倉庫的密碼 searchPaths: /*,/*/*,/*/*/* clone-on-start: true force-pull: true repos: xxx: pattern: xxx* uri: git地址 searchPaths: /*,/*/*,/*/*/* clone-on-start: true force-pull: true management: endpoints: web: base-path: / exposure: include: "*" endpoint: health: show-details: ALWAYS

這裡配置了兩個倉庫地址,供兩個項目一起使用,如果隻要一個項目,删除内層repos節點即可

簡單說明下幾個節點的含義:

spring.cloud.config.name:表示需要拉取配置文件的前綴,下面會講到規則 searchPaths:表示需要在git倉庫掃描的路徑 force-pull:表示強制拉取,可以防止本地文件修改導緻更新失敗

<2>添加application文件

這裡配置了不同環境的配置文件,每個都是配置了rabbitmq的信息,主要是為了消息總線使用

spring: rabbitmq: host: 127.0.0.1 port: 5672 username: xxxx password: xxxx

5.客戶端搭建

1.添加依賴

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

2.客戶端服務新建配置文件bootstrap.yml

server: port: 8060 spring: application: name: xxx #服務名稱 profiles: active: @spring.active@ cloud: bus: enabled: true trace: enabled: true config: fail-fast: true name: xx1,xx2,xx3 enabled: true #開啟配置 profile: @spring.active@ #版本 label: master #git配置的分支信息,master類似的 discovery: enabled: true service-id: config-server

當然也需要在application.yml文件中配置mq信息和其他自己所需的信息 簡單說明下幾個節點的含義:

label:拉取git那個分支信息 service-id:配置中心服務名,通過注冊中心來管理調用信息

6.加載規則說明

git配置文件存在形式,根目錄為不同的類型的目錄,例如rabbitmq,mysql等,以下為rabbitmq目錄下的文件列表

各個微服務加載git上的配置文件,默認加載的文件名規則為:應用名稱-環境變量.yml # {spring.application.name}- s p r i n g . a p p l i c a t i o n . n a m e − {spring.cloud.config.profile}-${spring.cloud.config.label} 當然我們也可以自定義應用名稱前綴,name包含多個值,用逗号分隔

若profile的值為dev,則加載的配置文件為feign-hystrix-dev.yml,db-dev.yml等 配置客戶端每次在啟動的時候,會加載服務端的配置文件。

7.動态刷新配置

問題1:修改git配置文件,不重啟任何應用的情況下,重新加配置文件? 使用postman工具,發送post請求,請求地址為: 1.重新加載所有應用配置信息:http://{config-server-ip}:8762/bus-refresh {config-server-ip}表示服務配置端ip 如果存在多個配置服務端,該刷新方式也會同時刷新其他配置服務端 2.重新加載單個應用的配置信息:http://{config-server-ip}:8762/bus-refresh/{destination} {destination}表示某個客戶端應用名稱 例如common-invoice-service

問題2:查看此時配置服務端的所加載到的配置文件 Url訪問地址: http://config-server的IP地址:8762/{label}/{filename} {label}表示git分支,例如master {filename}表示文件名稱,例如feign-hystrix-dev.yml

8.啟動順序

首先啟動eureka注冊中心,其次啟動config-server配置中心,最後到各個不同的服務,因為所有的服務都依賴與這兩個服務,否則無法正常啟動。啟動日志看到拉取信息說明成功

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
推荐阅读
吳曉波直播戰報
吳曉波直播戰報
“一切都越來越好了。”作為一家人工智能産品研發公司聯合創始人的陳先生終于長舒了一口氣。早在一個月前,陳先生還處于一個每天都焦慮得無法入眠的階段。身為一家高科技公司,陳先生深知,即便他的公司發展潛力巨大,但是短期内公司收入遠遠達不到上市的要求...
2025-04-18
光遇霞谷先祖抱手站姿位置
光遇霞谷先祖抱手站姿位置
光遇5.10每日任務中其中一個任務需要找到倒立先祖,很多玩家不知道具體位置,小編帶來光遇霞谷倒立先祖位置攻略2022,一起來看看吧。光遇霞谷倒立先祖位置攻略20221、打開霞谷滑冰場的光門來到霞光城,看向左側發現有一片較矮建築,飛向其中的亭...
2025-04-18
大霧天氣高速收費站關閉
大霧天氣高速收費站關閉
大霧天氣高速收費站關閉?今日,來自重慶高速12122的消息,4月5日7時00分,目前大霧管制的有:,現在小編就來說說關于大霧天氣高速收費站關閉?下面内容希望能幫助到你,我們來一起看看吧!大霧天氣高速收費站關閉今日,來自重慶高速12122的消...
2025-04-18
世界著名建築攝影大師
世界著名建築攝影大師
建築,一直以來都是攝影愛好者比較青睐的拍攝對象之一。但是,想要拍出讓人驚豔的建築攝影作品,并不是一件容易的事情,這需要拍攝者具備獨特的想法和善于發現美的眼睛。來自法國的攝影師蒂鮑德·普裡埃(ThibaudPoirier)就非常擅長捕捉城市建...
2025-04-18
一周營養米糊早餐食譜大全
一周營養米糊早餐食譜大全
俗話說早吃好,午吃飽、晚吃少,早餐是我們一天當中的第一頓飯,所以吃好早餐是非常有必要的,如何在匆忙的工作日既方便做,又能保證營養平衡的早餐?白露之後,秋意漸濃,皮膚易幹燥,人們對于飲食方面也格外的注意,要常補水滋潤防秋燥。和牛奶豆漿相比,早...
2025-04-18
Copyright 2023-2025 - www.tftnews.com All Rights Reserved