亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于時(shí)間的節(jié)點(diǎn)選舉方法及裝置與流程

文檔序號(hào):11829140閱讀:195來(lái)源:國(guó)知局
一種基于時(shí)間的節(jié)點(diǎn)選舉方法及裝置與流程

本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種基于時(shí)間的節(jié)點(diǎn)選舉方法及裝置。



背景技術(shù):

隨著信息技術(shù)的發(fā)展,互聯(lián)網(wǎng)可以為用戶提供多元化、海量化的信息,對(duì)于網(wǎng)絡(luò)服務(wù)商而言,傳統(tǒng)的單一服務(wù)器或數(shù)據(jù)庫(kù)等處理設(shè)備,已經(jīng)不能滿足對(duì)海量數(shù)據(jù)進(jìn)行處理的要求,因此分布式系統(tǒng)應(yīng)運(yùn)而生。

通常,分布式系統(tǒng)可以對(duì)其中包含多個(gè)處理設(shè)備(如:服務(wù)器、處理器或者數(shù)據(jù)庫(kù)等),以全局方式對(duì)該系統(tǒng)中的各類數(shù)據(jù)資源進(jìn)行調(diào)度、分布式處理、協(xié)同處理、遠(yuǎn)程控制等多種管理操作。對(duì)于分布式系統(tǒng)中的每一個(gè)處理設(shè)備而言,均可以看作是一個(gè)分布式節(jié)點(diǎn)(簡(jiǎn)稱為節(jié)點(diǎn)),這樣一來(lái),分布式系統(tǒng)便可以將巨量數(shù)據(jù)“分布”到系統(tǒng)中的每一個(gè)節(jié)點(diǎn)中,使得每一個(gè)節(jié)點(diǎn)都對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行處理,從而有效提升對(duì)數(shù)據(jù)的處理效率并顯著增加數(shù)據(jù)的吞吐量。

在分布式系統(tǒng)中,為了進(jìn)一步提升對(duì)不同節(jié)點(diǎn)中的數(shù)據(jù)資源的調(diào)度效率,需要將某些特殊類型的信息統(tǒng)一存儲(chǔ)在同一節(jié)點(diǎn)中,如:元信息(元信息是對(duì)數(shù)據(jù)資源的描述性信息),包括:數(shù)據(jù)的存儲(chǔ)位置、更新?tīng)顟B(tài)、查找關(guān)鍵詞等信息。

現(xiàn)有技術(shù)中,采用節(jié)點(diǎn)選舉的方式,選出合適的節(jié)點(diǎn)(也可稱為leader節(jié)點(diǎn))對(duì)元信息進(jìn)行維護(hù)管理。其中,對(duì)節(jié)點(diǎn)的選舉方式具體為:不同的節(jié)點(diǎn)均會(huì)向其他節(jié)點(diǎn)發(fā)送投票請(qǐng)求,各節(jié)點(diǎn)接收到投票請(qǐng)求后進(jìn)行投票,最后根據(jù)統(tǒng)計(jì)出的票數(shù),選出leader節(jié)點(diǎn)。

但是,采用上述節(jié)點(diǎn)選舉的方式時(shí),不同的節(jié)點(diǎn)均有各自的大量數(shù)據(jù)需要 處理,當(dāng)某一節(jié)點(diǎn)處于空閑并向其他節(jié)點(diǎn)發(fā)送投票請(qǐng)求后,其他的各節(jié)點(diǎn)可能正在處理數(shù)據(jù),那么,其他的節(jié)點(diǎn)即使接收到該節(jié)點(diǎn)發(fā)送的投票請(qǐng)求后,也不會(huì)立即進(jìn)入投票狀態(tài),也就是說(shuō),各節(jié)點(diǎn)對(duì)投票、統(tǒng)計(jì)的時(shí)機(jī)均是不確定,不能及時(shí)有效地進(jìn)行節(jié)點(diǎn)選舉。



技術(shù)實(shí)現(xiàn)要素:

本申請(qǐng)實(shí)施例提供一種基于時(shí)間的節(jié)點(diǎn)選舉方法及裝置,用以解決目前進(jìn)行節(jié)點(diǎn)選舉時(shí)效率較低的問(wèn)題。

本申請(qǐng)實(shí)施例提供的一種基于時(shí)間的節(jié)點(diǎn)選舉方法,所述方法用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),所述方法包括:

主機(jī)為所有節(jié)點(diǎn)配置相同的投票時(shí)間、計(jì)票時(shí)間以及l(fā)eader節(jié)點(diǎn)的任期;

將配置的所述投票時(shí)間、計(jì)票時(shí)間以及l(fā)eader節(jié)點(diǎn)的任期攜帶在時(shí)間配置信息中發(fā)送至各節(jié)點(diǎn),使得各節(jié)點(diǎn)在所述投票時(shí)間內(nèi)進(jìn)行投票,在所述計(jì)票時(shí)間內(nèi)進(jìn)行計(jì)票,并根據(jù)計(jì)票結(jié)果選舉出leader節(jié)點(diǎn),并使得各節(jié)點(diǎn)根據(jù)所述leader節(jié)點(diǎn)的任期進(jìn)行周期性節(jié)點(diǎn)選舉。

本申請(qǐng)實(shí)施例還提供的一種基于時(shí)間的節(jié)點(diǎn)選舉方法,所述方法用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),所述方法包括:

當(dāng)所有節(jié)點(diǎn)中不存在leader節(jié)點(diǎn)時(shí),至少一個(gè)節(jié)點(diǎn)作為競(jìng)選節(jié)點(diǎn),在時(shí)間配置信息所攜帶的投票時(shí)間內(nèi),向所有節(jié)點(diǎn)發(fā)送投票請(qǐng)求;

各競(jìng)選節(jié)點(diǎn)接收其他節(jié)點(diǎn)根據(jù)所述投票請(qǐng)求生成的投票信息;

各競(jìng)選節(jié)點(diǎn)在所述時(shí)間配置信息所攜帶的計(jì)票時(shí)間內(nèi),統(tǒng)計(jì)各自接收到的投票信息的數(shù)量;

各競(jìng)選節(jié)點(diǎn)根據(jù)統(tǒng)計(jì)出的各自的投票信息的數(shù)量確定leader節(jié)點(diǎn),對(duì)指定業(yè)務(wù)進(jìn)行處理。

本申請(qǐng)實(shí)施例還提供的一種基于時(shí)間的節(jié)點(diǎn)選舉方法,所述方法用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),所述方法包括:

當(dāng)所有節(jié)點(diǎn)中不存在leader節(jié)點(diǎn)時(shí),至少兩個(gè)節(jié)點(diǎn)作為投票節(jié)點(diǎn),在時(shí)間配置信息所攜帶的投票時(shí)間內(nèi),接收競(jìng)選節(jié)點(diǎn)發(fā)送的投票請(qǐng)求;

所述投票節(jié)點(diǎn)根據(jù)所述投票請(qǐng)求,在投票時(shí)間內(nèi)生成投票信息發(fā)送至競(jìng)選節(jié)點(diǎn),使得所述競(jìng)選節(jié)點(diǎn)在計(jì)票時(shí)間內(nèi)統(tǒng)計(jì)所述投票信息的數(shù)量,確定leader節(jié)點(diǎn)。

本申請(qǐng)實(shí)施例還提供的一種基于時(shí)間的節(jié)點(diǎn)選舉方法,所述方法用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),所述方法包括:

當(dāng)所有節(jié)點(diǎn)中存在leader節(jié)點(diǎn),且所述leader節(jié)點(diǎn)確定自身符合預(yù)設(shè)標(biāo)準(zhǔn)時(shí),所述leader節(jié)點(diǎn)根據(jù)時(shí)間配置信息中的leader節(jié)點(diǎn)的任期,在投票時(shí)間內(nèi)向所有節(jié)點(diǎn)發(fā)送連任請(qǐng)求;

所述leader節(jié)點(diǎn)接收其他節(jié)點(diǎn)根據(jù)所述連任請(qǐng)求生成的投票信息;

所述leader節(jié)點(diǎn)在計(jì)票時(shí)間內(nèi),統(tǒng)計(jì)接收到的所述投票信息的數(shù)量;

所述leader節(jié)點(diǎn)根據(jù)統(tǒng)計(jì)出的所述投票信息的數(shù)量確定連任狀態(tài),并在成功連任后對(duì)指定業(yè)務(wù)進(jìn)行處理;

其中,所述預(yù)設(shè)標(biāo)準(zhǔn),包括處理負(fù)載標(biāo)準(zhǔn)、數(shù)據(jù)更新程度中的至少一種。

本申請(qǐng)實(shí)施例還提供的一種基于時(shí)間的節(jié)點(diǎn)選舉方法,所述方法用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),所述方法包括:

當(dāng)所有節(jié)點(diǎn)中存在leader節(jié)點(diǎn),且所述leader節(jié)點(diǎn)確定自身不符合預(yù)設(shè)標(biāo)準(zhǔn)時(shí),所述leader節(jié)點(diǎn)根據(jù)時(shí)間配置信息中的leader節(jié)點(diǎn)的任期,在其他節(jié)點(diǎn)中篩選出符合所述預(yù)設(shè)標(biāo)準(zhǔn)的節(jié)點(diǎn),作為繼承節(jié)點(diǎn);

所述leader節(jié)點(diǎn)在所述投票時(shí)段內(nèi),向其他節(jié)點(diǎn)發(fā)出針對(duì)該繼承節(jié)點(diǎn)的投票請(qǐng)求,使得所述繼承節(jié)點(diǎn)接收其他節(jié)點(diǎn)發(fā)送的投票信息,并在計(jì)票時(shí)間內(nèi)統(tǒng)計(jì)所述投票信息的數(shù)量確定為新任leader節(jié)點(diǎn)。

本申請(qǐng)實(shí)施例還提供的一種基于時(shí)間的節(jié)點(diǎn)選舉方法,所述方法用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),所述方法包括:

當(dāng)所有節(jié)點(diǎn)中存在leader節(jié)點(diǎn)時(shí),至少兩個(gè)節(jié)點(diǎn)作為投票節(jié)點(diǎn),在時(shí)間配 置信息中所攜帶的投票時(shí)間內(nèi),接收所述leader節(jié)點(diǎn)發(fā)送的連任請(qǐng)求;

所述投票節(jié)點(diǎn)根據(jù)所述連任請(qǐng)求,在時(shí)間配置信息中所攜帶的投票時(shí)間內(nèi),生成投票信息發(fā)送至所述leader節(jié)點(diǎn),使得所述leader節(jié)點(diǎn)在計(jì)票時(shí)間內(nèi)統(tǒng)計(jì)所述投票信息的數(shù)量確定連任狀態(tài);

