每個節點啟動的時候狀態都是looking,處於觀望狀態,接下來就開始進行選主流程
若進行leader選舉,則至少需要兩台機器,這裡選取3臺機器組成的伺服器集群為例。在集群初始化階段,當有一台伺服器server1啟動時,其單獨無法進行和完成leader選舉,當第二台伺服器server2啟動時,此時兩台機器可以相互通訊,每台機器都試圖找到leader,於是進入leader選舉過程。選舉過程如下
(1) 每個server發出乙個投票。由於是初始情況,server1和server2都會將自己作為leader伺服器來進行投票,每次投票會包含所推舉的伺服器的myid和zxid、epoch,使用(myid, zxid,epoch)來表示,此時server1的投票為(1, 0),server2的投票為(2, 0),然後各自將這個投票發給集群中其他機器。
(2) 接受來自各個伺服器的投票。集群的每個伺服器收到投票後,首先判斷該投票的有效性,如檢查是否是本輪投票(epoch)、是否來自looking狀態的伺服器。
(3) 處理投票。針對每乙個投票,伺服器都需要將別人的投票和自己的投票進行pk,pk規則如下
i. 優先比較epoch
ii. 其次檢查zxid。zxid比較大的伺服器優先作為leader
iii. 如果zxid相同,那麼就比較myid。myid較大的伺服器作為leader伺服器。
對於server1而言,它的投票是(1, 0),接收server2的投票為(2, 0),首先會比較兩者的zxid,均為0,再比較myid,此時server2的myid最大,於是更新自己的投票為(2, 0),然後重新投票,對於server2而言,其無須更新自己的投票,只是再次向集群中所有機器發出上一次投票資訊即可。
(4) 統計投票。每次投票後,伺服器都會統計投票資訊,判斷是否已經有過半機器接受到相同的投票資訊,對於server1、server2而言,都統計出集群中已經有兩台機器接受了(2, 0)的投票資訊,此時便認為已經選出了leader。
(5) 改變伺服器狀態。一旦確定了leader,每個伺服器就會更新自己的狀態,如果是follower,那麼就變更為following,如果是leader,就變更為leading。
tomcat伺服器在debug啟動時很慢
ssh專案,tomcat伺服器在debug啟動時很慢,通過瀏覽器訪問乙個action也相對較慢 卡在初始化spring配置檔案那裡 通過查詢資料發現是猶豫斷點的問題,將斷點全部去掉後恢復正常.引 這個問題可能是由於eclipse和tomcat的互動而產生的,在以debug模式啟動tomcat時,發生...
Oracle的Window服務啟動時並不啟動例項
在window服務啟動時並不啟動例項的兩種方法 1 通過oradim startup 引數設定,如下 a.檢視oradim幫助 c documents and settingsadministrator oradim help dim 00002 有效的命令包括 delete,edit,new,st...
Oracle的Window服務啟動時並不啟動例項
在window服務啟動時並不啟動例項的兩種方法 1 通過oradim startup 引數設定,如下 a.檢視oradim幫助 c documents and settingsadministrator oradim help dim 00002 有效的命令包括 delete,edit,new,st...