Git版本控制+配置中心(Spring Cloud Config)(八)


1.1     配置中心Config

1.1.1      為什么需要使用配置中心來統一管理配置呢?

通常在一個分布式環境中,同類型的、不同類型的服務有幾個,幾十個服務實例。如果出現數據源、接口等變更時,程序員通過手工修改配置就可以了。但對於分布式環境中多達上千、上萬的服務實例來說,單單修改配置這項目工作就會耗費程序員很多時間和精力。所以為了更好的解決分布式環境下多台服務實例的配置統一管理問題,引入了統一配置管理的方式來解決這類難題。

1.1.2      介紹

開發分布式系統如果還是各個服務配置文件單獨配置肯定是不行的,springcloud使用的解決方案是搭建配置中心將並指定一個配置文件路徑如git項目對配置文件進行統一管理。

Spring Cloud中,提供了分布式配置中心組件spring cloud config ,它支持配置服務放在配置服務的內存中(即本地),也支持放在遠程Git倉庫中。在實現cloud config中,主要有兩個角色:作為配置中心連接配置路徑的 config server,連接配置中心讀取配置的config client

 

1.2         配置中心服務端

1.2.1      創建Spring Starter Project工程

復制eureka-server工程並修改pom文件或者新建子模塊

1.2.2      pom.xml


1.2.3      application.properties

spring.application.name=config-server
server.port=8097
eureka.client.serviceUrl.defaultZone=http://localhost:6001/eureka

# 配置git倉庫地址
spring.cloud.config.server.git.uri=https://github.com/nutony/myspringcloudconfig
# 配置倉庫的分支
spring.cloud.config.label=master
# 訪問git倉庫的用戶名
spring.cloud.config.server.git.username=wood
# 訪問git倉庫的用戶密碼 如果Git倉庫為公開倉庫,可以不填寫用戶名和密碼,如果是私有倉庫需要填寫
spring.cloud.config.server.git.password=wood123

# 打印日志(開發模式)
logging.level.root=DEBUG

1.2.4      拓展:從git上獲取資源的格式

/{application}/{profile}[/{label}]

/{application}-{profile}.yml

/{label}/{application}-{profile}.yml

/{application}-{profile}.properties

/{label}/{application}-{profile}.properties

application: 表示應用名稱,在client中通過spring.config.name配置

profile:     表示獲取指定環境下配置,例如開發環境、測試環境、生產環境 默認值default,實際開發中可以是 devtestdemoproduction

label:           git標簽,默認值master

訪問鏈接:

http://localhost:8097/jtver/dev

http://localhost:8097/foo/default

http://localhost:8097/foo/development

1.2.5      Git上傳屬性文件

創建倉庫myspringcloudconfig,上傳屬性文件config-client-dev.properties編寫內容為:jtver=jt version 4.1

 

1.2.6      ConfigServerApplication

@EnableConfigServer


1.2.7      測試

http://localhost:8097/config-client/dev

 

1.3         配置中心客戶端

1.3.1      創建Maven工程

 

1.3.2      pom.xml

注意:必須加spring-boot-starter-actuator依賴,否則post請求是報404錯誤。


1.3.3      拓展:bootstrapapplication加載順序

Spring Boot有兩種類型的配置文件,applicationbootstrap文件。Spring Boot會自動加載classpath目前下的這兩個文件,文件格式為properties或者yml格式。

*.properties格式             key=value的形式

*.yml格式                      key: value的形式,支持樹形或者鏈式結構

*.yml加載的屬性是有順序的

application配置文件是應用級別的,是當前應用的配置文件。

bootstrap配置文件是系統級別的,用來加載外部配置,如配置中心的配置信息,也可以用來定義系統不會變化的屬性。

bootstatp文件的加載先於application文件。

1.3.4      bootstrap.properties

注意:說明:此處不能用application.properties,因為代碼中使用@Value注解,必須在應用程序執行之前初始化。

spring.application.name=config-client

spring.cloud.config.label=master

spring.cloud.config.profile=dev

1.3.5      HelloController

    @Value("${jtver}")

    String jtver;


1.4         動態刷新配置

1.4.1      解決方案

Controller類上增加@RefreshScope注解,在bootstrap.properties文件中配置management.security.enabled=false,提交post刷新請求,http://localhost:8098/refresh 就會更新屬性值(底層實現要求必須是post請求)。


1.4.3      bootstrap.properties

注意:說明:此處不能用application.properties,因為代碼中使用@Value注解,必須在應用程序執行之前初始化。

spring.application.name=config-client
server.port=8098
eureka.client.serviceUrl.defaultZone=http://localhost:6001/eureka

spring.cloud.config.label=master
spring.cloud.config.profile=dev

#配置中心服務端地址
spring.cloud.config.uri= http://localhost:8097/

#要刷新配置信息必須停掉安全訪問,並且controller上增加@RefreshScope注解
management.security.enabled=false

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM