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