并且,所述投票節(jié)點(diǎn)在所述leader節(jié)點(diǎn)的任期內(nèi)接收到的投票請(qǐng)求不進(jìn)行處理。

本申請(qǐng)實(shí)施例還提供的一種基于時(shí)間的節(jié)點(diǎn)選舉方法,所述方法用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),所述方法包括:

當(dāng)所有節(jié)點(diǎn)中存在leader節(jié)點(diǎn)時(shí),至少兩個(gè)節(jié)點(diǎn)作為投票節(jié)點(diǎn),在時(shí)間配置信息中攜帶的投票時(shí)間內(nèi),接收所述leader節(jié)點(diǎn)發(fā)送的針對(duì)繼承節(jié)點(diǎn)的投票請(qǐng)求;

所述投票節(jié)點(diǎn)根據(jù)所述投票請(qǐng)求,在時(shí)間配置信息中所攜帶的投票時(shí)間內(nèi),生成投票信息發(fā)送至所述繼承節(jié)點(diǎn),使得所述繼承節(jié)點(diǎn)在計(jì)票時(shí)間內(nèi)統(tǒng)計(jì)所述投票信息的數(shù)量,確定新任leader節(jié)點(diǎn)。

本申請(qǐng)實(shí)施例提供的一種基于時(shí)間的節(jié)點(diǎn)選舉裝置,所述裝置用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),所述裝置包括:

配置模塊,用于為所有節(jié)點(diǎn)配置相同的投票時(shí)間、計(jì)票時(shí)間以及l(fā)eader節(jié)點(diǎn)的任期;

發(fā)送模塊,用于將配置的所述投票時(shí)間、計(jì)票時(shí)間以及l(fā)eader節(jié)點(diǎn)的任期攜帶在時(shí)間配置信息中發(fā)送至各節(jié)點(diǎn),使得各節(jié)點(diǎn)在所述投票時(shí)間內(nèi)進(jìn)行投票,在所述計(jì)票時(shí)間內(nèi)進(jìn)行計(jì)票,并根據(jù)計(jì)票結(jié)果選舉出leader節(jié)點(diǎn),并使得各節(jié)點(diǎn)根據(jù)所述leader節(jié)點(diǎn)的任期進(jìn)行周期性節(jié)點(diǎn)選舉。

本申請(qǐng)實(shí)施例另提供的一種基于時(shí)間的節(jié)點(diǎn)選舉裝置,所述裝置用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),設(shè)置在競(jìng)選節(jié)點(diǎn)中,且當(dāng)所有節(jié)點(diǎn)中不存在leader節(jié)點(diǎn)時(shí),所述裝置包括:

投票請(qǐng)求模塊,用于在時(shí)間配置信息所攜帶的投票時(shí)間內(nèi),向所有節(jié)點(diǎn)發(fā) 送投票請(qǐng)求;

接收模塊,用于接收其他節(jié)點(diǎn)根據(jù)所述投票請(qǐng)求生成的投票信息;

統(tǒng)計(jì)模塊,用于在所述時(shí)間配置信息所攜帶的計(jì)票時(shí)間內(nèi),統(tǒng)計(jì)各自接收到的投票信息的數(shù)量;

確定模塊,用于根據(jù)統(tǒng)計(jì)出的各自的投票信息的數(shù)量確定leader節(jié)點(diǎn),對(duì)指定業(yè)務(wù)進(jìn)行處理。

本申請(qǐng)實(shí)施例另提供的一種基于時(shí)間的節(jié)點(diǎn)選舉裝置,所述裝置用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),設(shè)置在投票節(jié)點(diǎn)中,且當(dāng)所有節(jié)點(diǎn)中不存在leader節(jié)點(diǎn)時(shí),所述裝置包括:

接收模塊,用于在時(shí)間配置信息所攜帶的投票時(shí)間內(nèi),接收競(jìng)選節(jié)點(diǎn)發(fā)送的投票請(qǐng)求;

投票信息模塊,用于根據(jù)所述投票請(qǐng)求,在投票時(shí)間內(nèi)生成投票信息發(fā)送至競(jìng)選節(jié)點(diǎn),使得所述競(jìng)選節(jié)點(diǎn)在計(jì)票時(shí)間內(nèi)統(tǒng)計(jì)所述投票信息的數(shù)量,確定leader節(jié)點(diǎn)。

本申請(qǐng)實(shí)施例另提供的一種基于時(shí)間的節(jié)點(diǎn)選舉裝置,所述裝置用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),設(shè)置在leader節(jié)點(diǎn)中,當(dāng)所有節(jié)點(diǎn)中包含leader節(jié)點(diǎn),且所述leader節(jié)點(diǎn)確定自身符合預(yù)設(shè)標(biāo)準(zhǔn)時(shí),所述裝置包括:

連任請(qǐng)求模塊,用于根據(jù)時(shí)間配置信息中的leader節(jié)點(diǎn)的任期,在投票時(shí)間內(nèi)向所有節(jié)點(diǎn)發(fā)送連任請(qǐng)求;

接收模塊,用于接收其他節(jié)點(diǎn)根據(jù)所述連任請(qǐng)求生成的投票信息;

統(tǒng)計(jì)模塊,用于在計(jì)票時(shí)間內(nèi),統(tǒng)計(jì)接收到的所述投票信息的數(shù)量;

確定模塊,用于根據(jù)統(tǒng)計(jì)出的所述投票信息的數(shù)量確定連任狀態(tài),并在成功連任后對(duì)指定業(yè)務(wù)進(jìn)行處理;

其中,所述預(yù)設(shè)標(biāo)準(zhǔn),包括處理負(fù)載標(biāo)準(zhǔn)、數(shù)據(jù)更新程度中的至少一種。

本申請(qǐng)實(shí)施例另提供的一種基于時(shí)間的節(jié)點(diǎn)選舉裝置,所述裝置用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),設(shè)置在leader節(jié)點(diǎn)中,當(dāng)所有節(jié)點(diǎn)中包含leader節(jié) 點(diǎn),且所述leader節(jié)點(diǎn)確定自身不符合預(yù)設(shè)標(biāo)準(zhǔn)時(shí),所述裝置包括:

篩選模塊,用于根據(jù)時(shí)間配置信息中的leader節(jié)點(diǎn)的任期,在其他節(jié)點(diǎn)中篩選出符合所述預(yù)設(shè)標(biāo)準(zhǔn)的節(jié)點(diǎn),作為繼承節(jié)點(diǎn);

投票請(qǐng)求模塊,用于在所述投票時(shí)段內(nèi),向其他節(jié)點(diǎn)發(fā)出針對(duì)該繼承節(jié)點(diǎn)的投票請(qǐng)求,使得所述繼承節(jié)點(diǎn)接收其他節(jié)點(diǎn)發(fā)送的投票信息,并在計(jì)票時(shí)間內(nèi)統(tǒng)計(jì)所述投票信息的數(shù)量確定為新任leader節(jié)點(diǎn)。

本申請(qǐng)實(shí)施例另提供的一種基于時(shí)間的節(jié)點(diǎn)選舉裝置,所述裝置用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),設(shè)置在投票節(jié)點(diǎn)中,當(dāng)所有節(jié)點(diǎn)中包含leader節(jié)點(diǎn)時(shí),所述裝置包括:

接收模塊,用于在時(shí)間配置信息中所攜帶的投票時(shí)間內(nèi),接收所述leader節(jié)點(diǎn)發(fā)送的連任請(qǐng)求;

投票信息模塊,用于根據(jù)所述連任請(qǐng)求,在時(shí)間配置信息中所攜帶的投票時(shí)間內(nèi),生成投票信息發(fā)送至所述leader節(jié)點(diǎn),使得所述leader節(jié)點(diǎn)在計(jì)票時(shí)間內(nèi)統(tǒng)計(jì)所述投票信息的數(shù)量確定連任狀態(tài)。

本申請(qǐng)實(shí)施例另提供的一種基于時(shí)間的節(jié)點(diǎn)選舉裝置,所述裝置用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),設(shè)置在投票節(jié)點(diǎn)中,當(dāng)所有節(jié)點(diǎn)中存在leader節(jié)點(diǎn)時(shí),所述裝置包括:

接收模塊,用于在時(shí)間配置信息中攜帶的投票時(shí)間內(nèi),接收所述leader節(jié)點(diǎn)發(fā)送的針對(duì)繼承節(jié)點(diǎn)的投票請(qǐng)求;

投票信息模塊,用于根據(jù)所述投票請(qǐng)求,在時(shí)間配置信息中所攜帶的投票時(shí)間內(nèi),生成投票信息發(fā)送至所述繼承節(jié)點(diǎn),使得所述繼承節(jié)點(diǎn)在計(jì)票時(shí)間內(nèi)統(tǒng)計(jì)所述投票信息的數(shù)量,確定新任leader節(jié)點(diǎn),并用于對(duì)在所述leader節(jié)點(diǎn)的任期內(nèi)接收到的投票請(qǐng)求不進(jìn)行處理。

本申請(qǐng)實(shí)施例提供一種基于時(shí)間的節(jié)點(diǎn)選舉方法及裝置,通過(guò)本方法,主機(jī)為所有節(jié)點(diǎn)配置相同的投票時(shí)間和計(jì)票時(shí)間,將配置的所述投票時(shí)間和計(jì)票時(shí)間攜帶在時(shí)間配置信息中發(fā)送至各節(jié)點(diǎn),使得各節(jié)點(diǎn)在所述投票時(shí)間內(nèi)進(jìn)行 投票,在所述計(jì)票時(shí)間內(nèi)進(jìn)行計(jì)票,并根據(jù)計(jì)票結(jié)果選舉出leader節(jié)點(diǎn)。各競(jìng)選節(jié)點(diǎn)根據(jù)主機(jī)配置的相同的投票時(shí)間和計(jì)票時(shí)間,同步執(zhí)行投票操作和計(jì)票操作,改善了現(xiàn)有技術(shù)中各節(jié)點(diǎn)投票、計(jì)票時(shí)機(jī)不能確定的缺陷,從而使得對(duì)節(jié)點(diǎn)的選舉過(guò)程中,極大提升了確定leader節(jié)點(diǎn)的效率。

附圖說(shuō)明

此處所說(shuō)明的附圖用來(lái)提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說(shuō)明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:

圖1、圖2,以及圖5至圖9為本申請(qǐng)實(shí)施例提供的基于時(shí)間的節(jié)點(diǎn)選舉過(guò)程;

圖3a至3d為本申請(qǐng)實(shí)施例提供的投票時(shí)間和計(jì)票時(shí)間的示意圖;

