分散式系統中處理引數配置的4種方案
一個系統中包含有各種各樣的配置資訊,如一個日誌檔案需要配置以下幾個資訊。
日誌檔案生成主目錄
日誌檔名稱,不同的日誌級別對應不同的檔案
當前日誌級別
還有其他各種業務引數、系統引數等,大多單一系統是直接把這些配置寫死在配置檔案中,當部署到測試、生產環境就再修改下配置檔案,這樣很容易出錯,也不能靈活修改。還有就是系統變成分散式系統後,子系統越來越多,你要維護這些配置就變得越來越困難。
我覺得至少要能解決以下幾個問題才能算優秀!
1)能線上靈活修改配置
2)能線上動態重新整理配置
3)能根據不同環境配置
4)能統一管理維護配置
那麼如何靈活維護這些配置呢?我給大家總結了一下幾類方法,根據不同的應用場大家參考一下。
1、資料庫法
把所有引數儲存到資料庫,系統啟動的時候載入到記憶體。
這種實現方式比較簡單,但需要佔用資料庫資源,系統簡單壓力較小時可以選用此種方式。
2、打包處理法
利用 Maven 的 maven-resources-plugin 外掛,然後根據不同的環境(Profile)提供不同環境的配置檔案,這樣,不同環境的配置資訊在打包階段就決定好了。
這樣只能解決了不同作業系統上面的配置,不能靈活動態修改,每次更新只能重新打包或者線上修改配置檔案,而且資訊也難於同步,如果專案少還好,專案多起來,配置還要經常變動,這樣變得異常煩瑣。
3、環境變數法
可以把屬性值設定到環境變數中,然後讀取後設定到 Java 系統屬性中。這種可以實現區分不同環境的目的,但仍然不能動態更新配置,而且配置和維護環境變數相當麻煩,並且在分散式系統中更是個十分頭疼的問題。
// 讀取環境變數
java.lang.System#getenv(java.lang.String)
// 設定系統屬性
java.lang.System#setProperty
這種方法,一些全域性的系統配置,如日誌、快取、臨時目錄等可以參考,主流日誌系統都支援從 system properties 中讀取配置。其他一些配置,不建議儲存在環境變數中。
4、配置中心法
1)目前大多數分散式配置中心都是基於 Zookeeper 來實現的,Spring Cloud 有自己的配置中心元件,它們都支援線上動態更新和重新整理配置。
2)直接把配置存放在資料庫,如果系統併發小的或者管理類系統的話可以參考,對於高併發應用不建議用資料庫做配置中心,畢竟它會帶來訪問壓力,而且實現動態更新配置也比較複雜。
總結
這是我們目前應用的 4 種配置方法,很顯然,配置中心是最佳的解決方案,也解決了以上的幾個問題,但需要依賴中介軟體及其高可用性,如果你有其他更好的方式,歡迎留言。
歡迎工作一到五年的Java工程師朋友們加入Java填坑之路:860113481
群內提供免費的Java架構學習資料(裡面有高可用、高併發、高效能及分散式、Jvm效能調優、Spring原始碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用”沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!
相關文章
- 分散式系統中處理引數配置的 4 種方案分散式
- 分散式事務處理方案,微服事務處理方案分散式
- JavaScript 中的引數處理JavaScript
- 分散式系統2:分散式系統中的時鐘分散式
- Hadoop大資料分散式處理系統簡介Hadoop大資料分散式
- 分散式系統的 CAP 理論分散式
- Jmeter分散式壓測實戰及踩坑處理(含引數化)JMeter分散式
- 分散式系統中的資料儲存方案實踐分散式
- .NET開源的處理分散式事務的解決方案分散式
- SpringBoot開發案例構建分散式日誌處理系統Spring Boot分散式
- 分散式系統中資料儲存方案實踐分散式
- 分散式系統:CAP 理論的前世今生分散式
- MyBatis 引數處理MyBatis
- 分散式系統中ID的需求分散式
- 分散式系統理論進階7:Paxos變種和優化分散式優化
- 分散式系統設計中的併發訪問解決方案分散式
- JavaScript為事件處理函式傳遞引數JavaScript事件函式
- 微服務分散式事務4種解決方案實戰微服務分散式
- 分散式監控系統ganglia的詳細配置分散式
- 分散式系統的經典基礎理論分散式
- 分散式 - 分散式系統的特點分散式
- 分散式系統中的分散式鏈路追蹤與分散式呼叫鏈路分散式
- Laravel 分散式事務處理Laravel分散式
- 一種在【微服務體系】下的【引數配置神器】微服務
- 19種分散式系統設計模式 - Nishant分散式設計模式
- 一種分散式預寫日誌系統分散式
- 基於任務排程的企業級分散式批處理方案分散式
- ORACLE分散式事務鎖各種場景下的處理詳解Oracle分散式
- 搞懂分散式技術16:淺談分散式鎖的幾種方案分散式
- 分散式系統理論基礎2 :CAP分散式
- 分散式系統之CAP理論雜記分散式
- 讀構建可擴充套件分散式系統:方法與實踐14流處理系統套件分散式
- mybatis基礎03(介面中的多個引數處理)MyBatis
- Redis實現分散式鎖的幾種方案Redis分散式
- 詳解 Redis 分散式鎖的 5 種方案Redis分散式
- 分散式系統理論基礎8:zookeeper分散式協調服務分散式
- 關於高併發和分散式中的冪等處理分散式
- 分散式系統中的事務問題分散式