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接

Advertisements

2、註解式編程,需要Spring編程環境

3、支持配置的上傳、下載

4、支持分散式環境下的主備競爭


優點

簡單、可靠、易用

(運維成本低)

基於分散式的Zookeeper來實時推送穩定性、實效性、易用性上均優於diamond

非常簡單、

無侵入的方式、

擴展方便

缺點

1、無訪問修改許可權控制2、對於未來可能要做的基於SOA架構的服務註冊發現,功能上有所欠缺

源碼較多,閱讀和使用起來相對較複雜

功能少一些,無容災

使用案例

淘寶內部絕大多數系統的配置,由diamond來進行統一管理。

包括 百度、滴滴出行、銀聯、網易、拉勾網、蘇寧易購、順豐科技 等知名互聯網公司正在使用!

自定義公司內部。

Disconf 架構流程

三、一個自定義的分佈示配置實現?

編輯:mySql 客戶端進行編輯

裝載:基於JDBC Spring Config初始化的時候 直接裝載

獲取:基於Spring @Value註解獲取

propertitesSources ===>mySql 讀取配置

實現類

ContextNamespaceHandler:

PropertyPlaceholderBeanDefinitionParser:

PropertySourcesPlaceholderConfigurer: >V3.1

PropertyPlaceholderConfigurer:

Advertisements

你可能會喜歡