圖4為本申請(qǐng)實(shí)施例提供的具體應(yīng)用實(shí)例中各節(jié)點(diǎn)發(fā)送投票信息進(jìn)行節(jié)點(diǎn)選舉的示意圖;

圖10至圖16為本申請(qǐng)實(shí)施例提供的基于時(shí)間的節(jié)點(diǎn)選舉裝置結(jié)構(gòu)示意圖。

具體實(shí)施方式

為使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請(qǐng)具體實(shí)施例及相應(yīng)的附圖對(duì)本申請(qǐng)技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。

圖1為本申請(qǐng)實(shí)施例提供的基于時(shí)間的節(jié)點(diǎn)選舉方法,該方法用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),該方法具體包括以下步驟:

S101,主機(jī)為所有節(jié)點(diǎn)配置相同的投票時(shí)間、計(jì)票時(shí)間以及l(fā)eader節(jié)點(diǎn)的任期。

在本申請(qǐng)實(shí)施例中,分布式系統(tǒng)中設(shè)置有主機(jī),用于對(duì)該分布式系統(tǒng)中的各節(jié)點(diǎn)進(jìn)行管理,如:調(diào)度數(shù)據(jù)、配置數(shù)據(jù)、發(fā)出特定指令等。其中,所述主機(jī)包括但不限于:計(jì)算機(jī)、服務(wù)器等具有監(jiān)控功能的網(wǎng)絡(luò)設(shè)備。

考慮到現(xiàn)有技術(shù)中,處于分布式系統(tǒng)中的各節(jié)點(diǎn)在進(jìn)行節(jié)點(diǎn)選舉時(shí),不同節(jié)點(diǎn)發(fā)出投票請(qǐng)求,以及對(duì)該投票請(qǐng)求進(jìn)行響應(yīng)的時(shí)機(jī)均不確定,因此,在本發(fā)明實(shí)施例中,將通過(guò)分布式系統(tǒng)中的主機(jī),對(duì)處于該分布式系統(tǒng)中的所述各節(jié)點(diǎn)進(jìn)行時(shí)間配置,使得各節(jié)點(diǎn)在相同的時(shí)間中進(jìn)行同類型的處理操作。也即,在上述步驟S101中,由主機(jī)為不同的節(jié)點(diǎn)配置相同的投票時(shí)間和計(jì)票時(shí)間。

其中,本申請(qǐng)實(shí)施例中的投票時(shí)間和計(jì)票時(shí)間均是一段時(shí)間區(qū)間(并非是某時(shí)刻的時(shí)間點(diǎn)),投票時(shí)間和計(jì)票時(shí)間的時(shí)間區(qū)間的長(zhǎng)度(時(shí)長(zhǎng)),包括但不限于:毫秒(ms)、秒(s)、分鐘(min)、小時(shí)(h)、天(D)、星期(week)、月(mon)等不同時(shí)間單位構(gòu)成的時(shí)長(zhǎng)。

另外,主機(jī)還將為所有節(jié)點(diǎn)配置leader節(jié)點(diǎn)的任期,當(dāng)任一節(jié)點(diǎn)選舉為leader節(jié)點(diǎn)且經(jīng)過(guò)了配置好的任期后,則開(kāi)始下一次的節(jié)點(diǎn)選舉過(guò)程。

S102,將配置的所述投票時(shí)間、計(jì)票時(shí)間以及l(fā)eader節(jié)點(diǎn)的任期攜帶在時(shí)間配置信息中發(fā)送至各節(jié)點(diǎn),使得各節(jié)點(diǎn)在所述投票時(shí)間內(nèi)進(jìn)行投票,在所述計(jì)票時(shí)間內(nèi)進(jìn)行計(jì)票,并根據(jù)計(jì)票結(jié)果選舉出leader節(jié)點(diǎn),并使得各節(jié)點(diǎn)根據(jù)所述leader節(jié)點(diǎn)的任期進(jìn)行周期性節(jié)點(diǎn)選舉。

主機(jī)配置完成投票時(shí)間、計(jì)票時(shí)間以及l(fā)eader節(jié)點(diǎn)的任期后,就需要通知各節(jié)點(diǎn),以便使各節(jié)點(diǎn)按照配置的投票時(shí)間、計(jì)票時(shí)間以及l(fā)eader節(jié)點(diǎn)的任期執(zhí)行相應(yīng)的操作,因此,主機(jī)會(huì)將配置好的投票時(shí)間、計(jì)票時(shí)間以及l(fā)eader節(jié)點(diǎn)的任期攜帶在時(shí)間配置信息中,發(fā)送至各節(jié)點(diǎn)。這樣一來(lái),當(dāng)各節(jié)點(diǎn)分別接收到時(shí)間配置信息后,則各節(jié)點(diǎn)會(huì)根據(jù)接收到的時(shí)間配置信息,調(diào)整自身的內(nèi)置時(shí)鐘,實(shí)現(xiàn)不同的節(jié)點(diǎn)均同步觸發(fā)所述投票時(shí)間和計(jì)票時(shí)間,以便同步執(zhí)行相應(yīng)的操作。

這里還需要說(shuō)明的是,主機(jī)配置的投票時(shí)間、計(jì)票時(shí)間以及l(fā)eader節(jié)點(diǎn)的 任期具有周期性。這是因?yàn)椋寒?dāng)各節(jié)點(diǎn)根據(jù)主機(jī)配置的投票時(shí)間和計(jì)票時(shí)間分別進(jìn)行投票和計(jì)票操作,確定出leader節(jié)點(diǎn)之后,各節(jié)點(diǎn)與leader節(jié)點(diǎn)將對(duì)相應(yīng)的業(yè)務(wù)進(jìn)行處理,而由于實(shí)際應(yīng)用中,分布式系統(tǒng)處理的數(shù)據(jù)量巨大,會(huì)使得leader節(jié)點(diǎn)和其他各節(jié)點(diǎn)的處理負(fù)載、數(shù)據(jù)更新程度發(fā)生變化,就有可能導(dǎo)致leader節(jié)點(diǎn)出現(xiàn)負(fù)荷超標(biāo)、數(shù)據(jù)更新滯后、宕機(jī)等情況,從而嚴(yán)重影響leader節(jié)點(diǎn)對(duì)指定業(yè)務(wù)的處理效率。在這樣的情況下,若主機(jī)配置的投票時(shí)間、計(jì)票時(shí)間以及l(fā)eader節(jié)點(diǎn)的任期不具有周期性(也即,分布式系統(tǒng)中的各節(jié)點(diǎn)只進(jìn)行一次節(jié)點(diǎn)選舉的過(guò)程,在leader節(jié)點(diǎn)出現(xiàn)故障后,各節(jié)點(diǎn)不會(huì)進(jìn)行節(jié)點(diǎn)選舉),那么,就會(huì)導(dǎo)致分布式系統(tǒng)整體處理停滯。若要重新進(jìn)行節(jié)點(diǎn)選舉,只能等待主機(jī)重新配置投票時(shí)間和計(jì)票時(shí)間,也會(huì)造成分布式系統(tǒng)對(duì)業(yè)務(wù)處理的效率下降。

因此,在本申請(qǐng)實(shí)施例中,由主機(jī)配置的投票時(shí)間、計(jì)票時(shí)間以及l(fā)eader節(jié)點(diǎn)的任期將周期性的重復(fù)。例如:投票時(shí)間的間隔周期為3000ms,也就是說(shuō),當(dāng)?shù)谝淮瓮镀睍r(shí)間結(jié)束的3000ms后,將進(jìn)入第二次投票時(shí)間。又例如:leader節(jié)點(diǎn)的任期為10min,也即,當(dāng)某一節(jié)點(diǎn)選舉為leader節(jié)點(diǎn)并持續(xù)10min后,開(kāi)始進(jìn)行下一次節(jié)點(diǎn)選舉過(guò)程。當(dāng)然,在實(shí)際應(yīng)用時(shí),投票時(shí)間和計(jì)票時(shí)間的時(shí)間周期將根據(jù)實(shí)際應(yīng)用的需要進(jìn)行調(diào)整或設(shè)置,這里并不構(gòu)成對(duì)本申請(qǐng)的限定。

采用上述步驟S101~S102的方法,主機(jī)為分布式系統(tǒng)中各自獨(dú)立的各節(jié)點(diǎn)配置相同的時(shí)間,使得這些節(jié)點(diǎn)可以在相同的時(shí)間中執(zhí)行相應(yīng)的投票、計(jì)票操作,也使得原本時(shí)間異步的各節(jié)點(diǎn)可以同步執(zhí)行同一類型的操作,有效提升了對(duì)leader節(jié)點(diǎn)進(jìn)行選舉的效率。

在本申請(qǐng)實(shí)施例中,在上述主機(jī)配置了相同的投票時(shí)間、計(jì)票時(shí)間以及l(fā)eader節(jié)點(diǎn)的任期后,不同的節(jié)點(diǎn)將根據(jù)相應(yīng)的時(shí)間配置信息執(zhí)行相應(yīng)的投票或計(jì)票操作,具體地,對(duì)于分布式系統(tǒng)中的節(jié)點(diǎn)而言,本申請(qǐng)實(shí)施例中提供了一種基于時(shí)間的節(jié)點(diǎn)選舉方法,如圖2所示,所述方法包括步驟:

S201,當(dāng)所有節(jié)點(diǎn)中不存在leader節(jié)點(diǎn)時(shí),至少一個(gè)節(jié)點(diǎn)作為競(jìng)選節(jié)點(diǎn),在時(shí)間配置信息所攜帶的投票時(shí)間內(nèi),向所有節(jié)點(diǎn)發(fā)送投票請(qǐng)求。

當(dāng)分布式系統(tǒng)進(jìn)行維護(hù)、更新等狀態(tài)之后,該分布式系統(tǒng)中的各節(jié)點(diǎn)中不存在leader節(jié)點(diǎn),此時(shí),各節(jié)點(diǎn)將選舉出leader節(jié)點(diǎn)。考慮到在實(shí)際應(yīng)用場(chǎng)景中,最少在兩個(gè)節(jié)點(diǎn)的情況下,便可以進(jìn)行節(jié)點(diǎn)選舉,在節(jié)點(diǎn)選舉時(shí),可由一個(gè)節(jié)點(diǎn)發(fā)出投票請(qǐng)求(投票請(qǐng)求發(fā)送給該節(jié)點(diǎn)自身以及另一個(gè)節(jié)點(diǎn)),故在本申請(qǐng)實(shí)施例的上述步驟S201中,將有至少兩個(gè)節(jié)點(diǎn)作為競(jìng)選節(jié)點(diǎn)進(jìn)行投票。當(dāng)然,在實(shí)際應(yīng)用場(chǎng)景中,在有多個(gè)節(jié)點(diǎn)的情況下,各節(jié)點(diǎn)均會(huì)作為競(jìng)選節(jié)點(diǎn),向其他節(jié)點(diǎn)發(fā)送投票請(qǐng)求。

