更新時間:2020年11月03日14時06分 來源:傳智播客 瀏覽次數(shù):
把復雜的東西簡單化,是不變的技術(shù)追求。在過去,很多大型系統(tǒng)依賴一個類似的系統(tǒng)來進行分布式協(xié)調(diào),一旦運行這個系統(tǒng)的服務器宕機,那么整個分布式系統(tǒng)將無法正常運行,為了解決這個問題,雅虎的開發(fā)人員就試圖開發(fā)一個通用的無單點問題的分布式協(xié)調(diào)框架,解決分布式集群中應用系統(tǒng)的一致性問題,例如如何避免同時操作同一數(shù)據(jù)造成臟讀的問題等。
Zookeeper對外提供一個類似于文件系統(tǒng)的層次化的數(shù)據(jù)存儲服務,為了保證整個Zookeeper集群的容錯性和高性能,每一個Zookeeper集群都是由多臺服務器節(jié)點(Server)組成,這些節(jié)點通過復制保證各個服務器節(jié)點之間的數(shù)據(jù)一致。只要當這些服務器節(jié)點過半數(shù)節(jié)點可用,那么整個Zookeeper集群就可用。下面我們來學習Zookeeper的集群架構(gòu),如圖1所示。
圖1 Zookeeper集群架構(gòu)圖
從圖1我們可以看出,Zookeeper集群是一個主從集群,它一般是由一個Leader(領(lǐng)導者)和多個Follower(跟隨者)組成。此外,針對訪問量比較大的Zookeeper集群,還可新增Observer(觀察者)。Zookeeper集群中的三種角色各司其職,共同完成分布式協(xié)調(diào)服務。下面我們針對Zookeeper集群中的三種角色進行簡單介紹。
1.Leader
它是Zookeeper集群工作的核心,也是事務性請求(寫操作)的唯一調(diào)度和處理者,它保證集群事務處理的順序性,同時負責進行投票的發(fā)起和決議,以及更新系統(tǒng)狀態(tài)。
2.Follower
它負責處理客戶端的非事務(讀操作)請求,如果接收到客戶端發(fā)來的事務性請求,則會轉(zhuǎn)發(fā)給Leader,讓Leader進行處理,同時還負責在Leader選舉過程中參與投票。
3.Observer
它負責觀察Zookeeper集群的最新狀態(tài)的變化,并且將這些狀態(tài)進行同步。對于非事務性請求可以進行獨立處理;對于事務性請求,則會轉(zhuǎn)發(fā)給Leader服務器進行處理。它不會參與任何形式的投票,只提供非事務性的服務,通常用于在不影響集群事務處理能力的前提下,提升集群的非事務處理能力(提高集群讀的能力,也降低了集群選主的復雜程度)。