Zookeeper結(jié)構(gòu)

zk的服務(wù)器模式

仲裁模式:zk復(fù)制集群中所有服務(wù)器的數(shù)據(jù)亏推;大多數(shù)服務(wù)器保存數(shù)據(jù)成功后才返回客戶端成功
獨立模式:一個單獨的服務(wù)器裹粤,zk的狀態(tài)無法復(fù)制

會話

1.客戶端設(shè)置的監(jiān)視點和會話相關(guān)聯(lián)踢俄,會話到期后等待中的監(jiān)視點會移除
2.在對zk集合進(jìn)行任何操作之前官撼,必須先與服務(wù)器創(chuàng)建會話
3.當(dāng)會話因為某種原因終止時愧哟,這個會話建立的臨時節(jié)點也會消失
4.zk客戶端可以透明的將會話從一個服務(wù)器轉(zhuǎn)移到另一個服務(wù)器
5.會話提供了順序保證,保證一個會話中的請求按FIFO的順序執(zhí)行橡淑,但當(dāng)一個客戶端打開了多個會話不能保證FIFO

zk的架構(gòu)設(shè)計

zk架構(gòu)圖

節(jié)點角色

1.leader:
    領(lǐng)導(dǎo)者負(fù)責(zé)投票的發(fā)起和決議,狀態(tài)的維護
2.learner:
  follower:接受客戶端的請求咆爽,返回數(shù)據(jù)梁棠;參與投票;
  observer:接受客戶端的讀請求斗埂,返回數(shù)據(jù)符糊,如果是寫請求會轉(zhuǎn)發(fā)給leader;不影響提議呛凶,不參與投票男娄;只同步leader的狀態(tài)(數(shù)據(jù))
  observer和follower的區(qū)別是observer不參與選舉和投票;數(shù)據(jù)不同不到磁盤漾稀,每次重啟后需要全量同步數(shù)據(jù)模闲;引入observer的目的是在不犧牲寫的性能下,提高讀的性能
集群中唯一的leader節(jié)點崭捍,唯一對外負(fù)責(zé)寫請求尸折,集群中的節(jié)點都可以接受讀請求,learner節(jié)點接收到寫請求后會轉(zhuǎn)發(fā)給leader

數(shù)據(jù)一致性zab協(xié)議

zk通過zab原子廣播協(xié)議來保證每個節(jié)點的數(shù)據(jù)一致性;

zk對數(shù)據(jù)一直性的特點

- 順序一致性:嚴(yán)格按照事物發(fā)起的順序執(zhí)行操作
- 原子性:所有事物的請求結(jié)果在集群中所有節(jié)點上的應(yīng)用情況是一樣的
- 單一視圖:客戶端訪問任何一個節(jié)點獲取到的數(shù)據(jù)模型是一樣的
- 實時性:包含在極小的一段時間內(nèi)殷蛇,客戶端可以讀取到服務(wù)器最新的數(shù)據(jù)狀態(tài)实夹,如果需要實時需要客戶端調(diào)用sync方法
寫的示例圖
寫請求流程.png

1.leader節(jié)點接收到寫請求后會分配一個全局的事物ID(zxid),并發(fā)起提議粒梦,廣播給每個follower亮航;
2.follower接收到事物 請求后,寫入到本地事物日志匀们,根據(jù)事物的執(zhí)行結(jié)果缴淋,和zxid的有效性來返回是否接受這個提議;
3.leader接收到超過半數(shù)的節(jié)點(包括自己)的ack請求昼蛀,則執(zhí)行事物提交請求宴猾,自己執(zhí)行提交并且廣播給follower和同步狀態(tài)給observer;
4.follower接受到事物提交請求后叼旋,進(jìn)行事物的提交

leader選舉

選舉觸發(fā)的條件
當(dāng)集群初始化(崩潰恢復(fù))或者follower沒辦法聯(lián)系上leader時仇哆,每個follower會進(jìn)入選舉模式
選舉的原則
誰的數(shù)據(jù)最新,誰就具有優(yōu)先選舉為leader的資格夫植;
選舉的步驟
1.發(fā)起選票讹剔、每個節(jié)點都投自己 一票并提議別的節(jié)點也投自己一票
2.選票重投階段油讯、根據(jù)第一階段的投票決定投哪一個節(jié)點
3.選票統(tǒng)計、哪個節(jié)點收到了超過半數(shù)的投票延欠,則變更狀態(tài)為leader節(jié)點其余的節(jié)點變更為learner陌兑;