與現(xiàn)有技術(shù)不同的是,在本申請(qǐng)實(shí)施例中,競(jìng)選節(jié)點(diǎn)將按照主機(jī)所配置完成的投票時(shí)間進(jìn)行投票,也即,競(jìng)選節(jié)點(diǎn)將根據(jù)主機(jī)發(fā)送的時(shí)間配置信息,對(duì)自身的內(nèi)置時(shí)鐘信號(hào)進(jìn)行配置,當(dāng)競(jìng)選節(jié)點(diǎn)中內(nèi)置的時(shí)鐘到達(dá)配置的投票時(shí)間時(shí),則該競(jìng)選節(jié)點(diǎn)將執(zhí)行發(fā)送投票請(qǐng)求的操作。

其中,所述投票請(qǐng)求中包含有該競(jìng)選節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)、節(jié)點(diǎn)狀態(tài)等節(jié)點(diǎn)信息,以反映出該競(jìng)選節(jié)點(diǎn)的數(shù)據(jù)處理能力、數(shù)據(jù)更新程度等多種節(jié)點(diǎn)狀態(tài),以便與其他節(jié)點(diǎn)進(jìn)行投票選擇。

S202,各競(jìng)選節(jié)點(diǎn)接收其他節(jié)點(diǎn)根據(jù)所述投票請(qǐng)求生成的投票信息。

當(dāng)其他節(jié)點(diǎn)接收到所述競(jìng)選節(jié)點(diǎn)發(fā)送的投票請(qǐng)求后,就會(huì)根據(jù)所述投票請(qǐng)求,生成相應(yīng)的投票信息,并發(fā)送至對(duì)應(yīng)的競(jìng)選節(jié)點(diǎn)中。

當(dāng)然,上述步驟S202中,各競(jìng)選節(jié)點(diǎn)接收投票信息的過(guò)程,也在投票時(shí)間內(nèi)。

S203,各競(jìng)選節(jié)點(diǎn)在所述時(shí)間配置信息所攜帶的計(jì)票時(shí)間內(nèi),統(tǒng)計(jì)各自接收到的投票信息的數(shù)量。

在本申請(qǐng)實(shí)施例中,各競(jìng)選節(jié)點(diǎn)將根據(jù)從主機(jī)接收到的時(shí)間配置信息,對(duì)自身內(nèi)置的時(shí)鐘進(jìn)行配置,當(dāng)競(jìng)選節(jié)點(diǎn)中的時(shí)鐘到達(dá)配置的計(jì)票時(shí)間時(shí),競(jìng)選節(jié)點(diǎn)將進(jìn)行計(jì)票操作。

S204,各競(jìng)選節(jié)點(diǎn)根據(jù)統(tǒng)計(jì)出的各自的投票信息的數(shù)量確定leader節(jié)點(diǎn),對(duì)指定業(yè)務(wù)進(jìn)行處理。

對(duì)于步驟S204而言,各競(jìng)選節(jié)點(diǎn)確定出leader節(jié)點(diǎn)的過(guò)程,將在計(jì)票時(shí)間結(jié)束之前完成。并且,某一競(jìng)選節(jié)點(diǎn)確定為leader節(jié)點(diǎn)后,該leader節(jié)點(diǎn)將會(huì)向其他節(jié)點(diǎn)發(fā)送通知消息,以告知其他節(jié)點(diǎn)leader節(jié)點(diǎn)已經(jīng)產(chǎn)生。該leader節(jié)點(diǎn)將對(duì)指定的業(yè)務(wù)進(jìn)行處理,如:對(duì)分布式系統(tǒng)中的元數(shù)據(jù)進(jìn)行維護(hù)管理等。

需要說(shuō)明的是,在本申請(qǐng)實(shí)施例中,最終確定出的leader節(jié)點(diǎn)是唯一的,這樣一來(lái),通過(guò)一個(gè)leader節(jié)點(diǎn)實(shí)現(xiàn)對(duì)指定業(yè)務(wù)進(jìn)行處理,可以增加對(duì)指定業(yè)務(wù)的調(diào)取、分配、處理的效率,同時(shí),也可以避免因多個(gè)leader節(jié)點(diǎn)爭(zhēng)搶處理指定業(yè)務(wù),而導(dǎo)致業(yè)務(wù)沖突的情況。

通過(guò)上述步驟,各競(jìng)選節(jié)點(diǎn)根據(jù)主機(jī)配置的相同的投票時(shí)間和計(jì)票時(shí)間,同步執(zhí)行投票操作和計(jì)票操作,改善了現(xiàn)有技術(shù)中各節(jié)點(diǎn)投票、計(jì)票時(shí)機(jī)不能確定的缺陷,從而使得對(duì)節(jié)點(diǎn)的選舉過(guò)程中,極大提升了確定leader節(jié)點(diǎn)的效率。

需要說(shuō)明的是,在本申請(qǐng)實(shí)施例中,主機(jī)所配置的投票時(shí)間和計(jì)票時(shí)間不會(huì)發(fā)生重疊,使得分布式系統(tǒng)中的各節(jié)點(diǎn)只在在投票時(shí)間內(nèi)進(jìn)行投票操作,并只在計(jì)票時(shí)間內(nèi)進(jìn)行計(jì)票操作。例如:如圖3a所示的情況下,競(jìng)選節(jié)點(diǎn)根據(jù)時(shí)間配置信息,對(duì)該競(jìng)選自身內(nèi)置的時(shí)鐘配置相應(yīng)的投票時(shí)間和計(jì)票時(shí)間。也即,在圖3a中,在1000ms至2000ms的時(shí)間內(nèi)為投票時(shí)間,在3500ms至4500ms的時(shí)間內(nèi)為計(jì)票時(shí)間。也就是說(shuō),當(dāng)競(jìng)選節(jié)點(diǎn)內(nèi)置的時(shí)鐘到達(dá)1000ms時(shí),各競(jìng)選節(jié)點(diǎn)進(jìn)入投票時(shí)間,并向其他節(jié)點(diǎn)發(fā)送投票信息,并且在時(shí)長(zhǎng)為1000ms的投票時(shí)間內(nèi),接收其他節(jié)點(diǎn)發(fā)送的投票信息。并在時(shí)鐘到達(dá)2000ms時(shí),停止投票。同樣地,在計(jì)票時(shí)間(3500ms至4500ms)內(nèi),競(jìng)選節(jié)點(diǎn)將統(tǒng)計(jì)接收到的投票信息。而在時(shí)鐘到達(dá)4500ms時(shí),各競(jìng)選節(jié)點(diǎn)停止計(jì)票,并根據(jù)統(tǒng)計(jì)出的投票信息的數(shù)量,確定出leader節(jié)點(diǎn)。這樣的方式保證了不同的競(jìng)選節(jié)點(diǎn)在不同的配置時(shí)間內(nèi),同步執(zhí)行不同的操作。

而在如圖3b所示的情況下,由主機(jī)配置的投票時(shí)間和計(jì)票時(shí)間之間沒(méi)有時(shí)間間隔。也就是說(shuō),對(duì)于各競(jìng)選節(jié)點(diǎn)而言,當(dāng)時(shí)鐘到達(dá)2000ms時(shí),將投票狀態(tài)直接轉(zhuǎn)換為計(jì)票狀態(tài)。

但是,在如圖3b所示的情況下,節(jié)點(diǎn)之間發(fā)送投票信息需要消耗一定的時(shí)間,例如:假設(shè)某一節(jié)點(diǎn)將生成的投票信息發(fā)送至某競(jìng)選節(jié)點(diǎn)中需要耗費(fèi)10ms,此時(shí),在該投票信息傳輸?shù)倪^(guò)程中,競(jìng)選節(jié)點(diǎn)的時(shí)鐘已到達(dá)2000ms,也就是說(shuō),該競(jìng)選節(jié)點(diǎn)進(jìn)入計(jì)票狀態(tài)。若該競(jìng)選節(jié)點(diǎn)已經(jīng)進(jìn)入計(jì)票狀態(tài)后,又接收到該投票信息,那么,在該競(jìng)選節(jié)點(diǎn)對(duì)投票信息進(jìn)行統(tǒng)計(jì)時(shí),將影響最終統(tǒng)計(jì)的投票信息的數(shù)量的準(zhǔn)確性。

因此,在本申請(qǐng)實(shí)施例中,在所述競(jìng)選節(jié)點(diǎn)在計(jì)票時(shí)間內(nèi),統(tǒng)計(jì)接收到的所述投票信息之間,還包括:所述競(jìng)選節(jié)點(diǎn)在所述計(jì)票時(shí)間到來(lái)時(shí),停止接收所述投票信息。

通過(guò)這樣的方式,在如圖3b所示的時(shí)間配置的情況下,當(dāng)競(jìng)選節(jié)點(diǎn)的時(shí)鐘到達(dá)2000ms進(jìn)入計(jì)票狀態(tài)時(shí),該競(jìng)選節(jié)點(diǎn)將停止接收其他節(jié)點(diǎn)發(fā)送的投票信息。從而,這樣的方式將保證對(duì)統(tǒng)計(jì)出的投票信息的數(shù)量的準(zhǔn)確性。

另外,在本申請(qǐng)實(shí)施例中,考慮到各競(jìng)選節(jié)點(diǎn)對(duì)其接收到的投票信息進(jìn)行統(tǒng)計(jì)確定leader節(jié)點(diǎn)時(shí),各競(jìng)選節(jié)點(diǎn)均是獨(dú)立統(tǒng)計(jì)各自的投票信息的數(shù)量,為了保證競(jìng)選節(jié)點(diǎn)可以根據(jù)統(tǒng)計(jì)出的投票信息直接確定出自身是否成為leader節(jié)點(diǎn),那么,就可以預(yù)先設(shè)置閾值,并根據(jù)該閾值和統(tǒng)計(jì)出的投票信息的數(shù)量,來(lái)確定競(jìng)選節(jié)點(diǎn)是否可以成為leader節(jié)點(diǎn)。

因此,在本申請(qǐng)實(shí)施例中,上述步驟S204中,各競(jìng)選節(jié)點(diǎn)根據(jù)統(tǒng)計(jì)出的各自的投票信息的數(shù)量確定leader節(jié)點(diǎn),具體為:當(dāng)所述競(jìng)選節(jié)點(diǎn)判斷統(tǒng)計(jì)出的所述投票信息的數(shù)量,超過(guò)預(yù)設(shè)的閾值時(shí),該競(jìng)選節(jié)點(diǎn)將自身確定為leader節(jié)點(diǎn)。其中,所述閾值為所有節(jié)點(diǎn)數(shù)量的二分之一。

