回憶一下,在前面的文章中,咱們使用了spring cloud eureka/ribbon/feign/hystrix/zuul搭建了一個完整的微服務系統,無論是隊內仍是對外都已經比較完善了,那咱們的系統是否還有值得繼續優化的地方呢?答案確定是有的,那就是分佈式配置中心config.那什麼是分佈式配置中心,咱們爲何又須要分佈式配置中心呢?git
所謂配置中心,就是將配置的數據放在某種存儲介質中,該介質能夠是文件/數據庫/中間件等等,像業界經常使用的zookeeper/Apollo/阿里開源的Nacos等等,阿里內部使用的config server/diamond/switch等等都是分佈式配置中心.而在spring cloud中的分佈式配置中心就是config.github
一個完整的微服務系統,在實際的生產環境中會有許多的服務,每一個服務都有本身的配置文件,這些服務在本身的測試環境上管理本身的配置文件還好,但全部服務一旦到了生產環境,配置文件太多,對配置文件的管理就成了一個必不可少的工做,所以,咱們須要分佈式配置中心來幫助咱們進行配置文件的管理.spring
spring cloud和eureka相似,也分爲服務端和客戶端,服務的主要是對配置文件進行管理,而客戶端拉取服務端的配置文件,另外,咱們以前說配置中心依賴於某種存儲介質,springcloud官方文檔中是使用git,所以咱們還須要依賴git,首先咱們在git建立一個專門存放配置文件的倉庫: 數據庫
能夠看到,咱們使用的是yml,而在以前的文章中,咱們一直使用的是properties配置文件,springboot中這二者均可以,spring官方更推薦使用yml,所以咱們使用config的時候,會所有替換爲yml文件.
新增一個spring cloud config的服務端module: bootstrap
老規矩,先加入父項目:
而後配置maven依賴:
咱們的config-server也須要進行安全驗證,所以也使用了security,接下來配置文件:
其中最重要的就是配置了git的地址,告訴config-server,從哪裏去讀取配置文件.而後啓動類新增支持config-server的註解:
而後啓動config-server: segmentfault
能夠看到,咱們成功訪問到了git上的配置文件,另外地址欄中的URL遵循以下規則:
其中,application指的是配置文件的文件名,profile是配置文件的激活的版本,label是git的分支版本,默認爲master. 安全
接下來,咱們改造eureka-server,從git上讀取配置文件.首先須要上傳相應的配置文件:
能夠看到test和product的主要區別是端口號和應用名以及驗證信息不一樣,稍後咱們會驗證一下,接下來,咱們複製一份[dhp-micro-eureka-server]到新的module[dhp-micro-eureka-server-config],用於從git讀取並加載配置:
能夠看出,咱們刪除了以前的配置文件,轉而使用了bootstrap.yml文件,有的同窗會問,bootstrap.yml是什麼文件?這是springboot的約定,咱們說springboot是約定大於配置,springboot約定系統級相關的配置放到bootstrap.yml中,而application.yml進行應用級的配置,咱們來看看bootstrap.yml的內容: springboot
主要就是設置配置文件的獲取地址,以及獲取的文件名以及profile/label(分支名)/帳號密碼等信息,配置後啓動能夠看到: app
能夠看到,控制檯打印的第一句就是告訴咱們從localhost:7101獲取配置,啓動成功後啓動producer服務看一下: maven
能夠看到,咱們的producer服務已經註冊到eureka-server了,說明咱們的config已經生效了,同理咱們也能夠替換consumer/user/producer服務的配置文件爲git配置文件,這裏咱們就不一一演示了,感興趣的童鞋們能夠本身去操做試一下.另外,因爲改造後的全部服務都是從config-server獲取配置文件,假如config-server掛了,那整個微服務就沒法啓動了,所以config-server也須要考慮高可用,所以咱們能夠把config-server註冊到eureka-server中,保證config-server的高可用,注意,這裏的eureka-server和producer等業務微服務註冊的eureka-server是不一樣的,這個eureka-server僅僅只註冊config-server一個,這就能保證config-server的高可用了.
自此,咱們的分佈式配置中心config已經成功了,思考一下,目前的config-server是否有什麼問題?這就是咱們下一篇文章的內容,下一篇文章,咱們會介紹spring cloud最後一塊拼圖,spring cloud消息總線,敬請期待!
本文由博客一文多發平臺 OpenWrite 發佈!