zookeeper集群角色:
leader follower observer
leader是zookeeper集群的核心
1.事物請求的唯一排程和處理者,保證集群事物處理的順序性
2.集群內各個伺服器的排程者
follower
1.處理客戶端非事物請求,以及**事物請求(新增、修改、刪除)給leader伺服器
2.參與事物請求提議(proposal)的投票(客戶端的乙個事物請求,需要半數伺服器投票通過以後才能通知leader commit,leader會發起乙個提案,要求follower投票)
3.參與leader選舉的投票
observer
觀察zookeeper集群中最新狀態的變化並將這些狀態同步到observer伺服器上
增加observer不影響集群中事物處理能力,同時還能提公升集群的非事務處理能力
不參與投票
zookeeper的集群組成
zookeeper一般是由2n+1臺伺服器組成
leader選舉
leaderelection/authfastleaderelection/fastleaderelection
fastleaderelection
serverid:在配置server集群的時候,給定伺服器的標識(myid)
zxid:伺服器在執行時產生的資料id,zxid的值越大,表示資料越新
epoch:選舉的輪數
service的狀態:looking、following、 observering、leading
第一次初始化啟動的時候:looking
1.所有在集群中的server都會推薦自已為leader,然後把(myid、zxid、epoch)作為廣播資訊,廣播給集群中的其他server,然後等待伺服器返回
2.每個伺服器都會接受來自集群中的其他伺服器的投票,集群中的每個伺服器在接受到投票後,開始判斷投票的有效性
a)判斷邏輯時鐘(sid)如果sid大於自已當前的sid,說明自已儲存的epoch是過期,更新epoch,同時clear其他伺服器傳送過來的選舉資料
b)如果sid小於目前的sid,說明對方的sid過期了,也就意味著對方伺服器的選舉輪數是過期的,這個時候,只需要將自已的資訊傳送給對方
c)如果sid等於目前的sid,根據規則來判斷是否有資格獲取leader
i.接受到來自其他伺服器的投票後,針對每乙個投票,都需要將別人的投票和自已的投票進行pk
zxid:zxid最大的伺服器優先
3.統計投票
zab協議
拜占庭問題
paxos協議主要就是如何保證在分布式網路環境下,各個伺服器如何達成一致最終保證資料的一致性問題
zab協議,基於paxos協議的乙個改進
zab協議為分布式協議服務zookeeper專門設計的一種支援崩潰恢復的原子廣播協議
zookeeper並沒有完全採用paxos演算法,而是採用zab zookeeper atomic broadcast
zab協議的原理
1.在zookeeper的主備模式下,通過zab協議來保證集群中各個副本資料的一致性
2.zookeeper使用的是單一的主程序來接受並處理所有的事物請求,並採用zab協議
把資料的狀態變更以事務請求的形式廣播到其他的節點
3.zab協議在主備模型架構中,保證了同一時刻只能有乙個主程序來廣播伺服器的狀態變更
4.所有的事務請求必須由全域性唯一的伺服器來協調處理,這個伺服器叫leader,其他的叫follower
leader節點主要負責把客戶端的事務請求轉化成乙個事務提議(proposal)並分發給集群中的所有follower節點
再等待所有的follower節點的反饋,一旦超過半數伺服器進行了正確的反饋,那麼leader就會commit這條訊息
崩潰恢復
原子廣播
zab協議的工作原理
1.什麼情況下zab協議會進入崩潰恢復模式
1)當伺服器啟動時
2)當leader伺服器出現網路中斷、崩潰或者重啟的情況
3)集群中已經不存在過半的伺服器與該leader保持正常通訊
2.zab協議進入崩潰恢復模式會做什麼?
1)當leader出現問題,zab協議進入崩潰恢復模式,並且選舉出新的leader,當新的leader選舉出來以後,如果集群中已經有過半機器完成了leader伺服器的狀態同意(資料同步),退出崩潰恢復,進入訊息廣播模式
2)當新的機器加入到集群中的時候,如果已經存在leader伺服器,那麼新加入的伺服器就會自覺進入資料恢復模式,找到leader進行資料同步
問題:假設乙個事務在leader伺服器被提交了,並且已經有過半的follower返回了ack,在leader節點把commit訊息傳送給follower機器之前leader伺服器掛了怎麼辦?
zab協議,一定需要保證已經被leader提交的事務也能夠被所有follower提交
zab協議需要保證,在崩潰恢復過程中跳過那些已經被丟棄的事務
Zookeeper 之 集群搭建
此處省略安裝搭建過程 備註 當前為三節點伺服器,可允許損壞乙個,群集狀態正常,還可以提供正常服務,如損壞節點兩個,只剩下乙個節點,整個zookeeper服務中斷,無法連線。root ops site zookeeper bin zkserver.sh status jmx enabled by de...
zookeeper集群 Zookeeper集群搭建
zookeeper有兩種執行模式 單機模式和集群模式。因為單機模式只是在開發測試時使用,所以這裡就不介紹單機模式的搭建。注意 因為zookeeper遵循半數原則,所以集群節點個數最好是奇數。ip位址 系統環境 192.168.0.10 centos7 jdk8 192.168.0.11 centos...
zookeeper集群 Zookeeper集群搭建
埠分別為 2181 2182 2183。投票選舉埠分別為 2881 3881 2882 3882 2883 3883。tar zxf zookeeper 3.4.6.tar.gz 將解壓後的 zookeeper 應用目錄重新命名,便於管理 在 zookeeper01 應用目錄中,建立 data 目錄...