分佈式配置管理平臺 Disconf

https://github.com/knightliao/disconf

 

Distributed Configuration Management Platform(分佈式配置管理平臺)

專注於各種 分佈式系統配置管理 的通用組件/通用平臺, 提供統一的配置管理服務。

包括 百度滴滴打車銀聯網易拉勾網 等知名互聯網公司正在使用!

「disconf」在「2015 年度新增開源軟件排名 TOP 100(OSC開源中國提供)」中排名第16強。

主要目標:

  • 部署極其簡單:同一個上線包,無須改動配置,即可在 多個環境中(RD/QA/PRODUCTION) 上線
  • 部署動態化:更改配置,無需重新打包或重啓,即可 實時生效
  • 統一管理:提供web平臺,統一管理 多個環境(RD/QA/PRODUCTION)、多個產品 的所有配置
  • 支持微服務架構

demos

https://github.com/knightliao/disconf-demos-java

項目信息

  • CLIENT 端:
    • Java: 目前唯一支持語言
    • python:打算支持
    • PHP:暫未支持
  • WEB 管理端:
    • Java SpringMvc 實現,前後端分離 實現方式(基於Spring 4.1.7.RELEASE)

java client

disconf.git branches and Maven version:

Java Client Elegant Usage Preview

當前版本功能特點

  • 支持配置(配置項+配置文件)的分佈式化管理
  • 配置發佈統一化
  • 極簡的使用方式(註解式編程 或 XML無代碼侵入模式)
  • 低侵入性或無侵入性、強兼容性

未來版本(完全版)功能特點

Disconf的功能特點描述圖:

查看大圖

重要功能特點

  • 支持配置(配置項+配置文件)的分佈式化管理
  • 配置發佈統一化
    • 配置發佈、更新統一化:
      • 同一個上線包 無須改動配置 即可在 多個環境中(RD/QA/PRODUCTION) 上線
      • 配置存儲在雲端系統,用戶統一管理 多個環境(RD/QA/PRODUCTION)、多個平臺 的所有配置
    • 配置更新自動化:用戶在平臺更新配置,使用該配置的系統會自動發現該情況,並應用新配置。特殊地,如果用戶爲此配置定義了回調函數類,則此函數類會被自動調用。
  • 配置異構系統管理
    • 異構包部署統一化:這裏的異構系統是指一個系統部署多個實例時,由於配置不同,從而需要多個部署包(jar或war)的情況(下同)。使用Disconf後,異構系統的部署只需要一個部署包,不同實例的配置會自動分配。特別地,在業界大量使用部署虛擬化(如JPAAS系統,SAE,BAE)的情況下,同一個系統使用同一個部署包的情景會越來越多,Disconf可以很自然地與他天然契合。
    • 異構主備自動切換:如果一個異構系統存在主備機,主機發生掛機時,備機可以自動獲取主機配置從而變成主機。
    • 異構主備機Context共享工具:異構系統下,主備機切換時可能需要共享Context。可以使用Context共享工具來共享主備的Context。
  • 極簡的使用方式(註解式編程 或 XML無代碼侵入模式):我們追求的是極簡的、用戶編程體驗良好的編程方式。目前支持兩種開發模式:基於XML配置或者基於註解,即可完成複雜的配置分佈式化。

注:配置項是指某個類裏的某個Field字段。

其它功能特點

  • 低侵入性或無侵入性、強兼容性:
    • 低侵入性:通過極少的註解式代碼撰寫,即可實現分佈式配置。
    • 無侵入性:通過XML簡單配置,即可實現分佈式配置。
    • 強兼容性:爲程序添加了分佈式配置註解後,開啓Disconf則使用分佈式配置;若關閉Disconf則使用本地配置;若開啓Disconf後disconf-web不能正常Work,則Disconf使用本地配置。
  • 支持配置項多個項目共享,支持批量處理項目配置。
  • 配置監控:平臺提供自校驗功能(進一步提高穩定性),可以定時校驗應用系統的配置是否正確。

模塊架構圖

查看大圖

模塊信息

  • CLIENT: client目標是支持多語言。目前只提供了java語言客戶端。
    • JAVA
      • disconf-core: 分佈式配置基礎包模塊
      • disconf-client: 分佈式配置客戶端模塊, 依賴disconf-core包。 用戶程序使用它作爲Jar包進行分佈式配置編程。
      • disconf-tool: 分佈式配置工具包,依賴disconf-core包。 Disconf-tool是disconf的輔助工具類, 目前使用不多,建議不使用。
  • 管理端:disconf-web是統一的分佈式配置管理平臺。disconf-web: 分佈式配置平臺服務模塊, 依賴disconf-core包。採用SpringMvc+純HTML方式(前後端分離架構)實現。用戶使用它來進行日常的分佈式配置管理。

用戶指南

clint

java client: disconf-client 使用

在您的 Maven POM 文件里加入:

<dependency>
    <groupId>com.baidu.disconf</groupId>
    <artifactId>disconf-client</artifactId>
    <version>2.6.31</version>
</dependency>

server: disconf-web 使用

部署方法請參見:https://github.com/knightliao/disconf/tree/master/disconf-web

全新主頁,高清大圖:

APP+環境+版本+ZK查詢:

http://ww1.sinaimg.cn/mw1024/60c9620fgw1emyww39wjmj20qw0keq6m.jpg

java client Tutorials

總體概述

基於註解式的分佈式配置(支持配置文件和配置項)

推薦新建的項目使用disconf時使用

注:將配置文件移至一個專有類裏,而不是分散在項目的各個地方,整個代碼架構清晰易懂、易管理。 即便如果哪天不使用disconf,也只需要將註解去掉即可。

基於XML的分佈式配置(無代碼侵入)(僅支持配置文件)

推薦舊項目使用disconf時使用

demos

https://github.com/knightliao/disconf-demos-java

其它

詳細設計和討論

大家都在使用disconf

他人評價

快速遞技術總監:

http://ww1.sinaimg.cn/bmiddle/60c9620fjw1ergy58j978j20i302u0t2.jpg

潤生活總監:

http://ww4.sinaimg.cn/bmiddle/60c9620fjw1est6ptf2dlj20ab01udfy.jpg

人脈通後端RD:

http://ww4.sinaimg.cn/bmiddle/60c9620fjw1est6pzqo68j208k05tjrm.jpg

開源中國社區:

「disconf」在「2015 年度新增開源軟件排名 TOP 100(OSC開源中國提供)」中排名第16強。

羣·聯繫·討論

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章