Disconf實踐指南 改造篇

2021-08-29 02:25:29 字數 1573 閱讀 5472

改造包括:

統一配置到disconf

自定義配置解析實現

公共配置 #實現ing

env=dev

.name=springboot-learning-example

spring.mvc

.view

.prefix=/web-inf/jsp/

spring.mvc

.view

.suffix=.jsp

server.port=9999

logging.path=/users/chubin/logs

如果還有其他環境的配置資訊,都可以遷移到disconf,區別在於選擇的環境不一樣。這樣我們就將本地的應用配置遷移到了disconf。

2、自定義配置解析

在分布式系統中,為了實現**不同的邏輯分支,比如灰度可以需要灰度發布的城市,沒有開啟灰度的城市走老邏輯,開啟灰度的城市走新邏輯。這種情況下就需要使用分布式配置動態修改了。

之前的redis.properties已經實現了動態更新和實時生效,但是缺點是需要本地實現更新服務介面並且新增redis.properties的key作為更新服務的屬性,那麼可不可以只實現更新介面卻不需要新增配置的key作為屬性呢?當然是可以的。通過實現idisconfupdatepipeline介面自定義配置的解析方式。

該介面需要實現reloaddisconffile方法,入參是key和filepath,key表示配置檔案的名稱,如果應用有多個配置檔案,那麼修改其中乙個檔案的配置時,其他配置也會reload到本地,所以需要對關心的配置檔案執行reload自定**析。

一種思路是在reloadablepropertiesfactorybean中將配置設定到spring的environment環境變數中,然後配置更新的時候直接從環境變數直接獲取就可以了。修改原始碼如下:

configurableenvironment env = (configurableenvironment) environment;

env.getpropertysources().addfirst(

new propertiespropertysource("springboot-demo", properties));

log.debug("inject properties to env:{}", properties);

所以reloaddisconffile方法可以如下實現:

map cachemap = new hashmap<>();

propertysource> propertysource = env.getpropertysources().get("springboot-demo");

if (propertysource instanceof propertiespropertysource)

}

這樣就將disconf的配置封裝成了乙個map,要獲取某個值直接去get就可以獲取到了,相比之前的一坨配置是不是簡化了很多。

至此,終於可以愉快的使用disconf了。

Disconf實踐指南 使用篇

dependency 是否使用遠端配置檔案 true 預設 會從遠端獲取配置 false則直接獲取本地配置 disconf.enable remote conf true 配置伺服器的 host,用逗號分隔 127.0.0.1 8000,127.0.0.1 8000 disconf.conf ser...

實踐篇丨 QingScan 使用指南

qingscan是乙個安全工具整合系統,解決你平時使用各種工具乙個個開啟填寫掃瞄目標的繁瑣過程。qingscan工具只需要你把url給它,它會呼叫市面上各種掃瞄工具,對url掃瞄,最後把結果匯聚展示。關於qingscan功能大體分為四個方向 資訊收集 黑盒掃瞄 白盒審計 poc利用,共計整合了28款...

LINQ TO SQLite實踐指南

前言 當前,軟體應用程式中,資料庫已經成為不可缺少的重要組成部分.然而傳統資料庫正趨向巨無霸化,對系統的要求一步步提高,管理成本也越來越大,對於中小型專案的應用,它的很多功能變得越來越多餘,但是我卻不得不為這些不需要的功能付出更多的資金和人力成本.在這些場景,嵌入式資料庫的輕量,零部署,跨平台,義移...