選舉完后,會進(jìn)行數(shù)據(jù)的同步由捎,只有數(shù)據(jù)同步完成后這個節(jié)點才會對外提供服務(wù)

數(shù)據(jù)的持久化

服務(wù)器只有強制沖刷事務(wù)到事務(wù)日志中兔综,才會確認(rèn)對應(yīng)的提議

數(shù)據(jù)的類型
  • 內(nèi)存數(shù)據(jù)庫:全部數(shù)據(jù)存儲在內(nèi)存中默認(rèn)為1M
  • 事務(wù)日志:每次寫操作完成后保存到內(nèi)存中的同時會寫入到事務(wù)日志
  • 快照日志:當(dāng)事務(wù)日志的寫入次數(shù)超過一定數(shù)量后(默認(rèn)10W),會將內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行一次備份狞玛,存儲到磁盤上软驰,這個文件是快照文件
    快照文件是一個若一致性的文件,因為在進(jìn)行快照的時候服務(wù)器不會阻塞
    通過快照日志和事務(wù)日志可以把任意zk節(jié)點還原到任意時間點的數(shù)據(jù)
寫操作的流程
  • 接受寫操作:集群中的任意節(jié)點都可以接受寫操作心肪,但是當(dāng)非leader節(jié)點接收到寫請求后锭亏,會把當(dāng)前的請求轉(zhuǎn)發(fā)給leader節(jié)點
  • 協(xié)調(diào)寫操作:leader接收到寫操作請求后,會為這次的寫分配一個唯一的事務(wù)ID(ZXID)然后把這次事務(wù)廣播出去
  • 記錄數(shù)據(jù):當(dāng)大多數(shù)節(jié)點響應(yīng)這次事務(wù)提議后硬鞍,進(jìn)行事務(wù)的提交和內(nèi)存數(shù)據(jù)庫的應(yīng)用
  • 記錄快照:當(dāng)事務(wù)日志記錄的次數(shù)達(dá)到一定數(shù)量后(默認(rèn)10W)慧瘤,將內(nèi)存數(shù)據(jù)庫進(jìn)行一次備份,持久化保存到磁盤上
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末固该,一起剝皮案震驚了整個濱河市锅减,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌伐坏,老刑警劉巖上煤,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異著淆,居然都是意外死亡劫狠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門永部,熙熙樓的掌柜王于貴愁眉苦臉地迎上來独泞,“玉大人,你說我怎么就攤上這事苔埋∨成埃” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵组橄,是天一觀的道長荞膘。 經(jīng)常有香客問我,道長玉工,這世上最難降的妖魔是什么羽资? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮遵班,結(jié)果婚禮上屠升,老公的妹妹穿的比我還像新娘潮改。我一直安慰自己,他們只是感情好腹暖,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布汇在。 她就那樣靜靜地躺著,像睡著了一般脏答。 火紅的嫁衣襯著肌膚如雪糕殉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天殖告,我揣著相機與錄音糙麦,去河邊找鬼。 笑死丛肮,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的魄缚。 我是一名探鬼主播宝与,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼冶匹!你這毒婦竟也來了习劫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嚼隘,失蹤者是張志新(化名)和其女友劉穎诽里,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體飞蛹,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡谤狡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了卧檐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片墓懂。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖霉囚,靈堂內(nèi)的尸體忽然破棺而出捕仔,到底是詐尸還是另有隱情,我是刑警寧澤盈罐,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布榜跌,位于F島的核電站,受9級特大地震影響盅粪,放射性物質(zhì)發(fā)生泄漏钓葫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一票顾、第九天 我趴在偏房一處隱蔽的房頂上張望瓤逼。 院中可真熱鬧笼吟,春花似錦、人聲如沸霸旗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诱告。三九已至撵枢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間精居,已是汗流浹背锄禽。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留靴姿,地道東北人沃但。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像佛吓,于是被迫代替她去往敵國和親宵晚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359