學習筆記:Zookeeper選舉機制
1、Zookeeper選舉機制
Zookeeper雖然在配置檔案中並沒有指定master和slave
但是,zookeeper工作時,是有一個節點為leader,其他則為follower
Leader是通過內部的選舉機制臨時產生的
9.1 zookeeper的選舉機制(zk的資料一致性核心演算法paxos)
以一個簡單的例子來說明整個選舉的過程.
假設有五臺伺服器組成的zookeeper叢集,它們的id從1-5,同時它們都是最新啟動的,也就是沒有歷史資料,在存放資料量這一點上,都是一樣的.假設這些伺服器依序啟動,來看看會發生什麼.
1) 伺服器1啟動,此時只有它一臺伺服器啟動了,它發出去的報沒有任何響應,所以它的選舉狀態一直是LOOKING狀態
2) 伺服器2啟動,它與最開始啟動的伺服器1進行通訊,互相交換自己的選舉結果,由於兩者都沒有歷史資料,所以id值較大的伺服器2勝出,但是由於沒有達到超過半數以上的伺服器都同意選舉它(這個例子中的半數以上是3),所以伺服器1,2還是繼續保持LOOKING狀態.
3) 伺服器3啟動,根據前面的理論分析,伺服器3成為伺服器1,2,3中的老大,而與上面不同的是,此時有三臺伺服器選舉了它,所以它成為了這次選舉的leader.
4) 伺服器4啟動,根據前面的分析,理論上伺服器4應該是伺服器1,2,3,4中最大的,但是由於前面已經有半數以上的伺服器選舉了伺服器3,所以它只能接收當小弟的命了.
5) 伺服器5啟動,同4一樣,當小弟.
9.2 非全新叢集的選舉機制(資料恢復)
那麼,初始化的時候,是按照上述的說明進行選舉的,但是當zookeeper運行了一段時間之後,有機器down掉,重新選舉時,選舉過程就相對複雜了。
需要加入資料version、leader id和邏輯時鐘。
資料version:資料新的version就大,資料每次更新都會更新version。
Leader id:就是我們配置的myid中的值,每個機器一個。
邏輯時鐘:這個值從0開始遞增,每次選舉對應一個值,也就是說: 如果在同一次選舉中,那麼這個值應該是一致的 ; 邏輯時鐘值越大,說明這一次選舉leader的程序更新.
選舉的標準就變成:
1、邏輯時鐘小的選舉結果被忽略,重新投票
2、統一邏輯時鐘後,資料id大的勝出
3、資料id相同的情況下,leaderid大的勝出
根據這個規則選出leader。
相關推薦
學習筆記:Zookeeper選舉機制
1、Zookeeper選舉機制Zookeeper雖然在配置檔案中並沒有指定master和slave但是,zookeeper工作時,是有一個節點為leader,其他則為followerLeader是通過內部的選舉機制臨時產生的9.1 zookeeper的選舉機制(zk的資料一致性核心演算法paxos)以一個簡
Qt學習筆記:Qt 事件機制
一、Qt中的事件處理 1. 在Qt中,事件被封裝成一個個物件,所有的事件均繼承自抽象類QEvent. 事件處理的核心包括事件①產生、②分發、③接受和處理。 事件的產生: 誰來產生事件? 最容易想到的是我們的輸入裝置,比如鍵盤、滑鼠產生的keyPressEvent,keyR
學習筆記:Zookeeper 應用案例(上下線動態感知)
1、Zookeeper 應用案例(上下線動態感知)8.1 案例1——伺服器上下線動態感知8.1.1 需求描述某分散式系統中,主節點可以有多臺,可以動態上下線任意一臺客戶端都能實時感知到主節點伺服器的上下線8.1.2 設計思路 8.1.3 程式
【轉】Zookeeper學習---zookeeper 選舉機制介紹
erp change 交換 內容 數值 所有 ase 一輪 eval 【原文】https://www.toutiao.com/i6593162565872779784/ zookeeper集群 配置多個實例共同構成一個集群對外提供服務以達到水平擴展的目的,每個服務器上的數據
大資料學習路線:Zookeeper叢集管理與選舉
大資料技術的學習,逐漸成為很多程式設計師的必修課,因為趨勢也是因為自己的職業生涯。在各個技術社群分享交流成為很多人學習的方式,今天很榮幸給我們分享一些大資料基礎知識,大家可以一起學習! 1.叢集機器監控 這通常用於那種對叢集中機器狀態,機器線上率有較高要求的場景,能夠快速對叢集中機器變化作出響
Zookeeper學習筆記:簡單註冊中心
zookeeper可以作為微服務註冊中心,spring cloud也提供了zookeeper註冊中心的支援。 本文介紹如何實現一個簡單的zookeeper註冊中心,主要的實現方式: n個服務提供者對外提供http介面獲取資料,這些服務提供者把自己的主機、埠資訊註冊到zook
Java學習筆記:Java的執行機制
初識Java,總感覺是一頭霧水,不知道該如何開始自己的學習。在開始之前,必要的理論基礎是不可少的,可以先了解一下,Java的執行機制,然後再寫個簡單的“hello world”! 簡單來說Java程式的執行機制分為編寫、編譯和執行三個步驟。 1.編寫 編寫是指在Java開發環境中進行程
Dubbo學習筆記:註冊到zookeeper並實現遠端呼叫
我們選擇zookeeper作為註冊中心。 一、首先要下載zookeeper,把程式解壓,進入conf,把zoo_sample.cfg修改為zoo.cfg。進入bin資料夾,在這裡開啟命令列,輸入zkserver.cmd,這樣就啟動了zookeeper。 可以看出,zook
android核心剖析學習筆記:AMS(ActivityManagerService)內部原理和工作機制
一、ActivityManagerService提供的主要功能: (1)統一排程各應用程式的Activity (2)記憶體管理 (3)程序管理 二、啟動一個Activity的方式有以下幾種:
C++ 學習筆記:STL 容器一些底層機制
1、vector 容器 vector 的資料安排以及操作方式,與 array 非常相似。兩者的唯一區別在於空間的運用的靈活性。array 是靜態空間,一旦配置了就不能改變,vector 是動態陣列。在堆上分配空間。vector 是動態空間,隨著元素的加入,它的內部機制會自行
Linux學習筆記:存儲管理
linux 磁盤管理 Linux系統中所有的硬件設備都是通過文件的方式來表現和使用的,我們將這些文件稱為設備文件,在Linux下的/dev目錄中有大量的設備文件,根據設備文件的不同,又分為字符設備文件和塊設備文件。字符設備文件的存取是以字符流的方式來進行的,一次傳送一個字符。常見的有打印
學習筆記:javascript內置對象:數組對象
b- sort splice 刪除 分隔 href 結果 join() strong 1.數組對象的創建 1.設置一個長度為0的數組 var myarr=new array(); 2.設置一個長度為n的數組 var myarr=new arr(n); 3.聲明一個
學習筆記:javascript內置對象:日期對象
etsec sel mil cond ava com 描述 學習筆記 asp 2.日期對象的常用函數 2.日期對象的常用函數 Date 對象方法 方法描述 Date() 返回當日的日期和時間。 getDate() 從 Date 對象返回一個月
Linux學習筆記:btrfs
可擴展性 linux btrfs Technical Preview, 技術預覽版 BtrFS(B-tree文件系統,又稱為Butter FS或Better FS),2007由oracle開源後,得到了IBM、intel等廠商的大力支持,其目標計劃是替代linux目前的ext3/4,成為下
Linux學習筆記:rpm程序包管理
源代碼 rpm 程序包 以CentOS為例,rpm程序包管理器的相關內容如下:CentOS的程序包管理器: 程序包的命名規則: 源代碼包: software_name-VERSION.tar.gz VERSION:major.mino
kafka學習筆記:知識點整理
一個 eight true med 分組 pos 間接 fig ges 一、為什麽需要消息系統 1.解耦: 允許你獨立的擴展或修改兩邊的處理過程,只要確保它們遵守同樣的接口約束。 2.冗余: 消息隊列把數據進行持久化直到它們已經被完全處理,通過這一方式規避了數據
Android:日常學習筆記(9)———探究廣播機制
ora rri enabled cas 管理 encoding protect 其他 acc Android:日常學習筆記(9)———探究廣播機制 引入廣播機制 Andorid廣播機制 廣播是任何應用均可接收的消息。系統將針對系統事件(例如:系統啟動或設備開始充電時)傳
Emacs學習筆記:移動
size exp http spc ssi 參考 put kill ati 參考網址:https://www.emacswiki.org/emacs/NavigatingParentheses Navigating over balanced expressions C
Linux學習筆記:OSI七層模型
路由器 交換機 比特流 兼容性 linux OSI七層模型: OSI(Open System Interconnection,開放系統互連)七層網絡模型稱為開放式系統互聯參考模型 ,是一個邏輯上的定義,一個規範,它把網絡從邏輯上分為了7層。每一層都有相關、相對應的物理設備,比如路由器
Android學習筆記:超能RecyclerView組件使用總結
popu bin view設置 and col cas mda rac data 個人認為 RecyclerView組件確實值得學習並用到我們的項目中去,前面學了相關的內容。今天再補充一些相關的東東。 1,實現對RecyclerView中的數據進行加入和刪除操作。