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檔案,寫入以下內容儲...