springcloud-spring cloud config統一配置中心
統一配置中心
為什麼需要統一配置中心?
統一配置中心顧名思義,就是將配置統一管理,配置統一管理的好處是在日後大規模叢集部署服務應用時相同的服務配置一致,日後再修改配置只需要統一修改全部同步,不需要一個一個服務手動維護
統一配置中心的架構圖:
服務者消費者叢集,路由叢集Zuul的配置檔案可以全部交由config管理,Eureka Server配置是絕對不行的,因為Config配置中心也是作為一個Client服務註冊到Eureka Server的,先有Server。
1.配置中心伺服器的開發
1.新增依賴
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>
2.添加註解支援@EnableConfigServer
@EnableEurekaClient
@EnableConfigServer
@SpringBootApplication
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
3.在遠端的倉庫建立配置檔案(yml,properties,yaml)
在這裡我對兩個服務者的配置檔案進行管理
規則說明:加入你在github倉庫添加了一個名為product.properties的配置檔案,並且開啟了配置中心伺服器(假設埠為9999),使用瀏覽器測試訪問:http://localhost:8766/product.properties 是訪問不到任何內容的,訪問http://localhost:8766/product-xxxxx.properties(xxx隨便寫)是可以訪問到的,這是Config配置中心的規則,下面會說到,另一方面配置檔案合併規則,在學習springboot時我們可以將配置檔案拆分:主配置檔案 application.yml存放公共配置 測試環境:testapp.yml 生產環境:product.yml 使用時根據情況主配置引入不同的副配置檔案,這裡Config配置中心規則與springboot是相似的。
如下倉庫檔案:
[product.properties]
eureka.client.service-url.defaultZone=http://peer:8761/eureka,http://peer1:8765/eureka
spring.application.name=eureka-provider
[product-8763.properties]
server.port=8763
[product-8764.properties]
server.port=8764
訪問: http://localhost:9999/product-xxxxx.properties 得到公共配置檔案
訪問: http://localhost:9999/product-8763.properties 公共配置與8763私有配置的合併
訪問: http://localhost:9999/product-8764.properties 公共配置與8764私有配置的合併
.properties字尾是可以修改為yml,yaml,json 以對應的格式返回在瀏覽器上。
4.配置相關的配置檔案
#註冊到註冊中心
eureka.client.service-url.defaultZone=http://localhost:8761/eureka
#預設埠號 8888
server.port=9999
# 例項名
spring.application.name=config
#配置git的遠端倉庫 https 暫時不支援ssh
spring.cloud.config.server.git.uri=https:xxxxxxx
5.啟動配置中心服務
http://localhost:9999/order-a.yml
http://localhost:9999/order-a.yaml
http://localhost:9999/order-a.properties
http://localhost:9999/order-a.json
以上四種訪問方式都可以
{name}/{profiles:.[^-].}
{name}-{profiles}.json
{label}/{name}-{profiles}.yml
{name}/{profiles}/{label:.*}
{label}/{name}-{profiles}.properties
{label}/{name}-{profiles}.json
{name}/{profile}/{label}/**
{name}/{profile}/{label}/**
說明:
label: 分支名稱 預設是master分支
name:檔案的服務的名稱(自定義的名稱)
profiles:不同環境
2.配置中心客戶端使用
凡是交由配置中心管理的Client,想要獲取配置檔案需要新增以下依賴
1.匯入相關依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
2.新增配置
#開啟配置中心
spring.cloud.config.enabled=true
#找到配置中心例項
spring.cloud.config.discovery.service-id=CONFIG
#指定名字
spring.cloud.config.name=product
#指定環境 8763或8764 由客戶端的不同而改變
spring.cloud.config.profile=8763
#指定分支
spring.cloud.config.label=master
#指定配置中心的uri
spring.cloud.config.uri=http://localhost:9999
注意:spring.cloud.config.uri=xxx必須指定Config配置中心的地址,如果不指定預設則從8888埠fetch配置是不成功的,除非你的配置中心埠就是8888。