中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

MongoDB副本集主節(jié)點(diǎn)的選舉過(guò)程-創(chuàng)新互聯(lián)

MongoDB的復(fù)制集具有自動(dòng)容忍部分節(jié)點(diǎn)宕機(jī)的功能,在復(fù)制集出現(xiàn)問(wèn)題時(shí)時(shí),會(huì)觸發(fā)選舉相關(guān)的過(guò)程,完成主從節(jié)點(diǎn)自動(dòng)切換。每個(gè)復(fù)制集成員都會(huì)在后臺(tái)運(yùn)行與復(fù)制集所有節(jié)點(diǎn)的心跳線程,在兩種情況下會(huì)觸發(fā)狀態(tài)檢測(cè)過(guò)程:

目前成都創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、沈北新網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
  1. 復(fù)制集成員心跳檢測(cè)結(jié)果發(fā)生變化,比如某個(gè)節(jié)點(diǎn)掛了或者新增節(jié)點(diǎn);
  2. 超過(guò)4s沒(méi)有執(zhí)行狀態(tài)檢測(cè)過(guò)程。在狀態(tài)檢測(cè)過(guò)程大致包含以下步驟:

(1)檢測(cè)自身是否處于選舉過(guò)程,如果是,退出本次過(guò)程。
(2)維護(hù)一個(gè)主節(jié)點(diǎn)的備用列表,列表中所有節(jié)點(diǎn)都可能被選舉為主節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都會(huì)檢測(cè)自身以及全局條件是否滿足:
a. 是否看見(jiàn)復(fù)制集中有Majority在線。
b. 自身priority大于0。
c. 自身不為arbiter。
d. 自身opTime不能落后于最新節(jié)點(diǎn)10s以上。
e. 自身存儲(chǔ)的集群程序按信息為最新。
如果所有條件滿足,則將自身添加到主節(jié)點(diǎn)備用列表中,否則,將自身從列表中移除。

檢測(cè)以下條件,若都滿足,將主節(jié)點(diǎn)降為從節(jié)點(diǎn)(如果要降級(jí)的主節(jié)點(diǎn)是自身,直接調(diào)用降級(jí)方法,如果不為自身,調(diào)用replSetStepDown命令將復(fù)制集主節(jié)點(diǎn)降級(jí)為從節(jié)點(diǎn):
    a. 集群中主節(jié)點(diǎn)存在。
    b. "主節(jié)點(diǎn)的備用列表”中存在比當(dāng)前的主節(jié)點(diǎn)priority更高的節(jié)點(diǎn)。
    c. "主節(jié)點(diǎn)的備用列表”中priority最高的節(jié)點(diǎn),其opTime要比其他所有節(jié)點(diǎn)最新的opTime落后10s以內(nèi)。
    d. 檢測(cè)自身是否為主,若為主,且自身無(wú)法看見(jiàn)復(fù)制集的Majority在線,將自身降級(jí)為從。
    e. 如果看不見(jiàn)集群中有主節(jié)點(diǎn)存在,檢測(cè)自身是否在”主節(jié)點(diǎn)的備用列表”,若不在,打印log并退出此流程。
    f. 若自身在”主節(jié)點(diǎn)的備用列表”中,開(kāi)始判斷自身可否向復(fù)制集中發(fā)送選舉自身為主節(jié)點(diǎn)的通知,判斷過(guò)程包含:
         1> 自身是否可以看見(jiàn)復(fù)制集中的Majority在線。
         2>自身是否在”主節(jié)點(diǎn)的備用列表”。

若條件滿足,則設(shè)置”自身已經(jīng)在選舉過(guò)程中”標(biāo)識(shí)位為true,并進(jìn)入”選舉自身為主節(jié)點(diǎn)”方法。
方法中會(huì)驗(yàn)證自身是否滿足以下條件:
a. 此線程拿到了線程鎖。
b. 此節(jié)點(diǎn)沒(méi)有被配置slaveDelay選項(xiàng)或者配置的slaveDelay為0。
c. 此節(jié)點(diǎn)沒(méi)有被配置為arbiter。
若滿足,則調(diào)用環(huán)境檢測(cè),若以下條件被觸發(fā),則不發(fā)送"選舉我為主節(jié)點(diǎn)”投票:
1> 當(dāng)前時(shí)間小于steppedDown的結(jié)束凍結(jié)時(shí)間(為執(zhí)行steppedDown時(shí)的時(shí)間+凍結(jié)設(shè)定時(shí)間,內(nèi)部調(diào)用為60s)。
2> 自己的opTime不是所有節(jié)點(diǎn)最新的。
3> 若有節(jié)點(diǎn)opTime比自己新,直接退出此流程。
如果其他最新的節(jié)點(diǎn)最多與自己一樣新,每有一個(gè)這樣的節(jié)點(diǎn),隨機(jī)sleep一段時(shí)間,之后繼續(xù)判斷。
a. 自己上線5分鐘內(nèi)且復(fù)制集中不是所有節(jié)點(diǎn)在線。
b. 如無(wú)其他問(wèn)題,嘗試獲取自己進(jìn)行投票時(shí)的票數(shù),在此過(guò)程中,會(huì)判斷自己在30s內(nèi)是否進(jìn)行過(guò)投票,如進(jìn)行過(guò),直接退出整個(gè)過(guò)程。
經(jīng)過(guò)以上種種復(fù)雜的檢測(cè),終于可以向復(fù)制集發(fā)送”選舉我為主節(jié)點(diǎn)”的投票。
發(fā)送之后,會(huì)接收來(lái)自所有節(jié)點(diǎn)的投票,若得票數(shù)小于等于一半,不將自己變?yōu)橹鞴?jié)點(diǎn),若超過(guò)一半,設(shè)置自己為主節(jié)點(diǎn)。
投票結(jié)束后,設(shè)置”自身已經(jīng)在選舉過(guò)程中”標(biāo)識(shí)位為false。
可以看到,上面的判斷邏輯有一些是重復(fù)判斷,不過(guò)不影響最終結(jié)果,可能與判斷邏輯較為復(fù)雜有關(guān)系,在每個(gè)決定之前都要驗(yàn)證所有條件是否滿足,防止有條件被漏掉。
在復(fù)制集中的節(jié)點(diǎn)收到其他節(jié)點(diǎn)發(fā)送的”選舉我為主節(jié)點(diǎn)”投票信息時(shí),會(huì)有以下的判斷:
a. 若自身存儲(chǔ)的復(fù)制集配置版本過(guò)低,不投票。
b. 若發(fā)起請(qǐng)求的節(jié)點(diǎn)存儲(chǔ)的復(fù)制集配置版本過(guò)低,投反對(duì)票。
c. 如果自身所在的復(fù)制集沒(méi)有發(fā)起投票的節(jié)點(diǎn),投反對(duì)票。
d. 復(fù)制集中存在主節(jié)點(diǎn),投反對(duì)票。
可參與選舉的節(jié)點(diǎn)中有priority高于請(qǐng)求為主的節(jié)點(diǎn)存在時(shí),投反對(duì)票。
如果所有條件通過(guò),獲取自身的投票數(shù)(同樣會(huì)判斷自身在30s內(nèi)是否參加過(guò)投票,若參加過(guò),不再投票),投出票數(shù)。
需要說(shuō)一下的是,一個(gè)反對(duì)會(huì)將最終票數(shù)減10000,即在絕大多數(shù)情況下,只要有節(jié)點(diǎn)反對(duì),請(qǐng)求的節(jié)點(diǎn)就不能成為主節(jié)點(diǎn)。
選舉過(guò)程很復(fù)雜,實(shí)際使用中總結(jié)為兩點(diǎn):
一般情況下需要5s左右進(jìn)行選主。
如果新選舉出的主節(jié)點(diǎn)立馬掛掉,至少需要30s時(shí)間重新選主。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.rwnh.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前文章:MongoDB副本集主節(jié)點(diǎn)的選舉過(guò)程-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)于:http://www.rwnh.cn/article28/ddcjjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、搜索引擎優(yōu)化、網(wǎng)站設(shè)計(jì)、云服務(wù)器、微信小程序、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司
察雅县| 酒泉市| 平南县| 历史| 临湘市| 广德县| 大港区| 靖西县| 和平区| 乐陵市| 乐都县| 昌图县| 重庆市| 盐亭县| 沅江市| 灵寿县| 四会市| 通化市| 辉县市| 北票市| 新平| 邢台县| 湄潭县| 利川市| 德化县| 定襄县| 嵊州市| 门头沟区| 雅江县| 青岛市| 忻城县| 富蕴县| 虞城县| 南召县| 应用必备| 临泽县| 南投县| 额济纳旗| 青田县| 大埔县| 大埔区|