zookeeper的集群
在zookeeper中,客戶端會(huì)隨機(jī)連接到zookeeper集群中的一個(gè)節(jié)點(diǎn),如果是讀請(qǐng)求,就直接從當(dāng)前節(jié)點(diǎn)中讀取數(shù)據(jù),如果是寫請(qǐng)求,那么請(qǐng)求會(huì)被轉(zhuǎn)發(fā)給leader提交事務(wù),然后 leader會(huì)廣播事務(wù),只要有超過半數(shù)節(jié)點(diǎn)寫入成功,那么寫請(qǐng)求就會(huì)被提交(類2PC事務(wù))。
所有事務(wù)請(qǐng)求必須由一個(gè)全局唯一的服務(wù)器來協(xié)調(diào)處理,這個(gè)服務(wù)器就是 Leader 服務(wù)器,其他的服務(wù)器就是follower。leader服務(wù)器把客戶端的失去請(qǐng)求轉(zhuǎn)化成一個(gè)事務(wù) Proposal(提議),并把這個(gè) Proposal 分發(fā)給集群中的所有 Follower 服務(wù)器。之后 Leader 服務(wù)器需要等待所有Follower服務(wù)器的反饋,一旦超過半數(shù)的Follower服務(wù)器進(jìn)行了正確的反饋,那么 Leader 就會(huì)再次向所有的Follower服務(wù)器發(fā)送Commit消息,要求各個(gè)follower節(jié)點(diǎn)對(duì)前面的一個(gè)Proposal進(jìn)行提交。
集群角色
Leader角色
Leader服務(wù)器是整個(gè)zookeeper集群的核心,主要的工作 任務(wù)有兩項(xiàng) 1. 事物請(qǐng)求的唯一調(diào)度和處理者,保證集群事物處理的順 序性 2. 集群內(nèi)部各服務(wù)器的調(diào)度者
Follower角色
Follower角色的主要職責(zé)是 1. 處理客戶端非事物請(qǐng)求、轉(zhuǎn)發(fā)事物請(qǐng)求給leader服務(wù)器 2. 參與事物請(qǐng)求 Proposal 的投票(需要半數(shù)以上服務(wù)器 通過才能通知leader commit數(shù)據(jù); Leader發(fā)起的提案, 要求Follower投票) 3. 參與Leader選舉的投票
Observer角色
Observer 是 zookeeper3.3 開始引入的一個(gè)全新的服務(wù)器 角色,從字面來理解,該角色充當(dāng)了觀察者的角色。 觀察zookeeper集群中的最新狀態(tài)變化并將這些狀態(tài)變化 同步到 observer 服務(wù)器上。Observer 的工作原理與 follower 角色基本一致,而它和 follower 角色唯一的不同 在于 observer 不參與任何形式的投票,包括事物請(qǐng)求 Proposal的投票和leader選舉的投票。簡單來說,observer 服務(wù)器只提供非事物請(qǐng)求服務(wù),通常在于不影響集群事物 處理能力的前提下提升集群非事物處理的能力
