摘要:臨時節(jié)點臨時節(jié)點的生命周期和會話保持一致。授權對象授權對象指的是權限賦予的用戶或一個指定實體。參與選舉的投票。狀態(tài)變更如果是服務器運行期間進行選舉,需要對非服務器進行狀態(tài)變更為。接收投票接收來自其它服務器的投票判斷投票的有效性。
一.ZooKeeper是什么?
ZooKeeper是一個分布式協(xié)調服務,目標是將復雜容易出錯的分布式一致性服務包裝起來,提供API接口給用戶使用。
ZooKeeper可以實現(xiàn)數(shù)據(jù)發(fā)布/訂閱,負載均衡,分布式鎖,分布式隊列,命名服務,集群管理,Master管理,分布式協(xié)調/通知。
二.ZooKeeper的Zab(Zookeeper Automic Broadcast)協(xié)議。
包含兩種模式:
1.崩潰恢復
2.消息廣播
三.ZooKeeper的特性
1.數(shù)據(jù)節(jié)點--ZNode
ZNode是ZooKeeper的最小數(shù)據(jù)單元,每個ZNode都可以存儲數(shù)據(jù),同時還能掛載子節(jié)點,因此構成了一個層次化的命名空間,稱為樹。
ZNode三種類型:持久節(jié)點,臨時節(jié)點,順序節(jié)點。可以生成以下四種類型的節(jié)點:
持久節(jié)點:持久節(jié)點創(chuàng)建后就一直存在于ZooKeeper服務器上,直到有刪除操作主動清除這個節(jié)點。
持久順序節(jié)點:持久順序節(jié)點的特性和持久節(jié)點基本一致,額外的特性表現(xiàn)在順序性上。在ZooKeeper中,每個父節(jié)點都會為它的第一個子節(jié)點維護一份順序,用于記錄下每個子節(jié)點創(chuàng)建的先后順序。
臨時節(jié)點:臨時節(jié)點的生命周期和會話保持一致。如果會話失效,臨時節(jié)點也就失效。不能在臨時節(jié)點上創(chuàng)建子節(jié)點。
臨時順序節(jié)點:在臨時節(jié)點上添加了順序性。
2.Watcher通知機制
客戶端線程向服務器注冊一個Watcher,同時將這個Watcher存儲在客戶端的WatchManager中,服務器會觸發(fā)Watcher事件向客戶端發(fā)送通知,客戶端會從WatchManager中找到對應的Watcher執(zhí)行邏輯回調。
3.ACL(Access Control List)
ZooKeeper的權限控制。包含三部分的內容:
(1)權限模式
IP:IP模式通過IP地址粒度進行權限控制。
Digest: 以類似“username:password”的形式的權限標識進行權限設置。
World:所有用戶都可以在不進行任何權限校驗的情況下操作ZooKeeper上的數(shù)據(jù)。
Super: 超級用戶。
(2)授權對象:ID
授權對象指的是權限賦予的用戶或一個指定實體。
(3)權限
指通過權限校驗可以被允許執(zhí)行的操作,包括create,delete,read,write,admin。
4.服務器角色
(1)Leader:整個ZooKeeper集群工作機制中的核心,主要任務:
事務請求的唯一調度和處理者,保證集群事務處理的順序性。
集群內部各服務器的調度者。
(2)Follower:ZooKeeper集群狀態(tài)的跟隨者,主要任務:
處理客戶端非事務的請求,轉發(fā)事務請求給Leader服務器。
參與事務的Proposal的投票。
參與Leader選舉的投票。
(3)Observer:觀察者
能處理非事務請求,將事務請求轉發(fā)給Leader服務器,但是不進行事務Proposal的投票和Leader選舉的投票。通常用于在不影響集群事務處理能力的前提下提升集群的非事務處理能力。
5.leader選舉
進行l(wèi)eader可以是服務器啟動的時候或是服務器運行的時候。
(1)狀態(tài)變更:如果是服務器運行期間進行l(wèi)eader選舉,需要對非Observer服務器進行狀態(tài)變更為Looking。
(2)進行投票:每臺服務器都會選舉自己作為leader,投票的內容包括服務器的myid(ZooKeeper集群搭建的時候每個服務器的編號)和ZXID(ZooKeeper為每一個事務請求分配的唯一一個全局事務ID)。
(3)接收投票:接收來自其它服務器的投票,判斷投票的有效性。
(4)處理投票:需要將其他服務器的投票與自己的投票比較,比較規(guī)則如下:
先比較ZXID,ZXID比較大的服務器會優(yōu)先作為Leader。
ZXID相同的話,就比較myid,myid比較大的服務器作為Leader服務器。
(5)統(tǒng)計投票:每次投票后,服務器都會統(tǒng)計所有投票,判斷是否有過半的機器接收到相同的投票信息。
(6)改變服務器狀態(tài):如果是follower,就變更為Following,如果是leader,就變更為leading。
6.ZooKeeper的序列化協(xié)議:Jute
7.數(shù)據(jù)存儲
分為兩部分:內存數(shù)據(jù)存儲和磁盤數(shù)據(jù)存儲。
參考資料:
《從Paxos到ZooKeeper分布式一致性原理與實踐》
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/71565.html
摘要:協(xié)議是為分布式協(xié)調服務專門設計的一種支持崩潰恢復的一致性協(xié)議,這個機制保證了各個之間的同步。選主是協(xié)議中最為重要和復雜的過程。以實際效果而言,分區(qū)相當于對通信的時限要求。參考官方文檔阿里巴巴為什么不用做服務發(fā)現(xiàn)定理的含義阮一峰 前言 同學們,在上一章中,我們主要講了Zookeeper兩種啟動模式以及具體如何搭建。本章內容主要講的是集群相關的原理內容,第一章可以當做是Zookeeper原...
摘要:本章內容主要講的是集群搭建相關的知識。在集群模式下,最少需要三個節(jié)點。并且官方推薦你使用奇數(shù)數(shù)量的節(jié)點來組成集群。這個值必須是集群中唯一的。在確認每臺服務器上的和文件修改創(chuàng)建之后,在三個節(jié)點上分別執(zhí)行命令,啟動。 前言 同道們,好久不見,上一章中,我主要講了Zookeeper的一些基礎的知識點。數(shù)據(jù)模型 + 原語集 + Watches機制。本章內容主要講的是集群搭建相關的知識。 本篇的...
摘要:具有不可分割性即原語的執(zhí)行必須是連續(xù)的,在執(zhí)行過程中不允許被中斷。提供服務主要就是通過數(shù)據(jù)結構原語集機制達到的。子節(jié)點的版本號數(shù)據(jù)節(jié)點版本號版本號創(chuàng)建該節(jié)點的會話的。后位則為遞增序列。 前言 最近加入了部門的技術興趣小組,被分配了Zookeeper的研究任務。在研究過程當中,發(fā)現(xiàn)Zookeeper由于其開源的特性和其卓越的性能特點,在業(yè)界使用廣泛,有很多的應用場景,而這些不同的應用場景...
摘要:可靠性一旦數(shù)據(jù)更新成功,將一直保持,直到新的更新。這是一種主動的分布式數(shù)據(jù)結構,能夠在外部情況發(fā)生變化時候主動修改數(shù)據(jù)項狀態(tài)的數(shù)據(jù)機構。如果監(jiān)視節(jié)點狀態(tài)發(fā)生變化,則跳轉到第步,繼續(xù)進行后續(xù)的操作,直到退出鎖競爭。 題外話:從字面上來看,ZooKeeper表示動物園管理員,而Hadoop生態(tài)系統(tǒng)中,許多項目的Logo都采用了動物,比如Hadoop采用了大象的形象,所以可以ZooKeepe...
閱讀 1105·2022-06-21 15:13
閱讀 1923·2021-10-20 13:48
閱讀 1098·2021-09-22 15:47
閱讀 1425·2019-08-30 15:55
閱讀 3186·2019-08-30 15:53
閱讀 578·2019-08-29 12:33
閱讀 777·2019-08-28 18:15
閱讀 3538·2019-08-26 13:58