說說zookeeper做分布式協同的流程?

時間 2021-05-06 19:54:13

1樓:易哥

好,接下來開始了!

——————刻苦學習分割線————————

Zookeeper是乙個高效能的分布式一致系統,在分布式系統中有著廣泛的應用。基於它,可以實現分布式同步、配置管理、命名空間管理等眾多功能,是分布式系統中常見的基礎系統。

Zookeeper主要用來解決分布式集群中應用系統的一致性問題,它有著樹狀結構的節點,每個節點均可儲存少量的資料。同時,使用者可以修改和訂閱節點中的內容。分布式系統中的節點通過監控這些資料狀態的變化,從而可以達到基於資料的集群管理。

從設計模式角度來看,Zookeeper是基於觀察者模式實現的。可以把它作為乙個資訊的中心。使用該服務的生產者和消費者都以Zookeeper中的資料為基準。即:

生產者可以改變Zookeeper的節點,或者節點上的資料

消費者通過訂閱Zookeeper節點,從而能夠在節點變動時收到通知

基於這樣的機制,將Zookeeper作為資訊中心,便可以實現分布式系統中節點狀態的最終一致性。

Zookeeper具有以下特點:

最終一致性:客戶端不論連線到哪個Zookeeper的哪乙個節點,都會收到同乙份狀態。這是zookeeper最重要的效能。

可靠性:Zookeeper集群具有簡單、健壯、良好的效能,如果訊息m被到一台server接受,那麼它將被所有的server接受。

實時性:Zookeeper保證client將在乙個時間間隔範圍內獲得server的更新資訊,或者server失效的資訊。但由於網路延時等原因,Zookeeper不能保證兩個client能同時得到剛更新的資料,如果需要最新資料,應該在讀資料之前呼叫sync()介面。

等待無關(wait-free):慢的或者失效的client不得干預快速的client的請求,使得每個client都能有效的等待。

原子性:更新只能成功或者失敗,沒有中間狀態。

順序性:包括全域性有序和偏序兩種:全域性有序是指如果在一台server上訊息a在訊息b前發布,則在所有Server上訊息a都將在訊息b前被發布;偏序是指如果乙個訊息b在訊息a後被同乙個傳送者發布,a必將排在b前面。

資料發布與訂閱:應用配置集中到節點上,應用啟動時主動獲取,並在節點上註冊乙個watcher,每次配置更新都會通知到應用。

名空間服務:分布式命名服務,建立乙個節點後,節點的路徑就是全域性唯一的,可以作為全域性名稱使用。

分布式通知/協調:不同的系統都監聽同乙個節點,一旦有了更新,另乙個系統能夠收到通知。

分布式鎖:Zookeeper能保證資料的強一致性,使用者任何時候都可以相信集群中每個節點的資料都是相同的。乙個使用者建立乙個節點作為鎖,另乙個使用者檢測該節點,如果存在,代表別的使用者已經鎖住,如果不存在,則可以建立乙個節點,代表擁有乙個鎖。

配置管理:在分布式應用環境中很常見,例如同乙個應用系統需要多台節點執行,但是它們執行的應用系統的某些配置項是相同的,如果要修改這些相同的配置項,那麼就必須同時修改每台執行這個應用系統的 PC Server,這樣非常麻煩而且容易出錯。像這樣的配置資訊完全可以交給 Zookeeper 來管理,將配置資訊儲存在 Zookeeper 的某個目錄節點中,然後將所有需要修改的應用機器監控配置資訊的狀態,一旦配置資訊發生變化,每台應用機器就會收到 Zookeeper 的通知,然後從 Zookeeper 獲取新的配置資訊應用到系統中。

如圖:多個分布式點監聽同乙個zookeeper的乙個節點,當該節點發生變化時,所有的監聽者都能獲取到其最新值,於是實現了分布式協同

當某個分布式點做一件事時,先去zk某個固定位置判斷是否存在乙個特定節點,如果沒有,則建立該節點再去做,否則就不去做。通過這個邏輯便實現了分布式的鎖。就是誰建立了那個節點,誰就持有了鎖。

多個分布式點在進行任務時,去zk建立乙個節點,並且以節點編號作為任務編號。因為建立節點是原子的,並且是全域性一致的。以此,便實現了分布式的命名,即保證各個分布式點獲得的名字不同。

其他……

還有其他分布式協同的應用,就不一一展開了。因此,zk的應用非常自由,基於它可以完成很多分布式協同的工作。

——————學習完畢分割線————————

好了,收工!

—END—

分布式系統廣泛使用的zookeeper有哪些重要的概念呢?

一朵雲Q QuorumPeer 節點型別,分為 LeaderZookerServer FollowerZookeeperServer ObserverZookeeperServer leader節點對應Leader類物件,以及LearnerHandler接收處理訊息 follower節點對應Lear...

分布式資料庫的分布式事務?

NebulaGraph 業務系統往往是通過子系統組合的模式來完成,這些子系統很可能是不同的資料庫,甚至可能是 友商 的,互相直接無法保證事務,還是得業務自身保證。 codingfor 你說的單機事物,我的理解其實是指single threaded excution,而不是指在單台機器上做事物 暗含了...

關於分布式的問題?

簡單來說,分布式就是。分布在不同的計算機上進行資料處理的一種方式。簡稱 分布式 大資料系統是一種分布式系統。 ZeaTalk 抽象點來看,只要能把計算資源 儲存資源分攤到多個節點實現同一件事情,都可以稱之為分布式,所以你列舉的那些都算。另外,大資料和分布式的關係,分布式是實現大資料儲存和計算的手段,...