【ZooKeeper Notes 23】Leader選舉-來自郵件列表
logical clocks是用來唯一標識一輪Leader選舉的。
- 次Leader掛了之後,叢集中的其他機器都會對logical clocks值做自增操作。
- 新一輪的Leader選舉開始或新一輪的投票開始了的時候,會對logical clocks值做自增操作。
在FastLeaderElection選舉中,每個機器(peer)都會廣播自己的(zxid,id)。每個機器都會收集叢集中所有的機器的投票。
對於每一個機器來說,在每一輪的選舉超時結束之前,都應該收集完了其他機器的投票。
對於一個機器而言,如果在收集的過程中,收到了一個更高輪次(epoch)的投票,那麼當前機器會清空所有手機的投票,然後重新加入這一輪投票。
ZooKeeper中有個過半的概念,就是說,對於一個有n臺機器的叢集,我們認為 (n/2+1)即為過半,在ZooKeeper中,經常使用“quorum”來表示過半的機器數。
也就是說,理論上只要能夠收集到大於等於quorum臺機器的投票,就可以選出Leader了。同時,也只能夠在已經收到到quorum臺機器的投票後,才可以退出選舉。這就避免了在沒有足夠的伺服器啟動起來後,Leader就已經失敗退出了(因為選舉超時了)。實際上,只有在已經收到了quorum臺機器的投票後,才會開始啟動超時計時。
另一個終止Leader選舉的條件就是,叢集中已經存在了Leader。當叢集中的一個機器發起一輪Leader選舉的時候,會收到“there-is-already-a-leader-for-epoch-X”的訊息,如果大於等於quorum臺機器回覆了相同的epoch和leader,那麼也就退出了Leader選舉。
無論以哪種方式退出了Leader選舉,在退出Leader選舉流程之前,都需要確定叢集中是否有足夠多的機器參與了投票,即機器數是否過半,同時需要確定當前選出的Leader是否在這個quorum臺機器中。
在進行Leader選舉的過程中,各個伺服器之間都會兩兩進行網路連線。在建立網路連線的時候,機器A會和機器B建立一個TCP連線,當然,反之亦然。建立連線之後,機器A和機器B分別會把自己的myid傳送給對方。
這個時候,比對完彼此的myid後,myid小的那個機器會主動關閉與對方的連線。
相關推薦
【ZooKeeper Notes 23】Leader選舉-來自郵件列表
logical clocks是用來唯一標識一輪Leader選舉的。 - 次Leader掛了之後,叢集中的其他機器都會對logical clocks值做自增操作。 - 新一輪的Leader選舉開始或新一輪的投票開始了的時候,會對logical clocks值做自增操作。 在
【ZooKeeper Notes 5】單機啟動多個zk例項注意點
轉載請註明:@ni掌櫃 [email protected] 1. 分配不同的myid。 2. 不同例項,clientPort一定要不同。 3. 使用不同的zoo.cfg檔案,並且dataDir和dataLogDir目錄要不同。
【Zookeeper】Leader選舉機制示例
本文介紹下zookeeper中leader選舉機制的基本用法和關鍵知識點。 一、 選項設定 提到Leader選舉,先需要重點介紹下建立znode時的Flag選項。 ZOO_EPHEMERAL ZOO_EPHEMERAL,用來標記當建立這個znode的節點和Zookeepe
【2018-01-23】HTML-iframe框架
-i char png 技術 targe bubuko pre alt com 框架 iframe寬度 width高度 height顯示的網頁路徑 href滾動條 onscroll="true" 標題欄小圖標:<link rel="shortcut icon" ty
【2018-01-23】HTML-插入視頻、音樂,簡單滾動效果
視頻 embed blog 默認 loop alternate idt 方向 範圍 插入視頻:在優酷等視頻網站,找到分享位置,復制html代碼,貼入網頁中自動播放:swf後面?VideoIDS=XNDA3OTM4NA=&isAutoPlay=true&isS
【2018/09/23】T2
塔(30/100) 描述 小A想搭一個體積不超過m的塔,他有各種大小的立方積木,比如邊長為a的積木,體積為a^3,現在小A需要你給一個X,每次小A會用一個體積不超過X的最大積木,依次到搭好為止,現在他想最大化積木的個數,同時在積木個數最大的情況下使X最大 輸入 一行一
【zookeeper之八】Zookeeper會話
一、前言 前面分析了Zookeeper客戶端的細節,接著繼續學習Zookeeper中的一個非常重要的概念:會話。 二、會話 客戶端與服務端之間任何互動操作都與會話息息相關,如臨時節點的生命週期、客戶端請求的順序執行、Watcher通知機制等。Zookeeper的連線與會話就是客戶
【zookeeper之七】Zookeeper客戶端
一、前言 前篇部落格分析了Zookeeper的序列化和通訊協議,接著繼續學習客戶端,客戶端是開發人員使用Zookeeper最主要的途徑,很有必要弄懂客戶端是如何與服務端通訊的。 二、客戶端 2.1 客戶端組成 Zookeeper客戶端主要由如下核心部件構成。 1.
跟著例項學習ZooKeeper的用法: Leader選舉
ZooKeeper官方給出了使用zookeeper的幾種用途。 Leader Election Barriers Queues Locks Two-phased Commit 其它應用如Name Service, Configuration, Group Membership 在實際使用
【Zookeeper學習六】——開源客戶端ZKClient和Curator介紹與應用
前言 在真正的專案中通常使用的是zkclient和curator,而不是原生的zookeeper客戶端,因為zookeeper原生的客戶端存在一定的侷限性,本篇小編主要講解一下這兩種zookeeper客戶端的使用! 內容 1.1zk原生api不足之
面試題:說說你對ZooKeeper集群與Leader選舉的理解?
服務器 定義 浪費 新增 lead lean 介紹 調度 代碼片段 ZooKeeper是一個開源分布式協調服務、分布式數據一致性解決方案。可基於ZooKeeper實現命名服務、集群管理、Master選舉、分布式鎖等功能。 高可用 為了保證ZooKeeper的可用性,在生產環
【VUE元件開發】VUE隨意點選列表元素切換選中樣式,並有序陣列新增索引和數值
直接檢視程式碼以及樣式 <template> <div> <!--頂部step--> <div class="dataStep"> <!--<img src="static
【java小程式】分頁顯示視訊列表
###內容目錄(由[TOC]自動生成) 文章目錄 分頁查詢的後端程式碼 小程式端程式碼 index.wxml index.wxss index.js
【閱讀的書籍】看過的書籍列表整理
如果需要相關的書籍,當然都是電子版的,需要的話 可以郵箱聯絡我。郵箱:[email protected] (申明本人學的不好,希望有問題的地方 請大佬指教 謝謝) 1.《Spring實戰4》:一本關於spring的一本書,如果想深入理解spring
【IOS功能實現】之:下拉列表
通過網上資料,自己藉助資料寫的程式碼,這是完全程式碼 //**************************************************************************** @interface DropDown1 : UIView <UITableVi
【Python學習筆記】python高階特性:列表生成式
【根據廖雪峰python教程整理】 一、列表生成式 列表生成式即List Comprehensions,是Python內建的非常簡單卻強大的可以用來建立list的生成式。 舉個例子,要生成lis
【分散式】Zookeeper的Leader選舉-選舉過程介紹
【分散式】Zookeeper的Leader選舉-選舉過程介紹 選舉開始,伺服器會各自為自己投票,在投票完成後,會將投票資訊傳送給叢集中的所有伺服器(觀察者伺服器不參與選舉)。 選票由兩部分組成:伺服器唯一標識myid和事務編號zxid,即(myid,xzid)。 zxid越大說明資料越新,在選擇演算法中
zookeeper【4】master選舉
考慮7*24小時向外提供服務的系統,不能有單點故障,於是我們使用叢集,採用的是Master+Slave。叢集中有一臺主機和多臺備機,由主機向外提 供服務,備機監聽主機狀態,一旦主機宕機,備機必需迅速接管主機繼續向外提供服務。在這個過程中,從備機選出一臺機作為主機的過程,就是Master選 舉。
【上木Debug】Zookeeper 3:Leader / Follower 資料同步
場景: 場景說明: server.3 為 leader, server.1 和 server.2 為 follower。三臺服務期資料同步後,殺死 server.2 同時刪除 server.2 dataLog 目錄下的所有資料
【Notes目錄】
regress james not http pen .com amp statistic cal A. 統計 1. 《An Introduction to Statistical Learning》作者: Gareth James / Daniela Witten