問題描述
我們公司的專案是基于SpringCloud開發的微服務,用到了Spring-Cloud-Config作為微服務統一的配置中心,可以將散落在各個服務的配置進行統一配置管理,
雖然配置中心將各個應用的組態檔進行了統一管理, 但是涉及到的一些公共配置,比如資料庫連接,redis連接,ftp連接等,依然還散落在各個應用的組態檔中,并沒有抽取,我們需要根據環境的不同,而動態修改它們,非常難以維護,導致每次涉及修改這些公共配置,就非常老火,
所以想到了利用公共檔案方法,現在在這里簡單闡述一下如何配置,(下面例子Spring-Cloud-Config-Server都是使用本地配置方式),
經過網上查閱資料,大部分都是采用方法一進行配置的,那么我提供了一個方式二配置,也許會讓你眼前一亮,然后留下你的想法,如果是你去選擇,會選擇哪個方法呢?
方法一:
首先在配置中心的 config/ 目錄下創建一個公共組態檔common.yml, 然后在各個應用下的 bootstrap.yml 檔案中 spring.cloud.config.name 這里去配置多個組態檔名,
例如:
service-a 客戶端的 bootstap.yml:
spring:
cloud:
config:
name: service-a, common
service-b 客戶端的 bootstap.yml:
spring:
cloud:
config:
name: service-b, common
方法二:(比較推薦)
我們還記得springboot單體應用的時候, 是如何抽離公共配置呢?答案是用spring.profiles.include 進行參考其他公共組態檔,而且它的檔案命名有個特點,就是必須是application-開頭的組態檔,
我們也會去想,像spring-cloud-config這樣的配置集中化,這樣的配置會生效嗎?
例如:
首先,我們在 config/ 目錄下創建 application-common-dev.yml 組態檔
然后分別修改 service-a 和 service-b 在 config/ 目錄下的組態檔,配置如下:
service-a 客戶端的 service-a-dev.yml
spring:
application:
name: service-a
#公共組態檔
profiles:
include: common-dev
service-b 客戶端的 service-b-dev.yml
spring:
application:
name: service-b
#公共組態檔
profiles:
include: common-dev
分別啟動各自的服務,就可以看到服務啟動成功,
那么,這兩種方式那種更好一些呢,
方法一:
缺點:如果有新加的公共組態檔,需要去每個服務的bootstrap.yml都去修改一下,并且需要重新發布jar包,
方法二:
優點:配置可以外部化,而且修改組態檔,不需要單獨發布jar包,
關注 + 收藏, 分享更多的開發實戰經驗,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/215153.html
標籤:其他
上一篇:記一次Spring Boot 配置多ElasticSearch-sql 資料源,按照引數動態切換
下一篇:準備資料集用于flink學習
