天天看點

淘寶分布式配置管理服務Diamond

淘寶分布式配置管理服務Diamond

  diamond則是淘寶開源的一種分布式配置管理服務的實作。diamond本質上是一個java寫的web應用,其對外提供接口都是基于http協定的,在閱讀代碼時可以從實作各個接口的controller入手。

  分布式配置管理

  分布式配置管理的本質基本上就是一種推送-訂閱模式的運用。配置的應用方是訂閱者,配置管理服務則是推送方。概括為下圖:

淘寶分布式配置管理服務Diamond

  其中,用戶端包括管理人員publish資料到配置管理服務,可以了解為添加/更新資料;配置管理服務notify資料到訂閱者,可以了解為推送。

  配置管理服務往往會封裝一個用戶端庫,應用方則是基于該庫與配置管理服務進行互動。在實際實作時,用戶端庫可能是主動拉取(pull)資料,但對于應用方而言,一般是一種事件通知方式。

  diamond中的資料是簡單的key-value結構。應用方訂閱資料則是基于key來訂閱,未訂閱的資料當然不會被推送。資料從類型上又劃分為聚合和非聚合。因為資料推送者可能很多,在整個分布式環境中,可能有多個推送者在推送相同key的資料,這些資料如果是聚合的,那麼所有這些推送者推送的資料會被合并在一起;反之如果是非聚合的,則會出現覆寫。

  資料的來源可能是人工通過管理端錄入,也可能是其他服務通過配置管理服務的推送接口自動錄入。

  架構及實作

  diamond服務是一個叢集,是一個去除了單點的協作叢集。如圖:

淘寶分布式配置管理服務Diamond

<a href="http://www.51testing.com/batch.download.php?aid=49936" target="_blank"></a>

淘寶分布式配置管理服務Diamond

  每一個角色出問題時,都可以盡量保證用戶端對應用層提供服務。

最新内容請見作者的github頁:http://qaseven.github.io/

繼續閱讀