zookeeper

1煤率、zab協(xié)議
分布式一致性協(xié)議包括proxy,但是 ZooKeeper并沒有完全采用Paxos算法漏策,而是使用了一種稱為ZooKeeper Atomic Broadcast(ZAB,zookeeper原子消息廣播協(xié)議)的協(xié)議作為其數(shù)據(jù)一致性的核心算法宅粥。

ZAB協(xié)議是為分布式協(xié)調(diào)服務(wù)ZooKeeper專門設(shè)計的一種支持漰潰恢復(fù)的原子廣播協(xié)議闽寡。
所有事務(wù)請求必須由一個全局唯一的服務(wù)器來協(xié)調(diào)處理帮碰,這樣的服務(wù)器稱為Leader服務(wù)器相味,而余下的其他服務(wù)器則成為Follower服務(wù)器。Leader服務(wù)器負(fù)責(zé)將一個客戶端事務(wù)請求轉(zhuǎn)換成一個事務(wù)Proposal(提議)殉挽,并將該Proposal分發(fā)給集群中所有的Follower服務(wù)器丰涉。之后Leader服務(wù)器需要等待所有Follower服務(wù)器的反饋,一旦超過半數(shù)的Follower服務(wù)器進(jìn)行了正確反饋后斯碌,那么Leader就會再次向所有的Follower服務(wù)器分發(fā)Commit消息昔搂,要求其將前一個Proposal進(jìn)行提交。

1输拇、簡述ZAB協(xié)議

zab協(xié)議是一種支持崩潰恢復(fù)的原子廣播協(xié)議,他能夠保證集群中各個副本數(shù)據(jù)的一致贤斜,支持全局唯一的變更序列策吠,支持崩潰恢復(fù)。

2瘩绒、zab如何做個各個副本數(shù)據(jù)的一致猴抹?

在zab中只有l(wèi)eader可以處理事務(wù)請求,把數(shù)據(jù)變更的操作以事務(wù)proposal的形式廣播給集群中所有的節(jié)點锁荔,然后等待反饋蟀给,如果超過半數(shù)節(jié)點都通過,再次發(fā)送commit請求完成數(shù)據(jù)變更阳堕。

3跋理、zab如何保證數(shù)據(jù)變更的全局順序?

通過zxid來保證恬总,zxid是一個64位的數(shù)字前普,前32位是一個epoch編號,每次領(lǐng)導(dǎo)選舉之后就會加1壹堰,后32位是一個自增的序列拭卿,每個事務(wù)請求自動加1骡湖,并且leader會為所有的follwer維護(hù)一個發(fā)送隊列,將發(fā)送的proposal按照先后順序存入隊列中依次發(fā)送峻厚。

4响蕴、zab如何支持崩潰恢復(fù)?

集群中所有的服務(wù)器都以長連接的形式保持通信惠桃,如果集群中超過一半以上的follwer無法連接到leader浦夷,就會自動進(jìn)入領(lǐng)導(dǎo)選舉,進(jìn)而選舉出新的leader
5刽射、zab的工作模式簡介
zab有兩種工作模式军拟,一種是恢復(fù)模式,一種是廣播模式誓禁⌒赶ⅲ恢復(fù)模式下進(jìn)行領(lǐng)導(dǎo)選舉,廣播模式處理事務(wù)請求摹恰。

6辫继、簡述領(lǐng)導(dǎo)選舉過程

首先服務(wù)器將自身狀態(tài)轉(zhuǎn)換為looking,并向集群中所有的服務(wù)器發(fā)起投票(myid,zxid)
接收其他服務(wù)器發(fā)送的投票俗慈,并進(jìn)行處理姑宽,按照zxid最大的作為leader,如果相同按照myid最大的作為leader闺阱,更新投票信息炮车,再次向集群發(fā)送投票
統(tǒng)計投票結(jié)果,超過半數(shù)以上的投票即為leader
如果leader是自己酣溃,就把自己的狀態(tài)變更為leading瘦穆,否則變?yōu)閒ollwing

7、簡述事務(wù)請求的過程

只有l(wèi)eader可以處理事務(wù)請求赊豌,follwer接收到事務(wù)請求后要轉(zhuǎn)發(fā)給leader
leader以proposal的形式發(fā)送給所有的follwer扛或,等待響應(yīng)
follwer接收到請求后首先記錄事務(wù)日志拼卵,然后返回響應(yīng)
如果超過半數(shù)以上的follwer都返回正確的響應(yīng)术浪,再次向所有follwer發(fā)送commit請求
follwer開始變更內(nèi)存數(shù)據(jù)庫
最后響應(yīng)客戶端

8潮罪、watcher機制簡介

