diamond架構圖:
圖1
圖2
對該圖進行一些說明:
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的架構非常簡單,使用的都是最常用的一些技術以及產品,它之所以表現得非常穩定,跟其架構簡單是分不開的,當然,穩定的另一個主要原因是它具備一套比較完善的容災機制,容災機制將在下一篇文章中講述。
以上內容摘抄自:
同類型的產品還包括:
對於一些分布式配置的選型介紹:
總結:
一、分布式配置中心的需求(功能)
1)配置的發布、訂閱,有發布的管理界面,訂閱可以考慮輪詢“拉取”,或設置watch更新。
2)配置的持久化處理。
3)分布式配置中心自身也是一個集群,具有容災的特點。
再參考disConf的一張圖