統一配置中心
為什么需要統一配置中心?
統一配置中心顧名思義,就是將配置統一管理,配置統一管理的好處是在日后大規模集群部署服務應用時相同的服務配置一致,日后再修改配置只需要統一修改全部同步,不需要一個一個服務手動維護
統一配置中心的架構圖:
服務者消費者集群,路由集群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。