Spring Config實現分佈示配置
Spring Config實現分佈示配置
作者:魯班大師
真名:曾廣煒
簡介:多年的互聯網技術開發和管理經驗,曾任雲猴網架構師,參與多個大型互聯網平台的搭建,擅長API介面設計。目前正在研究通過工具解決團隊編碼效率的問題。
今晚課題:Java程序員開發效率工具IntelliJ IDEA使用
一、分佈示配置產生的背景
分佈示系統帶來的配置問題?
1.業務平台眾多,配置管理混亂,升級部署時間較長。
2.配置缺少規範整理,隨意添加。
3.開發、測試、壓測環境眾多,配置混亂。
概念說明:
分佈示配置正是為解決因為系統節點、業務平台、業務模塊的膨脹而帶來的配置管理問題,從而減輕開發運維成本。
其適應於大型的分佈示系統(小型分佈示系統就算了,配置中心本會帶來複雜性)而服務。
Advertisements
一個完整的配置系統需要解決已下問題?
1.可視化系統配置管理。
2.配置中心高可用(比任何一個系統都要保證可高用)
3.配置環境切換
4.低侵入或無侵入性。
二、如何實現分佈示式配置?
實現模塊劃分:
可選的分佈示配置解決方案
Diamond | disconf | 自定義實現 | |
存儲方式 | Mysql | mysql | mySql |
推拉模型 | 每隔15s拉一次 | 基於zookeper實時推送 | 拉取 |
容災(高可用) | 多級容災模式,配置數據會dump在本地,避免中心服務掛機時無法使用 | 多級容災模式,優先讀取本地配置文件 | |
配置模型 | 只支持K V形式 | File | KEY Value |
功能特性 | 需要地址伺服器,客戶端連接到地址伺服器,取回diamond伺服器的地址列表 | 1、對配置進行持久化管理並對外提供restful接 Advertisements2、註解式編程,需要Spring編程環境 3、支持配置的上傳、下載 4、支持分散式環境下的主備競爭 | |
優點 | 簡單、可靠、易用 (運維成本低) | 基於分散式的Zookeeper來實時推送穩定性、實效性、易用性上均優於diamond | 非常簡單、 無侵入的方式、 擴展方便 |
缺點 | 1、無訪問修改許可權控制2、對於未來可能要做的基於SOA架構的服務註冊發現,功能上有所欠缺 | 源碼較多,閱讀和使用起來相對較複雜 | 功能少一些,無容災 |
使用案例 | 淘寶內部絕大多數系統的配置,由diamond來進行統一管理。 | 包括 百度、滴滴出行、銀聯、網易、拉勾網、蘇寧易購、順豐科技 等知名互聯網公司正在使用! | 自定義公司內部。 |
Disconf 架構流程
三、一個自定義的分佈示配置實現?
編輯:mySql 客戶端進行編輯
裝載:基於JDBC Spring Config初始化的時候 直接裝載
獲取:基於Spring @Value註解獲取
propertitesSources ===>mySql 讀取配置
實現類
ContextNamespaceHandler:
PropertyPlaceholderBeanDefinitionParser:
PropertySourcesPlaceholderConfigurer: >V3.1
PropertyPlaceholderConfigurer: