SpringCloud Config 配置中心
好久沒寫了,首先依舊是相關資料以及注意事項:
- 工程GitHub
- Config遠端倉庫地址
- 需要配置Eureka註冊中心,方法見SpringBoot-Eureka的配置
- 環境:SpringBoot 2.0.4.RELEASE + SpringCloud Finchley.SR1
簡介:
分散式系統中,為了方便服務配置檔案統一管理,實時更新,所以需要分散式配置中心元件。在Spring Cloud中,有分散式配置中心元件springCloud Config ,它支援從遠端Git倉庫中讀取配置檔案並存放到本地Git倉庫。接下來我們來看一下服務端和客戶端分別應該如何配置。
服務端
一.Maven配置
在Maven中新增eureka-client
,spring-cloud-config-server
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
二.開啟配置
還是老套路,新增@EnableConfigServer
,@EnableDiscoveryClient
註解來分別開啟eureka客戶端以及配置中心的服務端。
@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
public class ConfigApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigApplication.class, args);
}
}
三.配置檔案
主要就是三個設定
- 設定服務的名稱
- 設定遠端倉庫的地址使用者名稱密碼
- 設定註冊中心地址
spring:
application:
name: config
cloud:
config:
server:
git:
uri: https://github.com/BzCoder/config-repo
username:
password:
eureka:
instance:
prefer-ip-address: true
client:
service-url:
defaultZone: http://localhost:8761/eureka
四.建立配置檔案並訪問
我們在遠端倉庫中建立了三個對應不同環境的配置檔案order-dev.yml
,order-test.yml
,order-prod.yml
,假如在不同環境下有很多共用的配置,我們可以再建立一個order.yml
用來存放共同配置,springcloud-config取配置時,會將你的對應環境配置與order.yml
合併後再返回。在遠端倉庫檔案配置完畢後,我們就可以直接訪問http://localhost:8080/order-dev.yml
來獲取配置資訊。當然我們可以更改檔案字尾名來修改配置檔案的展現方式,如.json,.properites。
配置檔案的路徑規則:
/{label}/{name}-{profiles}.{type}
- label 分支名稱 如:master dev ,不寫就是master。
- name 配置檔名稱
- profiles 環境名稱,不可省略,假如我們的倉庫中配置檔案命名沒有環境名稱,可以profile可以寫為-a
在啟動後我們可以看到日誌
Adding property source: file:/C:/Users/Administrator/AppData/Local/Temp/config-repo-9115656602637453229/order-dev.yml
這樣就把遠端倉庫的配置檔案儲存在本地路徑Git了。假如需要設定儲存到指定路徑的話,可以在配置檔案中加入basedir。
server:
git:
uri: https://github.com/BzCoder/config-repo
username:
password:
basedir: D:/Config/basedir
至此服務端就配置完畢了,當然如果你需要保持他高可用性,可以配置ConfigSever叢集,只需要配置到不同地址即可。
客戶端
一.Maven配置
在Maven中新增eureka-client
,config-server
<dependencies>
<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-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
二.開啟服務發現
@EnableDiscoveryClient
@SpringBootApplication
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
}
三.配置檔案
在配置檔案上就比較講究了,我們需要建立一個bootstrap.yml.bootstrap的意思是載入程式,我們需要將Eureka的配置資訊寫到bootstrap中。這裡也提一下配置載入的順序是:
- bootstrap 2.遠端config的配置 3.application
bootstrap.yml檔案
spring:
application:
name: client
cloud:
config:
discovery:
enabled: true
service-id: CONFIG
profile: dev
eureka:
instance:
prefer-ip-address: true
client:
service-url:
defaultZone: http://localhost:8762/eureka/
配置檔案中name對應配置檔案的名稱,profile對應環境,service-id對應我們配置中心的服務名稱。
四.測試
最後我們寫一個測試介面,檢視是否能正確的讀取配置中心的資料:
@RestController
public class ConfigController {
@Value("${env}")
private String env;
@GetMapping("/env")
public String getEnv()
{
return env;
}
到此對於SpringCloud Config的初步學習就到這裡了
相關文章
- SpringCloud Netflix (六):Config 配置中心SpringGCCloud
- SpringCloud-分散式配置中心(config)SpringGCCloud分散式
- SpringCloud-Config 分散式配置中心SpringGCCloud分散式
- springcloud之config配置中心-Finchley.SR2版SpringGCCloud
- 微服務SpringCloud之Spring Cloud Config配置中心Git微服務SpringGCCloudGit
- SpringCloud config native 配置SpringGCCloud
- Config 配置中心
- 跟我學SpringCloud | 第六篇:Spring Cloud Config Github配置中心SpringGCCloudGithub
- Spring Cloud Config 配置中心SpringCloud
- SpringCloud Nacos 配置中心SpringGCCloud
- Springcloud alibaba nacos配置中心SpringGCCloud
- Spring Cloud Config 實現配置中心SpringCloud
- .Net Core&Agile Config配置中心
- springcloud-註冊中心和配置中心SpringGCCloud
- 業餘草 SpringCloud教程 | 第六篇: 分散式配置中心(Spring Cloud Config)(Finchley版本)SpringGCCloud分散式
- 《springcloud 三》分散式配置中心SpringGCCloud分散式
- springcloud alibaba-nacos配置中心SpringGCCloud
- 分散式配置中心spingcloud-config-server分散式GCCloudServer
- SpringCloud(四) configSpringGCCloud
- SpringCloud(六)--ConfigSpringGCCloud
- SpringCloud-ConfigSpringGCCloud
- SpringCloud分散式微服務雲架構 第六篇: 分散式配置中心(Spring Cloud Config)SpringGCCloud分散式微服務架構
- 使用配置中心config client,不拉取配置問題client
- SpringCloud之分散式配置中心(六)SpringGCCloud分散式
- Spring Cloud Config 分散式配置中心【Finchley 版】SpringCloud分散式
- SpringCloud分散式微服務雲架構 第七篇: 高可用的分散式配置中心(Config)SpringGCCloud分散式微服務架構
- 業餘草 SpringCloud教程 | 第七篇: 高可用的分散式配置中心(Spring Cloud Config)(Finchley版本)SpringGCCloud分散式
- SpringCloud Alibaba實戰(10:分散式配置中心)SpringGCCloud分散式
- java B2B2C Springcloud電子商務平臺原始碼-eureka叢集整合config配置中心JavaSpringGCCloud原始碼
- Dubbo與SpringCloud Alibaba使用Nacos作為配置中心和註冊中心SpringGCCloud
- Spring Cloud(八)高可用的分散式配置中心 Spring Cloud ConfigSpringCloud分散式
- Spring Cloud實戰系列(六) - 分散式配置中心Spring Cloud ConfigSpringCloud分散式
- springcloud-config-client的那些坑SpringGCCloudclient
- SpringCloud+Nacos實現服務配置中心(Hoxton版本)SpringGCCloud
- 非spring boot (即spring) 使用/整合 Spring cloud Config 分散式配置中心Spring BootCloud分散式
- SpringCloud微服務系列- 分散式能力建設之配置中心SpringGCCloud微服務分散式
- SpringCloud教程第6篇:config(F版本)SpringGCCloud
- springcloud - alibaba - 3 - 整合config - 更新完畢SpringGCCloud