diamond專題(三)—— diamond架構

原文地址:http://rdc.taobao.com/team/jm/archives/1606

大家好,這次爲大家帶來的是diamond的架構,架構如下圖所示:

對該圖進行一些說明:

1、作爲一個配置中心,diamond的功能分爲發佈和訂閱兩部分。因爲diamond存放的是持久數據,這些數據的變化頻率不會很高,甚至很低,所以發佈採用手工的形式,通過diamond後臺管理界面發佈;訂閱是diamond的核心功能,訂閱通過diamond-client的API進行。

2、diamond服務端採用mysql加本地文件的形式存放配置數據。發佈數據時,數據先寫到mysql,再寫到本地文件;訂閱數據時,直接獲取本地文件,不查詢數據庫,這樣可以最大程度減少對數據庫的壓力。

3、diamond服務端是一個集羣,集羣中的每臺機器連接同一個mysql,集羣之間的數據同步通過兩種方式進行,一是每臺server定時去mysql dump數據到本地文件,二是某一臺server接收發布數據請求,在更新完mysql和本機的本地文件後,發送一個HTTP請求(通知)到集羣中的其他幾臺server,其他server收到通知,去mysql中將剛剛更新的數據dump到本地文件。

4、每一臺server前端都有一個nginx,用來做流量控制。

5、圖中沒有將地址服務器畫出,地址服務器是一臺有域名的機器,上面運行有一個HTTP server,其中有一個靜態文件,存放着diamond服務器的地址列表。客戶端啓動時,根據自身的域名綁定,連接到地址服務器,取回diamond服務器的地址列表,從中隨機選擇一臺diamond服務器進行連接。

可以看到,整個diamond的架構非常簡單,使用的都是最常用的一些技術以及產品,它之所以表現得非常穩定,跟其架構簡單是分不開的,當然,穩定的另一個主要原因是它具備一套比較完善的容災機制,容災機制將在下一篇文章中講述。

發佈了18 篇原創文章 · 獲贊 7 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章