這里需要說(shuō)明的是,分布式系統(tǒng)中的每一節(jié)點(diǎn),均已知處于該分布式系統(tǒng)中的所有節(jié)點(diǎn)的總數(shù)(作為本申請(qǐng)的一種方式,可由主機(jī)將分布式系統(tǒng)中的節(jié) 點(diǎn)總數(shù)分別發(fā)送給各節(jié)點(diǎn)),從而,當(dāng)某一節(jié)點(diǎn)的投票信息的數(shù)量超過(guò)所有節(jié)點(diǎn)數(shù)據(jù)量的二分之一時(shí),那么,就可以唯一確定出該節(jié)點(diǎn)為leader節(jié)點(diǎn)。

例如:如圖4所示,分布式系統(tǒng)中包含6個(gè)節(jié)點(diǎn),即,節(jié)點(diǎn)A~F。

在投票時(shí)間內(nèi),分布式系統(tǒng)中的6個(gè)節(jié)點(diǎn)均作為競(jìng)選節(jié)點(diǎn),均向其他節(jié)點(diǎn)發(fā)送投票請(qǐng)求(發(fā)送投票請(qǐng)求的過(guò)程并未在圖4中示出),并接收投票信息。假設(shè)在本示例中,各節(jié)點(diǎn)均可成功接收到投票請(qǐng)求,并且,各節(jié)點(diǎn)不向自身發(fā)送投票請(qǐng)求。

那么,對(duì)于這6個(gè)節(jié)點(diǎn)而言,每一個(gè)節(jié)點(diǎn)都會(huì)向除自身以外的各節(jié)點(diǎn)發(fā)送投票請(qǐng)求(實(shí)際應(yīng)用中,節(jié)點(diǎn)也會(huì)向自身發(fā)出投票請(qǐng)求,本例中為了方便描述,只假設(shè)各節(jié)點(diǎn)向除自身以外的其他節(jié)點(diǎn)發(fā)送投票請(qǐng)求的情況),具體來(lái)說(shuō),對(duì)于節(jié)點(diǎn)A而言,節(jié)點(diǎn)A向另外5個(gè)節(jié)點(diǎn)(節(jié)點(diǎn)B~節(jié)點(diǎn)F)發(fā)送投票請(qǐng)求。同樣地,節(jié)點(diǎn)B~節(jié)點(diǎn)G也向除自身之外的5個(gè)節(jié)點(diǎn)發(fā)送投票請(qǐng)求。使得接收到投票請(qǐng)求的各節(jié)點(diǎn)生成投票信息發(fā)送至相應(yīng)的競(jìng)選節(jié)

從而在本示例中,對(duì)于各節(jié)點(diǎn)而言,均可確定參與投票的節(jié)點(diǎn)的數(shù)量為6。且設(shè)置閾值為3。

假設(shè)如圖4所示,節(jié)點(diǎn)A將生成的投票信息發(fā)送給節(jié)點(diǎn)B。節(jié)點(diǎn)B將生成的投票信息發(fā)送給節(jié)點(diǎn)C。節(jié)點(diǎn)C、節(jié)點(diǎn)D、節(jié)點(diǎn)E、節(jié)點(diǎn)F均將各自生成的投票信息發(fā)送給節(jié)點(diǎn)A。

在計(jì)票時(shí)間內(nèi),各節(jié)點(diǎn)將統(tǒng)計(jì)其自身所接收到的投票信息的數(shù)量,具體地,節(jié)點(diǎn)A統(tǒng)計(jì)出其接收到的投票信息的數(shù)量為4,節(jié)點(diǎn)B統(tǒng)計(jì)出其接收到的投票信息的數(shù)量為1,節(jié)點(diǎn)C統(tǒng)計(jì)出其接收到的投票信息的數(shù)量為1,其余節(jié)點(diǎn)中的投票信息的數(shù)量為0。

節(jié)點(diǎn)A中的投票信息的數(shù)量大于預(yù)設(shè)的閾值,因此,節(jié)點(diǎn)A可以確定其自身為leader節(jié)點(diǎn)。之后,該節(jié)點(diǎn)A向其他節(jié)點(diǎn)發(fā)送廣播,以通知其他節(jié)點(diǎn)該節(jié)點(diǎn)A已成為leader節(jié)點(diǎn)。

但是,在實(shí)際應(yīng)用中,由于節(jié)點(diǎn)選舉的過(guò)程是各節(jié)點(diǎn)“自主”進(jìn)行投票, 就有可能出現(xiàn)各競(jìng)選節(jié)點(diǎn)所接收到的投票信息的數(shù)量,均未超過(guò)預(yù)設(shè)閾值的情況。沿用上例:假設(shè)節(jié)點(diǎn)F所生成的投票信息并未發(fā)送給節(jié)點(diǎn)A,而是發(fā)送給節(jié)點(diǎn)C,這樣一來(lái),節(jié)點(diǎn)A中的投票信息的數(shù)量為3,節(jié)點(diǎn)B中的投票信息的數(shù)量為1,節(jié)點(diǎn)C中的投票信息的數(shù)量為2,顯然,這三個(gè)節(jié)點(diǎn)中的投票信息的數(shù)量均為超過(guò)預(yù)設(shè)閾值(也即,3)。從而,不會(huì)有節(jié)點(diǎn)將自身確定為leader節(jié)點(diǎn),也就是說(shuō),各節(jié)點(diǎn)在指定的一段時(shí)長(zhǎng)內(nèi),均未接收到leader節(jié)點(diǎn)的通知消息,這就表明本次節(jié)點(diǎn)選舉并未能選舉出leader節(jié)點(diǎn)。

在本申請(qǐng)實(shí)施例中,一旦出現(xiàn)未能選舉出leader節(jié)點(diǎn)的情況,各節(jié)點(diǎn)會(huì)立即重新進(jìn)行節(jié)點(diǎn)選舉的過(guò)程,直到確定出leader節(jié)點(diǎn)。

結(jié)合上述示例,作為本申請(qǐng)實(shí)施例的一種優(yōu)選方式,主機(jī)為各節(jié)點(diǎn)配置的投票時(shí)間和計(jì)票時(shí)間具有周期性,并且計(jì)票時(shí)間可以更具體地劃分為不同的子時(shí)間。如圖3c所示,針對(duì)一個(gè)周期的投票時(shí)間和計(jì)票時(shí)間而言,計(jì)票時(shí)間具體分為統(tǒng)計(jì)時(shí)間和通知時(shí)間。那么,各節(jié)點(diǎn)在統(tǒng)計(jì)時(shí)間內(nèi)統(tǒng)計(jì)各自接收的投票信息的數(shù)量,若在通知時(shí)間內(nèi),各節(jié)點(diǎn)未接收到任何leader節(jié)點(diǎn)的通知,則會(huì)進(jìn)行下一次的節(jié)點(diǎn)選舉。

如圖3d所示,本申請(qǐng)實(shí)施例中由主機(jī)分配的多次選舉時(shí)間(每一次選舉時(shí)間包括投票時(shí)間和計(jì)票時(shí)間)具有周期性。當(dāng)在第一次選舉時(shí)間內(nèi),各節(jié)點(diǎn)未確定出leader節(jié)點(diǎn)的情況下,將在第二次選舉時(shí)間內(nèi)再次進(jìn)行節(jié)點(diǎn)選舉的過(guò)程,直到選舉出leader節(jié)點(diǎn)。當(dāng)然,選舉出leader節(jié)點(diǎn)后,則會(huì)按照時(shí)間配置信息中的leader節(jié)點(diǎn)的任期,周期性的進(jìn)行節(jié)點(diǎn)選舉的過(guò)程,其具體過(guò)程將在后續(xù)進(jìn)行詳細(xì)描述,在此不作過(guò)多贅述。

上述如圖2所示的方法S201~S204,是基于競(jìng)選節(jié)點(diǎn)向其他節(jié)點(diǎn)發(fā)送投票請(qǐng)求,并接收投票信息以確定leader節(jié)點(diǎn)的過(guò)程。對(duì)于分布式系統(tǒng)中的各節(jié)點(diǎn),也可作為投票節(jié)點(diǎn),接收競(jìng)選節(jié)點(diǎn)發(fā)出的投票請(qǐng)求,并根據(jù)投票請(qǐng)求生成相應(yīng)的投票信息(即使對(duì)于競(jìng)選節(jié)點(diǎn)而言,也會(huì)接收到其他競(jìng)選節(jié)點(diǎn)發(fā)送的投票請(qǐng)求,此時(shí),該競(jìng)選節(jié)點(diǎn)也可以看作是投票節(jié)點(diǎn))。從而,生成投票信息的節(jié)點(diǎn) 而言,本申請(qǐng)實(shí)施例還提供一種基于時(shí)間的節(jié)點(diǎn)選舉方法,如圖5所示,該方法用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),該方法具體包括以下步驟:

S501,當(dāng)所有節(jié)點(diǎn)中不存在leader節(jié)點(diǎn)時(shí),至少兩個(gè)節(jié)點(diǎn)作為投票節(jié)點(diǎn),在時(shí)間配置信息所攜帶的投票時(shí)間內(nèi),接收競(jìng)選節(jié)點(diǎn)發(fā)送的投票請(qǐng)求。

在本申請(qǐng)實(shí)施例中,在未確定出leader節(jié)點(diǎn)時(shí),分布式系統(tǒng)內(nèi)的各節(jié)點(diǎn)均可以作為投票節(jié)點(diǎn),以接收競(jìng)選節(jié)點(diǎn)發(fā)送的投票請(qǐng)求。

同樣地,所述投票節(jié)點(diǎn)也將接收主機(jī)發(fā)送的時(shí)間配置信息,調(diào)整該投票節(jié)點(diǎn)內(nèi)部的時(shí)鐘,配置投票時(shí)間和計(jì)票時(shí)間。

S502,所述投票節(jié)點(diǎn)根據(jù)所述投票請(qǐng)求,在投票時(shí)間內(nèi)生成投票信息發(fā)送至競(jìng)選節(jié)點(diǎn),使得所述競(jìng)選節(jié)點(diǎn)在計(jì)票時(shí)間內(nèi)統(tǒng)計(jì)所述投票信息的數(shù)量,確定leader節(jié)點(diǎn)。

