[分布式]zookeeper系列-為什么需要zookeeper

zookeeper是一個(gè)很強(qiáng)大的分布式協(xié)調(diào)框架,這點(diǎn)經(jīng)過(guò)很多成熟框架的使用都可以佐證zk的重要性,但是在學(xué)習(xí)zk之前還是要高明白,為什么我們需要zk。

之前我也有整理過(guò)分布式架構(gòu)的演化方案,我們計(jì)算機(jī)應(yīng)用,隨著訪問的流量越來(lái)越大,單機(jī)的算力不能滿足,那么我們就需要單機(jī)變?yōu)榧?,這里邊又分為了應(yīng)用集群,數(shù)據(jù)庫(kù)集群,各種中間件的集群等等。

然而一旦單機(jī)演化為集群,雖然解決了單機(jī)的算力問題,但是諸多的機(jī)器就需要配合工作,比如數(shù)據(jù)庫(kù)集群,主從模式,主寫從讀,我們可以把這個(gè)主從的關(guān)系寫死在配置里,如果集群機(jī)器一直運(yùn)轉(zhuǎn)良好,那么萬(wàn)事大吉。不過(guò)一旦出現(xiàn)了一臺(tái)機(jī)器故障,比如主節(jié)點(diǎn)故障,那么誰(shuí)來(lái)?yè)?dān)任寫數(shù)據(jù)庫(kù)的角色呢?如果不寫死在服務(wù)器的配置里,那么這個(gè)關(guān)系我們又該怎么維護(hù)呢?

再比如一個(gè)redis集群,仍然是有主從模式,一旦master節(jié)點(diǎn)掛掉了,我們?cè)趺粗匦赂?jìng)選master呢?

好,到這里我們似乎也可以不使用分布式協(xié)調(diào)服務(wù),最笨的辦法,我們可以把規(guī)則持久化到某個(gè)數(shù)據(jù)庫(kù)表里,序號(hào)最小的可用機(jī)器就是master,每次請(qǐng)求過(guò)來(lái),每臺(tái)服務(wù)器都判斷一下自己是不是master節(jié)點(diǎn),然后執(zhí)行任務(wù)就好了。

聽起來(lái)就很不靠譜吧,如果數(shù)據(jù)庫(kù)掛掉了怎么辦?如果master剛把寫數(shù)據(jù)庫(kù)的事務(wù)接受,但是還沒處理,就掛掉了,怎么辦?如果一個(gè)從數(shù)據(jù)庫(kù),剛判斷自己可以當(dāng)master了,然后又掛掉了,怎么辦?

還有很多種情況,比如

  • 分布式服務(wù)的調(diào)用順序問題,我們期待的調(diào)用關(guān)系是先調(diào)用A,在調(diào)用B,可是實(shí)際情況A的調(diào)用延時(shí)了,結(jié)果B的調(diào)用在A之前發(fā)生,這怎么解決呢?

  • 調(diào)用一個(gè)服務(wù),但是返回了超時(shí),那么我們真實(shí)的請(qǐng)求是調(diào)用成功了?還是失敗了?除了重新調(diào)用以外,我們我發(fā)感知,這怎么辦?

  • 分布式數(shù)據(jù)一致性問題,我們觸發(fā)了一個(gè)寫操作,希望這時(shí)候所有來(lái)讀這條變更數(shù)據(jù)的請(qǐng)求都能讀到最新的數(shù)據(jù),可是我們沒辦法保證請(qǐng)求的發(fā)起者調(diào)用集群的那一臺(tái)機(jī)器,怎么保證數(shù)據(jù)的一致性同步呢?

所以歸根結(jié)底,這就是系統(tǒng)調(diào)用三種狀態(tài)導(dǎo)致的結(jié)果

  • 成功
  • 失敗
  • 超時(shí)

在不同的場(chǎng)景下,這些不同的狀態(tài)在復(fù)雜業(yè)務(wù)場(chǎng)景下的多重組和就會(huì)導(dǎo)致千差萬(wàn)別的結(jié)果。日益龐大的服務(wù)器,亟需一個(gè)優(yōu)異的管理者來(lái)進(jìn)行管理。

所以,分布式協(xié)調(diào)的框架就是為了解決分布式系統(tǒng)的種種故障應(yīng)急以及各個(gè)服務(wù)器之間的狀態(tài)同步等邏輯處理而存在的。在諸多的分布式框架之中,zookeeper又是表現(xiàn)極為良好的一種。

說(shuō)到這里,再聊聊zookeeper這個(gè)名字,動(dòng)物園管理者。

其實(shí)最開始我接觸zookeeper還是從hadoop開始的,hadoop是一頭大象,hive是蜜蜂,這些不同的動(dòng)物的混亂景象都由這個(gè)強(qiáng)悍執(zhí)行力的zookeeper來(lái)保持他們的穩(wěn)定協(xié)作。

再回到這個(gè)分布式協(xié)調(diào)框架含義的本身,似乎也是要在不同習(xí)性,不同表征的各個(gè)集群中,充當(dāng)好一個(gè)動(dòng)物園管理者的角色,那么這些,也都是zk存在的意義了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容