第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

首頁 慕課教程 Zookeeper 入門教程 Zookeeper 入門教程 ZooKeeper 集群的數(shù)據(jù)同步

ZooKeeper 集群的數(shù)據(jù)同步

1. 前言

在 Zookeeper 的集群模式一節(jié)中,我們學(xué)習(xí)過了 Zookeeper 的每個(gè) Follower 節(jié)點(diǎn)都可以對(duì)外提供服務(wù),而且為了保證整個(gè) Zookeeper 集群的數(shù)據(jù)一致,Zookeeper 集群的服務(wù)之間還會(huì)進(jìn)行數(shù)據(jù)同步。那么這個(gè)數(shù)據(jù)同步的過程是如何實(shí)現(xiàn)的呢?接下來我們就對(duì) Zookeeper 集群的數(shù)據(jù)同步機(jī)制進(jìn)行詳細(xì)的講解。

2. ZAB 的消息廣播模式

Zookeeper 為了保證 Zookeeper 集群的數(shù)據(jù)一致性,使用了 ZAB 協(xié)議,在正常工作模式下,ZAB 協(xié)議會(huì)使用消息廣播模式來讓 Leader 來對(duì)事務(wù)性消息進(jìn)行廣播,而且只能有一個(gè) Leader 進(jìn)行廣播。接下來我們就來講解這個(gè)消息廣播模式是如何工作的。

2.1 消息廣播的數(shù)據(jù)同步

在我們使用 Zookeeper 客戶端向 Zookeeper 集群的某一個(gè) Follower 發(fā)送事務(wù)請(qǐng)求時(shí),也就是對(duì) Znode 節(jié)點(diǎn)的增刪改操作時(shí),這個(gè)Follower 節(jié)點(diǎn)并不會(huì)自己去處理這個(gè)事務(wù)請(qǐng)求,而是會(huì)把這個(gè)請(qǐng)求轉(zhuǎn)發(fā)給 Leader 節(jié)點(diǎn),讓 Leader 節(jié)點(diǎn)來處理事務(wù)請(qǐng)求。

事務(wù)請(qǐng)求

Leader 節(jié)點(diǎn)接收到 Follower 轉(zhuǎn)發(fā)過來的請(qǐng)求,會(huì)生成與事務(wù)請(qǐng)求相對(duì)應(yīng)的 Proposal 事務(wù)提案,并為這個(gè) Proposal 事務(wù)提案分配全局唯一的單調(diào)遞增的事務(wù)ID,也就是 ZXID,然后把 Proposal 事務(wù)提案發(fā)送到集群中所有的 Follower 節(jié)點(diǎn)。

如果 Leader 節(jié)點(diǎn)接收到了多個(gè) Follower 節(jié)點(diǎn)轉(zhuǎn)發(fā)的請(qǐng)求,Leader 節(jié)點(diǎn)會(huì)根據(jù) Proposal 事務(wù)提案的 ZXID 的先后順序來對(duì) Follower 節(jié)點(diǎn)進(jìn)行廣播。

Proposal 事務(wù)提案

Follower 節(jié)點(diǎn)接收到 Proposal 事務(wù)提案后,會(huì)把接收到的 Proposal 事務(wù)提案以事務(wù)日志的方式寫入本地磁盤中,成功后會(huì)向 Leader 節(jié)點(diǎn)返回 Ack 確認(rèn)信息,確定自己能夠執(zhí)行該事務(wù)。在這一步驟中, Follower 向 Leader 發(fā)送反饋,確認(rèn) Follower 節(jié)點(diǎn)能夠執(zhí)行該事務(wù),但不會(huì)去提交該事務(wù)請(qǐng)求。

 發(fā)送反饋

Leader 節(jié)點(diǎn)接收到半數(shù)以上的 Follower 節(jié)點(diǎn)返回的 Ack 確認(rèn)信息后,就會(huì)向所有的 Follower 節(jié)點(diǎn)廣播 Commit 消息,通知 Follower 節(jié)點(diǎn)提交事務(wù)請(qǐng)求,同時(shí) Leader 節(jié)點(diǎn)自己也會(huì)提交該事務(wù)請(qǐng)求。接收到 Commit 消息的 Follower 節(jié)點(diǎn)就會(huì)開始進(jìn)行事務(wù)提交。

事務(wù)提交

當(dāng) Follower 節(jié)點(diǎn)完成事務(wù)的提交后,Leader 節(jié)點(diǎn)就會(huì)把該 Follower 節(jié)點(diǎn)加入可用的 Follower 列表中,該Follower 節(jié)點(diǎn)就可以對(duì)外提供服務(wù)了。

除了 Follow 節(jié)點(diǎn)需要進(jìn)行數(shù)據(jù)同步外,Zookeeper 集群還有一種叫做 Observer 的節(jié)點(diǎn)會(huì)進(jìn)行數(shù)據(jù)同步,那么我們接下來簡單介紹一下 Observer 節(jié)點(diǎn)。

3. Observer

Observer 節(jié)點(diǎn)是 Zookeeper 3.3.0 版本新增的 Zookeeper 集群的角色,Observer 作為觀察者在 Zookeeper 集群中觀察 Zookeeper 集群的最新的數(shù)據(jù)變化,然后從 Leader 節(jié)點(diǎn)獲取最新變化的數(shù)據(jù)并同步到自身,然后再向外提供服務(wù)。

Observer 節(jié)點(diǎn)可以獨(dú)立的處理 Zookeeper 客戶端的非事務(wù)請(qǐng)求,也就是查詢請(qǐng)求。如果接收到 Zookeeper 客戶端的事務(wù)請(qǐng)求,Observer 節(jié)點(diǎn)會(huì)把請(qǐng)求轉(zhuǎn)發(fā)給 Leader 節(jié)點(diǎn),但不會(huì)接收到 Leader 節(jié)點(diǎn)的 Proposal 事務(wù)提案,避免影響 Zookeeper 集群處理事務(wù)請(qǐng)求的效率。這是 Observer 節(jié)點(diǎn)與 Follower 節(jié)點(diǎn)的區(qū)別之一。

Observer 節(jié)點(diǎn)與 Follower 節(jié)點(diǎn)的區(qū)別之二,Observer 節(jié)點(diǎn)不會(huì)參與 Zookeeper 集群的 Leader 選舉,避免太多候選者而降低 Zookeeper 集群選舉 Leader 的效率。

簡單的介紹了 Observer 節(jié)點(diǎn)是什么,以及 Observer 節(jié)點(diǎn)和 Follower 節(jié)點(diǎn)的區(qū)別,接下來我們講解 Observer 節(jié)點(diǎn)是如何實(shí)現(xiàn)與 Leader 節(jié)點(diǎn)進(jìn)行數(shù)據(jù)同步的。

3.1 Observer 的數(shù)據(jù)同步

增加 Observer 節(jié)點(diǎn)的主要作用是用來提高 Zookeeper 集群的非事務(wù)請(qǐng)求的效率,我們可以在 zoo.cfg 配置文件中添加如下配置:

# 聲明此服務(wù)為 Observer 節(jié)點(diǎn)
peerType=observer

在 zoo.cfg 中配置 Zookeeper 服務(wù)列表時(shí)需要添加 observer 標(biāo)識(shí):

# 添加 observer 標(biāo)識(shí),聲明 server.1 為 Observer 節(jié)點(diǎn)
server.1:192.168.0.77:2181:3181:observer

我們啟動(dòng) Zookeeper 服務(wù)時(shí),會(huì)加載配置文件的 peerType 屬性來識(shí)別該服務(wù)是否為 Observer 節(jié)點(diǎn),如果是 Observer 節(jié)點(diǎn),就會(huì)使用 ObserverZooKeeperServer 類來實(shí)例化該 Observer 節(jié)點(diǎn)。

由于 Observer 節(jié)點(diǎn)不接收 Leader 節(jié)點(diǎn)廣播的 Proposal 事務(wù)提案,也就不能在這一步獲取 Proposal 事務(wù)提案中的事務(wù)請(qǐng)求,那么 Observer 節(jié)點(diǎn)如何獲得事務(wù)請(qǐng)求的信息呢?答案是 Observer 節(jié)點(diǎn)會(huì)從 INFORM 消息中獲取已提交的事務(wù)信息。

INFORM 消息是 Leader 節(jié)點(diǎn)在自身的事務(wù)提交成功后向 Observer 節(jié)點(diǎn)發(fā)出的消息,通知 Observer 更新數(shù)據(jù)。Observer 接收到 Leader 節(jié)點(diǎn)發(fā)出的 INFORM 消息后,從 INFORM 消息中獲取 Leader 節(jié)點(diǎn)已經(jīng)提交的事務(wù),就可以對(duì)自身的數(shù)據(jù)進(jìn)行更新了,而且不需要向Leader 節(jié)點(diǎn)發(fā)送反饋信息。

INFORM 消息

4. 總結(jié)

在本節(jié)內(nèi)容中,我們學(xué)習(xí)了 Zookeeper ZAB 協(xié)議的消息廣播模式,以及在消息廣播模式中 Zookeeper 集群的各個(gè)節(jié)點(diǎn)的數(shù)據(jù)同步過程,還有 Observer 節(jié)點(diǎn)的特點(diǎn)以及 Observer 節(jié)點(diǎn)的數(shù)據(jù)同步。以下是本節(jié)內(nèi)容總結(jié):

  1. Zookeeper ZAB 協(xié)議的消息廣播模式。
  2. 消息廣播模式下的數(shù)據(jù)同步過程。
  3. Observer 節(jié)點(diǎn)的特點(diǎn)。
  4. Observer 節(jié)點(diǎn)與 Leader 節(jié)點(diǎn)的數(shù)據(jù)同步。