客戶端使用watchmanager來存儲注冊節(jié)點和watcher對象的映射
客戶端向服務(wù)端發(fā)送注冊路徑和狀態(tài)信息熊杨,服務(wù)端會把路徑和當(dāng)前的連接servercnxn存儲在內(nèi)部的watchmanager中
一旦節(jié)點數(shù)據(jù)有變化就從watchmanager中查出servercnxn莺丑,并回調(diào)process
回調(diào)客戶端桃序,客戶端從watchmanager中取出watcher战惊,執(zhí)行回調(diào)邏輯

9信柿、zookeeper是如何保證原子更新的钠绍?

采用樂觀鎖秆吵,類似JDK中的cas操作,讀取數(shù)據(jù)五慈,校驗纳寂,提交主穗,使用version來校驗數(shù)據(jù)從讀取后有沒有發(fā)送變化

10、sessionId是如何生成的毙芜,如何保證其全局唯一忽媒?

sessionId是64位的數(shù)字,前8位是myid腋粥,后56位是當(dāng)前的時間戳

11晦雨、簡述zookeeper會話管理

zk使用會話管理器sessiontracker來管理session。sessiontracker使用分桶策略來管理session隘冲,客戶端創(chuàng)建或刷新session的時候會按超時時間來把session放到不同的桶里闹瞧。后臺有一個專門線程負(fù)責(zé)來在固定的時間點定時檢查session,如果session在超時時間范圍內(nèi)已經(jīng)刷新展辞,就會被重新放到新的桶里奥邮,如果沒有刷新就會被清理掉。

12罗珍、簡述zk的數(shù)據(jù)存儲

zk事務(wù)日志
zk dump洽腺,定期dump,可以配置日志記錄數(shù)量超過多少次之后就可以把內(nèi)存中的數(shù)據(jù)dump到快照文件中去覆旱。

14蘸朋、zookeeper如何保證事務(wù)的一致性?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扣唱,一起剝皮案震驚了整個濱河市藕坯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌噪沙,老刑警劉巖炼彪,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異曲聂,居然都是意外死亡,警方通過查閱死者的電腦和手機佑惠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門朋腋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人膜楷,你說我怎么就攤上這事旭咽。” “怎么了赌厅?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵穷绵,是天一觀的道長。 經(jīng)常有香客問我特愿,道長仲墨,這世上最難降的妖魔是什么勾缭? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮目养,結(jié)果婚禮上俩由,老公的妹妹穿的比我還像新娘。我一直安慰自己癌蚁,他們只是感情好幻梯,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著努释,像睡著了一般碘梢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伐蒂,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天煞躬,我揣著相機與錄音,去河邊找鬼饿自。 笑死汰翠,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的昭雌。 我是一名探鬼主播复唤,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼烛卧!你這毒婦竟也來了佛纫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤总放,失蹤者是張志新(化名)和其女友劉穎呈宇,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體局雄,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡甥啄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了炬搭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜈漓。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖宫盔,靈堂內(nèi)的尸體忽然破棺而出融虽,到底是詐尸還是另有隱情,我是刑警寧澤灼芭,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布有额,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏巍佑。R本人自食惡果不足惜茴迁,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望句狼。 院中可真熱鬧笋熬,春花似錦、人聲如沸腻菇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筹吐。三九已至糖耸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間丘薛,已是汗流浹背嘉竟。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留洋侨,地道東北人舍扰。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像希坚,于是被迫代替她去往敵國和親边苹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Apache Zookeeper是由Apache Hadoop的子項目發(fā)展而來裁僧,于2010年11月正式成為Apac...
    olostin閱讀 6,113評論 2 9
  • 本文將從系統(tǒng)模型聊疲、序列化與協(xié)議茬底、客戶端工作原理、會話获洲、服務(wù)端工作原理以及數(shù)據(jù)存儲等方面來揭示ZooKeeper的技...
    端木軒閱讀 3,804評論 0 42
  • 淺談分布式服務(wù)協(xié)調(diào)技術(shù) Zookeeper Google的三篇論文影響了很多很多人阱表,也影響了很多很多系統(tǒng)。這三篇論...
    algernoon閱讀 1,585評論 1 12
  • 一個真正的寫數(shù)據(jù)流程是怎么樣的贡珊?一個真正的讀數(shù)據(jù)流程是怎么樣的最爬?一個真正的同步數(shù)據(jù)流程是怎么樣的?從哪里到哪里飞崖?什...
    時待吾閱讀 4,017評論 0 14
  • 愛上一個人烂叔,不是一味的愿意付出谨胞,而是他值不值得你付出固歪。 話好聽,但非真,別急著抗拒牢裳,善于辨別他的目的逢防。 一個人的精...
    Joan饅頭閱讀 200評論 0 0