在分布式系統(tǒng)中,投票節(jié)點(diǎn)將接收至少一個(gè)競(jìng)選節(jié)點(diǎn)發(fā)送的投票請(qǐng)求(在實(shí)際應(yīng)用場(chǎng)景下,投票節(jié)點(diǎn)通常會(huì)接收到多個(gè)競(jìng)選節(jié)點(diǎn)發(fā)出的投票請(qǐng)求),而由于最終只能選舉出一個(gè)leader節(jié)點(diǎn),從而,投票節(jié)點(diǎn)將選定一個(gè)競(jìng)選節(jié)點(diǎn)進(jìn)行投票,也即,投票節(jié)點(diǎn)將根據(jù)其接收到的投票請(qǐng)求,選定一個(gè)競(jìng)選節(jié)點(diǎn),并生成針對(duì)選定的節(jié)點(diǎn)的生成投票信息并發(fā)送至選定的節(jié)點(diǎn)中。

通過(guò)上述步驟,正是由于分布式系統(tǒng)中的各投票節(jié)點(diǎn)配置了相同的投票時(shí)間內(nèi),使得各投票節(jié)點(diǎn)可以在相同的投票時(shí)間內(nèi),選定出競(jìng)選節(jié)點(diǎn),并生成相應(yīng)的投票請(qǐng)求發(fā)送至選定的競(jìng)選節(jié)點(diǎn)中,從而保證了投票過(guò)程的同步性,也提升了對(duì)節(jié)點(diǎn)進(jìn)行選舉的效率。

需要說(shuō)明的是,當(dāng)競(jìng)選節(jié)點(diǎn)向投票節(jié)點(diǎn)發(fā)送投票請(qǐng)求時(shí),該投票請(qǐng)求中通常會(huì)攜帶該競(jìng)選節(jié)點(diǎn)的節(jié)點(diǎn)信息。這樣一來(lái),在投票節(jié)點(diǎn)接收了多個(gè)投票請(qǐng)求的情況下,投票節(jié)點(diǎn)就可以根據(jù)投票請(qǐng)求中所攜帶的節(jié)點(diǎn)信息,選定競(jìng)選節(jié)點(diǎn)。

故在本申請(qǐng)實(shí)施例中,生成投票信息發(fā)送至競(jìng)選節(jié)點(diǎn),具體為:所述投票節(jié)點(diǎn)確定接收到的所述投票請(qǐng)求中所攜帶的節(jié)點(diǎn)信息,根據(jù)所述節(jié)點(diǎn)信息,確定所述競(jìng)選節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)權(quán)重,選定節(jié)點(diǎn)狀態(tài)權(quán)重最大的競(jìng)選節(jié)點(diǎn),并生成 針對(duì)該競(jìng)選節(jié)點(diǎn)的投票信息,發(fā)送至選定的競(jìng)選節(jié)點(diǎn)。

其中,所述節(jié)點(diǎn)信息,包括但不限于競(jìng)選節(jié)點(diǎn)的數(shù)據(jù)更新信息、處理負(fù)載信息、硬件配置信息等反映競(jìng)選節(jié)點(diǎn)數(shù)據(jù)處理能力、處理狀態(tài)的信息。從而,投票節(jié)點(diǎn)就可以根據(jù)節(jié)點(diǎn)信息,確定出不同競(jìng)選節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)權(quán)重,用以反映不同競(jìng)選節(jié)點(diǎn)的綜合狀態(tài)水平。從而,在本申請(qǐng)實(shí)施例中,投票節(jié)點(diǎn)會(huì)選定節(jié)點(diǎn)狀態(tài)權(quán)重最高的競(jìng)選節(jié)點(diǎn),并生成相應(yīng)的投票信息發(fā)送至該競(jìng)選節(jié)點(diǎn)。完成投票過(guò)程。

以上如圖2所示的方法S201~S204,以及如圖5所示的方法S501~S502,均是在分布式系統(tǒng)中還不存在leader節(jié)點(diǎn)的情況下,各節(jié)點(diǎn)根據(jù)主機(jī)配置的投票時(shí)間和計(jì)票時(shí)間,確定leader節(jié)點(diǎn)的過(guò)程。而對(duì)于分布式系統(tǒng)中已經(jīng)存在leader節(jié)點(diǎn)的情況,本申請(qǐng)實(shí)施例還提供一種基于時(shí)間的節(jié)點(diǎn)選舉方法,如圖6所示,所述方法用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),具體包括以下步驟:

S601,當(dāng)所有節(jié)點(diǎn)中包含leader節(jié)點(diǎn),且所述leader節(jié)點(diǎn)確定自身符合預(yù)設(shè)標(biāo)準(zhǔn)時(shí),所述leader節(jié)點(diǎn)根據(jù)時(shí)間配置信息中的leader節(jié)點(diǎn)的任期,在投票時(shí)間內(nèi)向所有節(jié)點(diǎn)發(fā)送連任請(qǐng)求。

在本申請(qǐng)實(shí)施例中,通過(guò)如圖2所示的方法S201~S204,以及如圖5所示的方法S501~S502,確定出leader節(jié)點(diǎn)之后,當(dāng)該leader的任期即將結(jié)束前,就需要進(jìn)行下一次節(jié)點(diǎn)選舉,此時(shí),除leader節(jié)點(diǎn)之外的其他節(jié)點(diǎn)不會(huì)發(fā)送投票請(qǐng)求,而只有l(wèi)eader節(jié)點(diǎn)可以向其他節(jié)點(diǎn)發(fā)送連任請(qǐng)求。

需要說(shuō)明的是,由于在實(shí)際應(yīng)用,分布式系統(tǒng)所處理的信息量巨大,就可能會(huì)出現(xiàn)leader節(jié)點(diǎn)所維護(hù)的數(shù)據(jù)(如:元數(shù)據(jù))更新滯后,或者,leader節(jié)點(diǎn)的處理負(fù)荷不斷增加,導(dǎo)致其處理業(yè)務(wù)的效率下降等情況。從而,在本申請(qǐng)實(shí)施例中,當(dāng)下一次投票時(shí)間到來(lái)時(shí),當(dāng)前的leader節(jié)點(diǎn)會(huì)判斷自身的節(jié)點(diǎn)狀態(tài)是否符合預(yù)設(shè)標(biāo)準(zhǔn),如果符合,則說(shuō)明該leader節(jié)點(diǎn)的處理負(fù)荷、數(shù)據(jù)更新程度不會(huì)影響對(duì)指定業(yè)務(wù)處理的效率,因此,該leader節(jié)點(diǎn)才會(huì)向其他節(jié)點(diǎn)發(fā)送連任請(qǐng)求。

其中,所述預(yù)設(shè)標(biāo)準(zhǔn),包括但不限于:處理負(fù)載標(biāo)準(zhǔn)、數(shù)據(jù)更新程度等。由于不同節(jié)點(diǎn)的硬件配置(處理性能、存儲(chǔ)空間等)可能不同,故在本申請(qǐng)實(shí)施例中,各節(jié)點(diǎn)的預(yù)設(shè)標(biāo)準(zhǔn)也可能不相同,那么,各節(jié)點(diǎn)會(huì)根據(jù)其自身的硬件配置生成相應(yīng)的預(yù)設(shè)標(biāo)準(zhǔn)。

通常,各節(jié)點(diǎn)的預(yù)設(shè)標(biāo)準(zhǔn),會(huì)以標(biāo)準(zhǔn)值的方式預(yù)先設(shè)定。如:對(duì)于某一節(jié)點(diǎn)而言,處理負(fù)載標(biāo)準(zhǔn)為:中央處理器(Central Processing Unit,CPU)的使用率不超過(guò)80%。也就是說(shuō),當(dāng)CPU的使用了未超過(guò)80%時(shí),則可認(rèn)為該節(jié)點(diǎn)符合預(yù)設(shè)標(biāo)準(zhǔn)。

又如:對(duì)于某一節(jié)點(diǎn)而言,數(shù)據(jù)更新程度標(biāo)準(zhǔn)為:數(shù)據(jù)更新頻率超過(guò)10min/次(數(shù)據(jù)更新頻率可以反映出數(shù)據(jù)更新的程度)。也就是說(shuō),當(dāng)節(jié)點(diǎn)的數(shù)據(jù)更新頻率超過(guò)10min/次時(shí),則可認(rèn)為該節(jié)點(diǎn)符合預(yù)設(shè)標(biāo)準(zhǔn)。

當(dāng)然,上述內(nèi)容僅是本申請(qǐng)實(shí)施例提供的預(yù)設(shè)標(biāo)準(zhǔn)的示例,在實(shí)際應(yīng)用場(chǎng)景下,各節(jié)點(diǎn)的預(yù)設(shè)標(biāo)準(zhǔn)將根據(jù)實(shí)際應(yīng)用的需要進(jìn)行設(shè)置,這里并不構(gòu)成對(duì)本申請(qǐng)的限定。

S602,所述leader節(jié)點(diǎn)接收其他節(jié)點(diǎn)根據(jù)所述連任請(qǐng)求生成的投票信息。

接收到連任請(qǐng)求的節(jié)點(diǎn),會(huì)根據(jù)該連任請(qǐng)求生成對(duì)應(yīng)的投票信息,發(fā)送至leader節(jié)點(diǎn)中。

S603,所述leader節(jié)點(diǎn)在計(jì)票時(shí)間內(nèi),統(tǒng)計(jì)接收到的所述投票信息的數(shù)量。

S604,所述leader節(jié)點(diǎn)根據(jù)統(tǒng)計(jì)出的所述投票信息的數(shù)量確定連任狀態(tài),并在成功連任后對(duì)指定業(yè)務(wù)進(jìn)行處理。

在本申請(qǐng)實(shí)施例中,由于在leader節(jié)點(diǎn)向其他節(jié)點(diǎn)發(fā)送連任請(qǐng)求的情況下,分布式系統(tǒng)中沒(méi)有其他競(jìng)選節(jié)點(diǎn),也就是說(shuō),各節(jié)點(diǎn)只會(huì)接收到來(lái)自leader節(jié)點(diǎn)的連接請(qǐng)求,故leader節(jié)點(diǎn)通常會(huì)成功連任。

在leader節(jié)點(diǎn)成功連任之后,該leader節(jié)點(diǎn)會(huì)向各節(jié)點(diǎn)發(fā)送通知消息,通知各節(jié)點(diǎn)該leader節(jié)點(diǎn)已成功連任,從而,成功連任的leader節(jié)點(diǎn)將繼續(xù)處理指定業(yè)務(wù),分布式系統(tǒng)中的其他節(jié)點(diǎn)將繼續(xù)正常處理業(yè)務(wù)。

在上述如圖6所示的方法S601~S604的情況下,本申請(qǐng)實(shí)施例另提供一種基于時(shí)間的節(jié)點(diǎn)選舉方法,如圖7所示,所述方法用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),具體包括以下步驟:

