tft每日頭條

 > 圖文

 > springcloud 配置詳解

springcloud 配置詳解

圖文 更新时间:2024-12-13 05:51:17

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配置中心,最後到各個不同的服務,因為所有的服務都依賴與這兩個服務,否則無法正常啟動。啟動日志看到拉取信息說明成功

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved