ZooKeeper 13 服務啟動

2021-08-07 17:31:12 字數 1555 閱讀 2087

leader和follower伺服器啟動期互動過程

挑重點,原書還講解了單機、集群伺服器的啟動過程,我這裡就跳過了..

我們來看下集群伺服器啟動過程中leader伺服器與follower伺服器之間的互動

這裡預設集群伺服器已經完成了leader選舉,集群中的伺服器,角色都已經確定。

(圖不畫了,直接用原書中的圖)

leader和follower伺服器啟動期互動過程

1. 建立leader和folower伺服器

完成leader選舉之後,每個服務的角色都已經確定,開始建立自身相應的伺服器例項,並開始進入各自角色的主流程。

2. leader伺服器啟動follower接收器(learnercnxacceptor)

在zookeeper集群執行期間,leader伺服器需要和所有其餘的伺服器(下面使用"

learner

"表示)保持連線以確定集群中的機器存活情況。

follower接收器(learnercnxacceptor)用於負責接收所有非leader伺服器的連線請求。

3. learner

伺服器開始和leader伺服器建立連線

所有的learner伺服器啟動完畢之後,會與leader選舉的投票結果中找到當前集群中的leader伺服器,然後與其建立連線。

簡單地說,就是將learner伺服器的資訊註冊到leader伺服器中。

4. leader伺服器建立learnerhandler

leader伺服器接收到來自其他機器的連線建立請求之後,會建立乙個learnerhandler例項。

每個learnerhandler例項都對應了乙個leader與learner伺服器之間的連線。

他負責leader和learner伺服器之間幾乎所有的訊息通知和資料同步。

5. 向leader註冊

當learner服務於leader建立起連線之後,learner就會向leader進行註冊。

所謂的註冊其實就是將learner伺服器自己的基本資訊傳送給leader伺服器。

我們稱之為learnerinfo,包括當前伺服器的sid和伺服器處理的最新的zxid。

6. leader解析learner資訊,計算新的epoch

7. 傳送leader狀態

計算出新的epoch之後,leader會將該資訊以乙個leaderinfo訊息的形式傳送給learner,同時等待learner的響應。

8. learner傳送ack訊息

learner在接收到leader的訊息之後,解析出epoch和zxid,然後向leader反饋乙個ackepoch

9. 資料同步

10. 啟動leader 和 learner伺服器

1 3 啟動開發伺服器

flask通過依賴包click內建了乙個cli command line inte ce,命 令行互動介面 系統。當我們安裝flask後,會自動新增乙個flask命令腳 本,我們可以通過flask命令執行內建命令 擴充套件提供的命令或是我們自 己定義的命令。其中,flask run命令用來啟動內建的...

zookeeper啟動異常

zookeeper啟動異常 1.新部署的zookeeper或清理過資料資訊後,啟動zookeeper的時候報錯並啟動失敗。此時可能是以下幾個方面引起的 建立完以上兩個檔案後可以重試重啟。2.載入資料出錯 zk在啟動的過程中,首先會根據事務日誌中的事務日誌記錄,從本地磁碟載入最後一次提交時候的快照資料...

微服務基礎 zookeeper的安裝和啟動

1 上傳zookeeper 3.4.5.tar.gz 2 進去usr目錄下 cd usr 6 建立data和logs兩個目錄用於儲存資料和日誌 mkdir data mkdir logs 7 進入zookeeper 3.4.5下的conf資料夾,在conf目錄下新建zoo.cfg檔案,寫入以下內容儲...