S701,當(dāng)所有節(jié)點(diǎn)中存在leader節(jié)點(diǎn)時(shí),至少兩個(gè)節(jié)點(diǎn)作為投票節(jié)點(diǎn),在時(shí)間配置信息中所攜帶的投票時(shí)間內(nèi),接收l(shuí)eader節(jié)點(diǎn)發(fā)送的連任請(qǐng)求。

S702,所述投票節(jié)點(diǎn)根據(jù)所述連任請(qǐng)求,在時(shí)間配置信息中所攜帶的投票時(shí)間內(nèi),生成投票信息發(fā)送至所述leader節(jié)點(diǎn),使得所述leader節(jié)點(diǎn)在計(jì)票時(shí)間內(nèi)統(tǒng)計(jì)所述投票信息的數(shù)量確定連任狀態(tài),并且,所述投票節(jié)點(diǎn)在所述leader節(jié)點(diǎn)的任期內(nèi)只接收所述leader節(jié)點(diǎn)發(fā)送的投票請(qǐng)求。

通過(guò)上述如圖6所示的方法S601~S604,以及如圖7所示的方法S701~S702,在分布式系統(tǒng)中已經(jīng)存在leader節(jié)點(diǎn)的情況下,當(dāng)下一次投票時(shí)間到來(lái)時(shí),分布式系統(tǒng)中的所有節(jié)點(diǎn)均會(huì)同步進(jìn)入投票狀態(tài),并只由leader節(jié)點(diǎn)向其他節(jié)點(diǎn)發(fā)送連任請(qǐng)求,接收到連任請(qǐng)求的節(jié)點(diǎn)會(huì)將生成的投票請(qǐng)求發(fā)送至leader節(jié)點(diǎn),這樣一來(lái),其他節(jié)點(diǎn)便不會(huì)互相發(fā)送投票請(qǐng)求重新確定leader節(jié)點(diǎn),從而有效降低了各節(jié)點(diǎn)的處理負(fù)荷,也提升了對(duì)leader節(jié)點(diǎn)的選舉效率。并且,任一投票節(jié)點(diǎn)在leader節(jié)點(diǎn)的任期內(nèi),均不會(huì)接收其他節(jié)點(diǎn)發(fā)送的投票請(qǐng)求,這樣,就可以保證各投票節(jié)點(diǎn)只接收l(shuí)eader節(jié)點(diǎn)發(fā)出的投票請(qǐng)求。

當(dāng)然,在實(shí)際應(yīng)用中,分布式系統(tǒng)中的各節(jié)點(diǎn)處理大量的業(yè)務(wù),leader節(jié)點(diǎn)就有可能出現(xiàn)處理負(fù)載增加、數(shù)據(jù)更新滯后等情況,使得該leader節(jié)點(diǎn)不符合預(yù)設(shè)的標(biāo)準(zhǔn),那么,在這樣的情況下,本申請(qǐng)實(shí)施例提供一種基于時(shí)間的節(jié)點(diǎn)選舉方法,如圖8所示,所述方法用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),具體包括以下步驟:

S801,當(dāng)所有節(jié)點(diǎn)中包含leader節(jié)點(diǎn),且所述leader節(jié)點(diǎn)確定自身不符合預(yù)設(shè)標(biāo)準(zhǔn)時(shí),所述leader節(jié)點(diǎn)根據(jù)時(shí)間配置信息中的leader節(jié)點(diǎn)的任期,在其他節(jié)點(diǎn)中篩選出符合所述預(yù)設(shè)標(biāo)準(zhǔn)的節(jié)點(diǎn),作為繼承節(jié)點(diǎn)。

leader節(jié)點(diǎn)確定自身不符合預(yù)設(shè)標(biāo)準(zhǔn),就表明該leader節(jié)點(diǎn)可能出現(xiàn)處理 負(fù)責(zé)過(guò)高,或者數(shù)據(jù)更新程度過(guò)低,在這樣的情況下,該leader節(jié)點(diǎn)處理指定業(yè)務(wù)的效率將收到嚴(yán)重影響。也即,當(dāng)前該leader節(jié)點(diǎn)已不適合再處理指定業(yè)務(wù)。

從而,在本申請(qǐng)實(shí)施例中,當(dāng)leader節(jié)點(diǎn)的任期結(jié)束前,所述leader節(jié)點(diǎn)將從其他節(jié)點(diǎn)中篩選出繼承節(jié)點(diǎn)。作為本申請(qǐng)實(shí)施例中的一種方式,可由leader節(jié)點(diǎn)向其他節(jié)點(diǎn)發(fā)送查詢請(qǐng)求,以查詢其他節(jié)點(diǎn)的節(jié)點(diǎn)信息,根據(jù)節(jié)點(diǎn)信息選定繼承節(jié)點(diǎn)。作為本申請(qǐng)實(shí)施例中的另一種方式,也可以由主機(jī)指定該leader節(jié)點(diǎn)選定繼承節(jié)點(diǎn),也即,進(jìn)行l(wèi)eader節(jié)點(diǎn)的改選,那么,當(dāng)前的leader節(jié)點(diǎn)接收到改選指令后,就會(huì)從其他節(jié)點(diǎn)中選定一個(gè)節(jié)點(diǎn)作為該leader節(jié)點(diǎn)的繼承節(jié)點(diǎn)。當(dāng)然,上述方式并不作為對(duì)本申請(qǐng)的限定。

S802,所述leader節(jié)點(diǎn)在所述投票時(shí)段內(nèi),向其他節(jié)點(diǎn)發(fā)出針對(duì)該繼承節(jié)點(diǎn)的投票請(qǐng)求,使得所述繼承節(jié)點(diǎn)接收其他節(jié)點(diǎn)發(fā)送的投票信息,并在計(jì)票時(shí)間內(nèi)統(tǒng)計(jì)所述投票信息的數(shù)量確定為新任leader節(jié)點(diǎn)。

在投票時(shí)間內(nèi),leader節(jié)點(diǎn)將向其他節(jié)點(diǎn)發(fā)送的投票請(qǐng)求中,攜帶有繼承節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí),也就是說(shuō),接收到該投票請(qǐng)求的節(jié)點(diǎn)會(huì)生成相應(yīng)的投票信息,并根據(jù)繼承節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí),將投票信息發(fā)送至該繼承節(jié)點(diǎn)中。這樣一來(lái),各節(jié)點(diǎn)的投票信息只發(fā)送給繼承節(jié)點(diǎn),而不會(huì)發(fā)送給當(dāng)前的leader節(jié)點(diǎn)。

顯然,只有繼承節(jié)點(diǎn)接收到各節(jié)點(diǎn)發(fā)送的投票信息,故在計(jì)票時(shí)間內(nèi),繼承節(jié)點(diǎn)將統(tǒng)計(jì)接收到的投票信息,確定為leader節(jié)點(diǎn)。并向各節(jié)點(diǎn)發(fā)送通知消息,以通知各節(jié)點(diǎn),該繼承節(jié)點(diǎn)已成為新任leader節(jié)點(diǎn)。

在上述如圖8所示的方法S801~S802的情況下,本申請(qǐng)實(shí)施例另提供一種基于時(shí)間的節(jié)點(diǎn)選舉方法,如圖9所示,所述方法用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),具體包括以下步驟:

S901,當(dāng)所有節(jié)點(diǎn)中存在leader節(jié)點(diǎn)時(shí),至少兩個(gè)節(jié)點(diǎn)作為投票節(jié)點(diǎn),在時(shí)間配置信息中攜帶的投票時(shí)間內(nèi),接收所述leader節(jié)點(diǎn)發(fā)送的針對(duì)繼承節(jié)點(diǎn)的投票請(qǐng)求。

S902,所述投票節(jié)點(diǎn)根據(jù)所述投票請(qǐng)求,在時(shí)間配置信息中所攜帶的投票時(shí)間內(nèi),生成投票信息發(fā)送至所述繼承節(jié)點(diǎn),使得所述繼承節(jié)點(diǎn)在計(jì)票時(shí)間內(nèi)統(tǒng)計(jì)所述投票信息的數(shù)量,確定新任leader節(jié)點(diǎn)。

同樣,對(duì)于上述步驟S901~S902,由于leader節(jié)點(diǎn)發(fā)送的投票請(qǐng)求中,攜帶有繼承節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí),所以,投票節(jié)點(diǎn)會(huì)根據(jù)投票請(qǐng)求生成相應(yīng)的投票信息,并根據(jù)繼承節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí),將投票信息發(fā)送至該繼承節(jié)點(diǎn)中,而不會(huì)發(fā)送到其他節(jié)點(diǎn)中。這就保證了繼承節(jié)點(diǎn)可以順利成為新任的leader節(jié)點(diǎn)。

通過(guò)以上方法和實(shí)例,在分布式系統(tǒng)中不存在leader節(jié)點(diǎn)的情況下,分布式系統(tǒng)的主機(jī)為各節(jié)點(diǎn)配置相同的投票時(shí)間和計(jì)票時(shí)間,使得各節(jié)點(diǎn)在投票時(shí)間內(nèi)同步進(jìn)行投票,并且在計(jì)票時(shí)間內(nèi)同步進(jìn)行計(jì)票。這樣一來(lái),就不會(huì)出現(xiàn)各節(jié)點(diǎn)進(jìn)行投票或計(jì)票的時(shí)機(jī)不確定的情況,從而極大提升了分布式系統(tǒng)中各節(jié)點(diǎn)選舉leader節(jié)點(diǎn)的效率。

并且,在選舉出leader節(jié)點(diǎn)之后,各節(jié)點(diǎn)仍根據(jù)周期性的投票時(shí)間和計(jì)票時(shí)間,在下一次投票時(shí)間和計(jì)票時(shí)間到來(lái)時(shí),leader節(jié)點(diǎn)會(huì)判斷自身的狀態(tài),以生成針對(duì)自身的投票請(qǐng)求或者是針對(duì)繼承節(jié)點(diǎn)的投票請(qǐng)求,使得其他節(jié)點(diǎn)根據(jù)該投票請(qǐng)求生成投票信息發(fā)送至對(duì)應(yīng)節(jié)點(diǎn)中。這樣的方式保證選舉出的用于對(duì)指定業(yè)務(wù)進(jìn)行處理的leader節(jié)點(diǎn),始終處于高性能狀態(tài),可提升分布式系統(tǒng)整體對(duì)業(yè)務(wù)處理的效率。

