文章目錄
1.簡介
在分佈式系統中,由於服務數量巨多,爲了方便服務配置文件統一管理,實時更新,所以需要分佈式配置中心組件。在 Spring Cloud中,有分佈式配置中心組件 spring cloudconfig,它支持配置服務放在配置服務的內存中(即本地),也支持放在遠程Git倉庫中。
在 spring cloud config組件中,分兩個角色,一是 config server,二是 configclient。Config Server.是一個可橫向擴展、集中式的配置服務器,它用於集中管理應用程序各個環境下的配置,默認使用Git存儲配置文件內容,也可以使用SVN存儲,或者是本地文件存儲。
2.解決的問題
由於分佈式項目服務衆多,配置文件衆多,要是配置文件修改後還要再次跟新部署到線上,Spring Cloud Config將配置文件統一放到git或svn遠端倉庫,只要修改遠端倉庫庫中的配置文件,對應服務就可以讀取到便跟後的配置文件,避免的需要手動跟新服務器上的配置文件,簡化運維負擔。
運行的服務讀取配置文件流程:
3.快速使用
3.1配置服務器端來獲取遠端倉庫的配置文件
本次倉庫地址使用的爲碼雲。
(1)登陸碼雲創建倉庫上傳配置文件
配置文件命名規則:(必須以-連接)
{application}-{profile}.yml或{application}-{profile}.properties
application爲應用名稱,profile爲開發環境(用於區分測試環境、生產環境等)。
(2)新建讀取配置文件的微服務模塊,添加pom的依賴
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>
(3)編寫配置文件
server:
port: 9996
spring:
application:
name: diplomaproject-config
cloud:
config:
server:
git:
uri: https://gitee.com/xbf392/diplomaproject.git
username: ******
password: ****** #改成自己的密碼
basedir: F:\data\diplomaproject-config #從遠端Git緩存下來的配置文件下載地址
(4)編寫啓動類
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
@EnableConfigServer
public class ConfigApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigApplication.class);
}
}
(5)運行項目查看
3.2配置微服務成爲客戶端讀取服務端獲得的配置文件
(1)導入pom依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
(2)新建bootstrap.yml配置文件
bootstrap.yml的優先級比application.yml的優先級要高,application.yml可以刪除了,讓這個服務使用遠端倉庫的配置文件。
spring:
cloud:
config:
name: dipuser
profile: dev
label: master
uri: http://localhost:9996 #爲配置的server服務的地址
這幾個參數的獲取應與遠端倉庫的文件一致。
(3)啓動eureka 、configserver、和測試的微服務
此時已經刪除了application.yml,讀取的配置文件是遠端gitee倉庫中的配置文件。