采用幫主-傳功長老-小弟的三層架構(gòu)。
1.幫派組織架構(gòu)
image.png
- 幫主:仍然是我們的Github服務(wù)器(后面會講到其他存放屬性文件的方式),存放所有的配置項信息
- 傳功長老:Config組件,從Github那里獲取資源文件,并保存一份放到本地。
- 小弟:眾多服務(wù)節(jié)點,從傳功長老那里獲取幫主的指令
2.Config Server的工作模式
Config Server主要有兩種工作模式:
效忠?guī)椭?/h5>
在這個模式下,Config Server只會從Github或者數(shù)據(jù)庫獲取配置信息
- Github方案:如果Github是公共倉庫,那就不需要配置用戶名和密碼。如果是私有倉庫,要把登錄用的用戶名和密碼寫到配置文件里面,當然密碼可以通過加密方式存儲,然后系統(tǒng)啟動的時候使用密鑰進行解密
- Database方案,需要額外指定spring.profiles.active=jdbc切換到db方案,并指定數(shù)據(jù)源
自立門戶
幫主?什么幫主?我就是幫主,Github被我一腳踢開,Config組件自己說了算,直接從本地路徑讀取資源文件
- 采用這種方式,需要指定spring.profiles.active=native開啟功能,然后指定本地文件存儲路徑
為了簡化配置,我們的課程采用第一種模式管理配置文件,也就是Github公共倉庫。在項目配置中非常簡單,只用指定Github地址就可以,例如:
spring.cloud.config.server.git.uri=https://github.com/xxxxx/config-repo.git
在企業(yè)應用中,有時也會有多個項目共同使用一個Github repo的情況,這時候就需要將不同項目的資源文件放到不同目錄下,使用如下配置,給你的服務(wù)指定一個獨立的目錄存放配置文件
spring.cloud.config.server.git.search-paths=/{appName}
直連式方案的利弊
- 優(yōu)點:從部署結(jié)構(gòu)上來講相當簡單,組件間依賴也少
- 缺點:可用性不能得到保障,假如Config節(jié)點宕機會產(chǎn)生較大影響。由于需要將在客戶端啟動的時候指定Config地址,即便這里使用DNS地址(比如域名等非IP形式),如果域名發(fā)生變化仍然需要在客戶端重新配置Config地址。