以上為本申請(qǐng)實(shí)施例提供的基于時(shí)間的節(jié)點(diǎn)選舉方法,基于同樣的思路,本申請(qǐng)實(shí)施例還提供一種基于時(shí)間的節(jié)點(diǎn)選舉裝置,如圖10所示。

在圖10中,所述基于時(shí)間的節(jié)點(diǎn)選舉裝置包括:配置模塊1001和發(fā)送模塊1002,其中,

所述配置模塊1001,用于為所有節(jié)點(diǎn)配置相同的投票時(shí)間、計(jì)票時(shí)間以及l(fā)eader節(jié)點(diǎn)的任期。

所述發(fā)送模塊1002,用于將配置的所述投票時(shí)間、計(jì)票時(shí)間以及l(fā)eader節(jié)點(diǎn)的任期攜帶在時(shí)間配置信息中發(fā)送至各節(jié)點(diǎn),使得各節(jié)點(diǎn)在所述投票時(shí)間 內(nèi)進(jìn)行投票,在所述計(jì)票時(shí)間內(nèi)進(jìn)行計(jì)票,并根據(jù)計(jì)票結(jié)果選舉出leader節(jié)點(diǎn),并使得各節(jié)點(diǎn)根據(jù)所述leader節(jié)點(diǎn)的任期進(jìn)行周期性節(jié)點(diǎn)選舉。

在如圖10所示的情況下,本申請(qǐng)實(shí)施例還提供一種基于時(shí)間的節(jié)點(diǎn)選舉裝置,如圖11所示,所述裝置用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),設(shè)置在競(jìng)選節(jié)點(diǎn)中。

在圖11中,所述基于時(shí)間的節(jié)點(diǎn)選舉裝置包括:投票請(qǐng)求模塊1101、接收模塊1102、統(tǒng)計(jì)模塊1103和確定模塊1104,其中,當(dāng)所有節(jié)點(diǎn)中不存在leader節(jié)點(diǎn)時(shí),

所述投票請(qǐng)求模塊1101,用于在時(shí)間配置信息所攜帶的投票時(shí)間內(nèi),向所有節(jié)點(diǎn)發(fā)送投票請(qǐng)求。

所述接收模塊1102,用于接收其他節(jié)點(diǎn)根據(jù)所述投票請(qǐng)求生成的投票信息。

所述統(tǒng)計(jì)模塊1103,用于在所述時(shí)間配置信息所攜帶的計(jì)票時(shí)間內(nèi),統(tǒng)計(jì)各自接收到的投票信息的數(shù)量。

所述確定模塊1104,用于根據(jù)統(tǒng)計(jì)出的各自的投票信息的數(shù)量確定leader節(jié)點(diǎn),對(duì)指定業(yè)務(wù)進(jìn)行處理。

在本申請(qǐng)實(shí)施例中,所述接收模塊1102,還用于在所述計(jì)票時(shí)間到來(lái)時(shí),停止接收所述投票信息。

所述確定模塊1104,具體用于當(dāng)判斷統(tǒng)計(jì)出的所述投票信息的數(shù)量,超過(guò)預(yù)設(shè)的閾值時(shí),將所述競(jìng)選節(jié)點(diǎn)確定為leader節(jié)點(diǎn)。

其中,所述閾值為所有節(jié)點(diǎn)數(shù)量的二分之一。

本申請(qǐng)實(shí)施例還提供一種基于時(shí)間的節(jié)點(diǎn)選舉裝置,如圖12所示,所述裝置用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),設(shè)置在投票節(jié)點(diǎn)中。

在圖12中,所述基于時(shí)間的節(jié)點(diǎn)選舉裝置包括:接收模塊1201和投票信息模塊1202,其中,當(dāng)所有節(jié)點(diǎn)中不包含有l(wèi)eader節(jié)點(diǎn)時(shí),

所述接收模塊1201,用于在時(shí)間配置信息所攜帶的投票時(shí)間內(nèi),接收競(jìng)選節(jié)點(diǎn)發(fā)送的投票請(qǐng)求。

所述投票信息模塊1202,用于根據(jù)所述投票請(qǐng)求,在投票時(shí)間內(nèi)生成投票信息發(fā)送至競(jìng)選節(jié)點(diǎn),使得所述競(jìng)選節(jié)點(diǎn)在計(jì)票時(shí)間內(nèi)統(tǒng)計(jì)所述投票信息的數(shù)量,確定leader節(jié)點(diǎn)。

在本申請(qǐng)實(shí)施例中,所述投票信息模塊1202,具體用于確定接收到的所述投票請(qǐng)求中所攜帶的節(jié)點(diǎn)信息,根據(jù)所述節(jié)點(diǎn)信息,確定所述競(jìng)選節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)權(quán)重,選定節(jié)點(diǎn)狀態(tài)權(quán)重最大的競(jìng)選節(jié)點(diǎn),并生成針對(duì)該競(jìng)選節(jié)點(diǎn)的投票信息,發(fā)送至選定的競(jìng)選節(jié)點(diǎn)。

本申請(qǐng)實(shí)施例還提供一種基于時(shí)間的節(jié)點(diǎn)選舉裝置,如圖13所示,所述裝置用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),設(shè)置在leader節(jié)點(diǎn)中。

在圖13中,所述基于時(shí)間的節(jié)點(diǎn)選舉裝置包括:連任請(qǐng)求模塊1301、接收模塊1302、統(tǒng)計(jì)模塊1303以及確定模塊1304,其中,當(dāng)所有節(jié)點(diǎn)中包含leader節(jié)點(diǎn),且所述leader節(jié)點(diǎn)確定自身符合預(yù)設(shè)標(biāo)準(zhǔn)時(shí),

所述連任請(qǐng)求模塊1301,用于根據(jù)時(shí)間配置信息中的leader節(jié)點(diǎn)的任期,在投票時(shí)間內(nèi)向所有節(jié)點(diǎn)發(fā)送連任請(qǐng)求。

所述接收模塊1302,用于接收其他節(jié)點(diǎn)根據(jù)所述連任請(qǐng)求生成的投票信息。

所述統(tǒng)計(jì)模塊1303,用于在計(jì)票時(shí)間內(nèi),統(tǒng)計(jì)接收到的所述投票信息的數(shù)量。

所述確定模塊1304,根據(jù)統(tǒng)計(jì)出的所述投票信息的數(shù)量確定連任狀態(tài),并在成功連任后對(duì)指定業(yè)務(wù)進(jìn)行處理。

其中,所述預(yù)設(shè)標(biāo)準(zhǔn),包括處理負(fù)載標(biāo)準(zhǔn)、數(shù)據(jù)更新程度中的至少一種。

本申請(qǐng)實(shí)施例還提供一種基于時(shí)間的節(jié)點(diǎn)選舉裝置,如圖14所示,所述裝置用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),設(shè)置在leader節(jié)點(diǎn)中。

在圖14中,所述基于時(shí)間的節(jié)點(diǎn)選舉裝置包括:篩選模塊1401和投票請(qǐng)求模塊1402,其中,當(dāng)所有節(jié)點(diǎn)中包含leader節(jié)點(diǎn),且所述leader節(jié)點(diǎn)確定自身不符合預(yù)設(shè)標(biāo)準(zhǔn)時(shí),

所述篩選模塊1401,用于根據(jù)時(shí)間配置信息中的leader節(jié)點(diǎn)的任期,在其 他節(jié)點(diǎn)中篩選出符合所述預(yù)設(shè)標(biāo)準(zhǔn)的節(jié)點(diǎn),作為繼承節(jié)點(diǎn)。

所述投票請(qǐng)求模塊1402,用于在所述投票時(shí)段內(nèi),向其他節(jié)點(diǎn)發(fā)出針對(duì)該繼承節(jié)點(diǎn)的投票請(qǐng)求,使得所述繼承節(jié)點(diǎn)接收其他節(jié)點(diǎn)發(fā)送的投票信息,并在計(jì)票時(shí)間內(nèi)統(tǒng)計(jì)所述投票信息的數(shù)量確定為新任leader節(jié)點(diǎn)。

本申請(qǐng)實(shí)施例還提供一種基于時(shí)間的節(jié)點(diǎn)選舉裝置,如圖15所示,所述裝置用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),設(shè)置在投票節(jié)點(diǎn)中。

在圖15中,所述基于時(shí)間的節(jié)點(diǎn)選舉裝置包括:接收模塊1501和投票信息模塊1502,其中,當(dāng)所有節(jié)點(diǎn)中包含leader節(jié)點(diǎn)時(shí),

所述接收模塊1501,用于在時(shí)間配置信息中所攜帶的投票時(shí)間內(nèi),接收所述leader節(jié)點(diǎn)發(fā)送的連任請(qǐng)求。

所述投票信息模塊1502,用于根據(jù)所述連任請(qǐng)求,在時(shí)間配置信息中所攜帶的投票時(shí)間內(nèi),生成投票信息發(fā)送至所述leader節(jié)點(diǎn),使得所述leader節(jié)點(diǎn)在計(jì)票時(shí)間內(nèi)統(tǒng)計(jì)所述投票信息的數(shù)量確定連任狀態(tài),并用于在所述leader節(jié)點(diǎn)的任期內(nèi)只接收所述leader節(jié)點(diǎn)發(fā)送的投票請(qǐng)求。

本申請(qǐng)實(shí)施例還提供一種基于時(shí)間的節(jié)點(diǎn)選舉裝置,如圖16所示,所述裝置用于分布式系統(tǒng)中確定leader節(jié)點(diǎn),設(shè)置在投票節(jié)點(diǎn)中。

在圖16中,所述基于時(shí)間的節(jié)點(diǎn)選舉裝置包括:接收模塊1601和投票信息模塊1602,其中,當(dāng)所有節(jié)點(diǎn)中存在leader節(jié)點(diǎn)時(shí),

所述接收模塊1601,用于在時(shí)間配置信息中攜帶的投票時(shí)間內(nèi),接收所述leader節(jié)點(diǎn)發(fā)送的針對(duì)繼承節(jié)點(diǎn)的投票請(qǐng)求。

所述投票信息模塊1602,用于根據(jù)所述投票請(qǐng)求,在時(shí)間配置信息中所攜帶的投票時(shí)間內(nèi),生成投票信息發(fā)送至所述繼承節(jié)點(diǎn),使得所述繼承節(jié)點(diǎn)在計(jì)票時(shí)間內(nèi)統(tǒng)計(jì)所述投票信息的數(shù)量,確定新任leader節(jié)點(diǎn)。

在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。

內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器 (RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。

計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。

還需要說(shuō)明的是,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、商品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)......”限定的要素,并不排除在包括所述要素的過(guò)程、方法、商品或者設(shè)備中還存在另外的相同要素。

本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。

以上所述僅為本申請(qǐng)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1