摘要:配置中心法目前大多數分布式配置中心都是基于來實現的,有自己的配置中心組件,它們都支持在線動態更新和刷新配置。
一個系統中包含有各種各樣的配置信息,如一個日志文件需要配置以下幾個信息。
日志文件生成主目錄
日志文件名稱,不同的日志級別對應不同的文件
當前日志級別
還有其他各種業務參數、系統參數等,大多單一系統是直接把這些配置寫死在配置文件中,當部署到測試、生產環境就再修改下配置文件,這樣很容易出錯,也不能靈活修改。還有就是系統變成分布式系統后,子系統越來越多,你要維護這些配置就變得越來越困難。
我覺得至少要能解決以下幾個問題才能算優秀!
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 種配置方法,很顯然,配置中心是最佳的解決方案,也解決了以上的幾個問題,但需要依賴中間件及其高可用性,如果你有其他更好的方式,歡迎留言。
更多干貨推薦
1.史上最強 Java 中高級面試題整理
2.史上最強 Spring Boot & Cloud 教程整理
3.史上最強架構設計分布式技術干貨整理
本文原創首發于微信公眾號:Java技術棧(id:javastack),關注公眾號在后臺回復 "分布式" 可獲取更多,轉載請原樣保留本信息。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71788.html
摘要:時間年月日星期六說明本文部分內容均來自慕課網。這個時候,可以啟動多臺積分系統,來同時消費這個消息中間件里面的登錄消息,達到橫向擴展的作用。 時間:2017年07月22日星期六說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:無學習源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 課程安排 Java...
摘要:是的默認負載均衡策略。一致性哈希負載均衡。所以負載均衡是分布式系統架構設計中必須考慮的因素之一。考慮主要是如何讓下游接收到的請求是均勻分布的第層客戶端層反向代理層的負載均衡。通過輪詢第層反向代理層層的負載均衡。 一、 什么是負載均衡? 什么是負載均衡? 記得第一次接觸 Nginx 是在實驗室,那時候在服務器部署網站需要用 Nginx 。Nginx 是一個服務組件,用來反向代理、負載平衡...
摘要:授權框架使第三方應用程序來獲取對服務的有限訪問機會。無論是通過編排資源所有者和服務之間的交互批準的資源所有者,或通過允許第三方應用程序來獲取自己的訪問權限。 SpringCloud打造微服務平臺--概覽 簡述 SpringCloud是什么 Spring Boot和SpringCloud是什么關系 Spring Boot是Spring的一套快速WEB開發的腳手架,可建立獨立的Sprin...
摘要:本文是網易容器云平臺的微服務化實踐系列文章的第一篇。網易容器云平臺的前身是網易應用自動部署平臺,它能夠利用云提供的基礎設施,實現包括構建和部署一體化在內的整個應用生命周期管理。目前網易云容器服務團隊以的方式管理著微服務,每周構建部署次數。 此文已由作者馮常健授權網易云社區發布。 歡迎訪問網易云社區,了解更多網易技術產品運營經驗。 摘要:網易云容器平臺期望能給實施了微服務架構的團隊提供完...
摘要:追蹤正在進行的計算的狀態。為了知道作業的進度,通過監聽端口來接受二進制文件發來的信息。子系統監聽的子系統包括多種預編譯二進制文件。這些二進制文件被分配給對應的在應用層定義好的計算模版。 KernelHive: a new workflow-based framework for multilevel high performance computing using clusters a...
閱讀 704·2021-11-22 13:54
閱讀 3065·2021-09-26 10:16
閱讀 3490·2021-09-08 09:35
閱讀 1576·2019-08-30 15:55
閱讀 3429·2019-08-30 15:54
閱讀 2075·2019-08-30 10:57
閱讀 497·2019-08-29 16:25
閱讀 877·2019-08-29 16:15