Spring Cloud Config配置中心(內網實用版native)
Native本地配置檔案簡介
在接觸微服務的時候就瞭解到config可以配置整合svn、git、DB、快取資料庫等,同時也支援修改配置無需重新啟動等強大功能。
然則,我們的現實是我們是內網,給客戶部署的無需svn 、git等,同時熱載入配置檔案也可以暫時不採用(需要引入其他的元件,對於部署 也就增加的運維時間成本)
怎麼辦?
覺得應該還有其他的解決方案,搜了下相關資料瞭解到了一個native本地配置,config也是支援的。
採用它是可行的,開工。
主要解決的問題:
1.配置檔案 統一集中配置
2.每個模組的資料庫配置、快取配置 獨立出來
3.通用配置獨立出來
遇到的問題
客戶端無法載入多個配置檔案?(放了一段時間後,瀏覽其他部落格的時候 ,解決了)
總結:遇到的暫時解決不了的問題暫且放下,做個標記,之後的工作當中會很輕易的解決掉(把問題擱置),config功能很強大,我們只採用的部分功能,需要能幫助到您。
Config簡介
在分散式系統中,每一個功能模組都能拆分成一個獨立的服務,一次請求的完成,可能會呼叫很多個服務協調來完成,為了方便服務配置檔案統一管理,更易於部署、維護,所以就需要分散式配置中心元件了,在spring cloud中,有分散式配置中心元件spring cloud config,它支援配置檔案放在在配置服務的記憶體中,也支援放在遠端Git倉庫裡。引入spring cloud config後,我們的外部配置檔案就可以集中放置在一個git倉庫裡,再新建一個config server,用來管理所有的配置檔案,維護的時候需要更改配置時,只需要在本地更改後,推送到遠端倉庫,所有的服務例項都可以通過config server來獲取配置檔案,這時每個服務例項就相當於配置服務的客戶端config client,為了保證系統的穩定,配置服務端config server可以進行叢集部署,即使某一個例項,因為某種原因不能提供服務,也還有其他的例項保證服務的繼續進行
配置流程如下
1.服務端核心配置
引入相關jar後,配置檔案配置:
spring: cloud: config: server: native: search-locations: classpath:properties/,classpath:properties/provider-model/, #username: #password: #search-paths: test-CONFIG application: name: config-server profiles: active: native #eureka配置 eureka: client: serviceUrl: defaultZone: http://127.0.0.1:7001/eureka/ instance: prefer-ip-address: true instance-id: ${spring.cloud.client.ipAddress}:${server.port} server: port: 7006
目錄截圖:
需要注意的點:
1.search-locations的用法,指定搜尋的目錄,更加詳細的配置可研究下 2.properties目錄是新建立的,配置檔案都放在根目錄下載入順序會受到影響
config是註冊到eureka當中的,客戶端也需要從配置中心讀取相關服務
客戶端配置如下:採用的是服務的形式(核心配置如下)
spring:
application:
name: provider-order
cloud:
config:
discovery:
service-id: config-server
enabled: true
profile: dev
name: common,db-mysql,redis,provider-order
label: master
eureka:
client: #客戶端註冊進eureka服務列表內
service-url:
defaultZone: http://localhost:7001/eureka/
#defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
instance:
instance-id: ${spring.cloud.client.ipAddress}:${server.port}
prefer-ip-address: true #訪問路徑可以顯示IP地址
分析:
config: discovery: service-id: 指定從註冊中心讀取的服務ID(重點)
profile:指定要讀取的配置 如dev、test等
最核心的是name
name: common,db-mysql,redis,provider-order
通過此方式可以引入多個配置檔案。
結束語:微服務的應用越來越廣泛,願盡綿薄之力幫助大家快速瞭解微服務架構,感興趣的的可以關注今日頭條 @架構師速成記