一、選中Zookeeper
最近準備閱讀一兩個框架的源碼,剛好準備學習關於分佈式的知識,就選中了Zookeeper。關於選擇這個框架有幾個原因。
1.可以實現集羣。
2.服務註冊與發現一直是分佈式必須要研究與使用的。
3.可以實現分佈式鎖
4.等等,各種原因,讓我選擇了它。沒辦法,只能從官網開始慢慢探索源碼之路。
二、學習方式
爲了更好的開展後面的路子,準備先前做好準備,怎麼學習非常重要。
1.Zookeeper組件總覽。熟悉哪個組件是幹什麼的,整體框架由哪些構成。
2.下載源代碼,客服端
3.運行客服端,體驗一下。
4.編譯源代碼,能夠打包等。
5.對其中一個組件挨個進行調試,代碼分析。
6.分析完一個組件,進行總結,分析爲什麼要這樣設計。我這裏爲什麼不是看完一個類就進行總結,而是看完一個組件後再來分析,原因在與,好的框架,都是高內聚,低耦合。高可用,擴展性強。這些在一個類中並不能體現出來,所以需要看完一個組件或者模塊才能看出這些優點。
三、源碼總覽
在這一章節,先整體來看下源碼的結構。至於下載源碼和客服端,留到下一章內容。
1.Zookeeper是什麼。
The motivation behind ZooKeeper is to relieve distributed applications the responsibility of implementing coordination services from scratch.
這是官網的一句原話:ZooKeeper背後的動機是減輕分佈式應用程序從頭開始實施協調服務的責任。
2.全局設計
Zookeeper重視高性能,高可用,以及嚴格有序的訪問。
可靠性意味這不會造成單點故障,在集羣中,只要大多數服務器可用,則服務可用。
嚴格排序,則是我們客服端實現分佈式鎖的一個重要特性
Zookeeper的數據保存在內存中,這意味着高吞吐量和低延遲。
下面是Zookeeper的一張集羣圖
Zookeeper數據格式類似於linux系統