国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種主節(jié)點(diǎn)的選舉方法及節(jié)點(diǎn)的制作方法

      文檔序號(hào):7550806閱讀:233來(lái)源:國(guó)知局
      專利名稱:一種主節(jié)點(diǎn)的選舉方法及節(jié)點(diǎn)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及集群(Cluster)系統(tǒng)領(lǐng)域,尤其涉及一種主節(jié)點(diǎn)的選舉方法及節(jié)點(diǎn)。
      背景技術(shù)
      網(wǎng)絡(luò)技術(shù)的快速發(fā)展,促進(jìn)了集群系統(tǒng)的發(fā)展和廣泛應(yīng)用。一個(gè)集群由全部互相連接的服務(wù)器組成,這些服務(wù)器被作為一個(gè)統(tǒng)一的計(jì)算資源,對(duì)外表現(xiàn)為單一的系統(tǒng),并以單一系統(tǒng)的模式加以管理。隨著集群結(jié)構(gòu)的逐步成熟,集群目前在金融、電信和政府網(wǎng)絡(luò)等領(lǐng)域已成為一個(gè)熱門技術(shù),它可以保證系統(tǒng)的高可用性、可擴(kuò)充性和抗災(zāi)難性。對(duì)于一個(gè)理想的集群,用戶無(wú)需關(guān)注集群系統(tǒng)的組成節(jié)點(diǎn),一個(gè)集群就是一個(gè)系統(tǒng),而不是若干獨(dú)立的計(jì)算節(jié)點(diǎn),集群管理員可以根據(jù)需要增加或者刪除集群系統(tǒng)的節(jié)點(diǎn)。集群系統(tǒng)具有如下優(yōu)點(diǎn):高擴(kuò)展性、高可用性、高性能和高性價(jià)比。根據(jù)集群系統(tǒng)的不同特征,可以將集群系統(tǒng)分為三類:高可用集群、負(fù)載均衡集群與高性能計(jì)算集群。高可用集群又叫HA集群,是集群的一種,是基于為終端用戶提供持續(xù)性的服務(wù)而產(chǎn)生的,用于對(duì)外提供高度可靠的服務(wù),在這類集群系統(tǒng)里,所有節(jié)點(diǎn)采用Master(S)/Slave (從)或者M(jìn)ult1-Active (多激活)方式對(duì)外提供同樣的服務(wù),考慮到一致性的問(wèn)題,Mult1-Active方式處理起來(lái)非常復(fù)雜,往往導(dǎo)致處理效率的降低,因此較多采用Master/Slave方式,由Master接受請(qǐng)求進(jìn)行統(tǒng)一分配,Master/Slave與Mult1-Active的主要區(qū)別是存在一個(gè)特殊節(jié)點(diǎn),功能角色與其他節(jié)點(diǎn)不同。Master的選擇往往是動(dòng)態(tài)的,避免單點(diǎn)故障(SPOF, Single Point of Failure)的發(fā)生。Master的選擇是一個(gè)典型的Leader (主節(jié)點(diǎn))選舉過(guò)程,在高可用集群里的應(yīng)用非常普遍。—個(gè)合格的Leader選舉方法需要解決以下幾個(gè)問(wèn)題:避免出現(xiàn)多個(gè)Leader( >I);處理網(wǎng)絡(luò)分裂;避免選舉過(guò)程節(jié)點(diǎn)崩潰;容忍低速網(wǎng)絡(luò)等。目前傳統(tǒng)的Leader選舉方法包括以下幾種:(I)為集群系統(tǒng)中的每個(gè)節(jié)點(diǎn)分別配置編號(hào),選擇編號(hào)最大或最小的節(jié)點(diǎn)作為主節(jié)點(diǎn);(2)集群系統(tǒng)中的節(jié)點(diǎn)隨機(jī)生成編號(hào),選擇編號(hào)最大的節(jié)點(diǎn)作為主節(jié)點(diǎn);(3)集群系統(tǒng)中的節(jié)點(diǎn)均使用相同的主鍵寫數(shù)據(jù)庫(kù),成功寫入數(shù)據(jù)庫(kù)的節(jié)點(diǎn)作為主節(jié)點(diǎn)。上述傳統(tǒng)的Leader選舉方法可以實(shí)現(xiàn)固定節(jié)點(diǎn)數(shù)目的集群系統(tǒng)的Master選舉,但是無(wú)法滿足集群動(dòng)態(tài)性的要求,在集群系統(tǒng)中的節(jié)點(diǎn)數(shù)量動(dòng)態(tài)變化時(shí),無(wú)法實(shí)現(xiàn)主節(jié)點(diǎn)的選擇。

      發(fā)明內(nèi)容
      本發(fā)明要解決的技術(shù)問(wèn)題是提供一種主節(jié)點(diǎn)的選舉方法及節(jié)點(diǎn),能夠在節(jié)點(diǎn)數(shù)量動(dòng)態(tài)變化的集群系統(tǒng)中,實(shí)現(xiàn)主節(jié)點(diǎn)的選舉。為解決上述技術(shù)問(wèn)題,本發(fā)明的一種主節(jié)點(diǎn)的選舉方法,包括:
      集群中的各節(jié)點(diǎn)向集群中除自身外的節(jié)點(diǎn)請(qǐng)求發(fā)起提案,判斷允許自身發(fā)起提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到允許發(fā)起提案的最小要求值,如果達(dá)到,則向集群中除自身外的節(jié)點(diǎn)廣播提案,并判斷接受提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到提案被接受的最小要求值,如果達(dá)到,貝_定提案的節(jié)點(diǎn)為主節(jié)點(diǎn),向集群中除自身外的節(jié)點(diǎn)廣播被接受的提案。進(jìn)一步地,判斷允許自身發(fā)起提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到允許發(fā)起提案的最小要求值,包括:在向集群中除自身外的節(jié)點(diǎn)請(qǐng)求發(fā)起提案后,接收響應(yīng)消息,根據(jù)響應(yīng)消息中攜帶的提案響應(yīng)信息判斷發(fā)送響應(yīng)消息的節(jié)點(diǎn)是否允許發(fā)起提案,如果允許,則對(duì)允許發(fā)起提案的節(jié)點(diǎn)的數(shù)量進(jìn)行累計(jì),并根據(jù)集群的總節(jié)點(diǎn)數(shù)量判斷允許發(fā)起提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到允許發(fā)起提案的最小要求值。進(jìn)一步地,判斷接受提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到提案被接受的最小要求值,包括:在向集群中除自身外的節(jié)點(diǎn)廣播提案后,接收響應(yīng)消息,根據(jù)響應(yīng)消息中是否攜帶接受信息判斷發(fā)送響應(yīng)消息的節(jié)點(diǎn)是否接受提案,如果接受,則對(duì)接受提案的節(jié)點(diǎn)的數(shù)量進(jìn)行累計(jì),并根據(jù)集群的總節(jié)點(diǎn)數(shù)量判斷接受提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到提案被接受的最小要求值。進(jìn)一步地,所述允許發(fā)起提案的最小要求值和提案被接受的最小要求值是總節(jié)點(diǎn)數(shù)量加I的二分之一的向上取整值。進(jìn)一步地,所述集群的總節(jié)點(diǎn)數(shù)量由集群中的各節(jié)點(diǎn)保存,集群中的各節(jié)點(diǎn)監(jiān)控集群中節(jié)點(diǎn)的加入和離開(kāi),在有節(jié)點(diǎn)加入時(shí),在總節(jié)點(diǎn)數(shù)量中加上增加的節(jié)點(diǎn)的數(shù)量,在有節(jié)點(diǎn)離開(kāi)時(shí),在總節(jié)點(diǎn)數(shù)量上減去離開(kāi)的節(jié)點(diǎn)的數(shù)量。進(jìn)一步地,一種主節(jié)點(diǎn)的選舉方法,包括:集群中的各節(jié)點(diǎn)在接收到請(qǐng)求發(fā)起提案的消息后,根據(jù)在接收到所述消息前是否已接受提案,向發(fā)送所述消息的節(jié)點(diǎn)返回響應(yīng)消息,指示是否允許發(fā)送所述消息的節(jié)點(diǎn)發(fā)起提案,并且,在接收到提案后,判斷是否已允許發(fā)送提案的節(jié)點(diǎn)發(fā)起提案,如果是,則向發(fā)送提案的節(jié)點(diǎn)返回響應(yīng)消息,指示接受提案。進(jìn)一步地,還包括:集群中的各節(jié)點(diǎn)在接收到請(qǐng)求發(fā)起提案的消息后,還判斷所述請(qǐng)求發(fā)起提案的消息的請(qǐng)求標(biāo)識(shí)(request ID)是否大于已接收到的最大的request ID,如果是,則執(zhí)行所述根據(jù)在接收到所述消息前是否已接受提案,向發(fā)送所述消息的節(jié)點(diǎn)返回響應(yīng)消息,并記錄當(dāng)前的請(qǐng)求發(fā)起提案的消息的request ID為已接收到的最大的request ID。進(jìn)一步地,還包括:在向發(fā)送提案的節(jié)點(diǎn)返回響應(yīng)消息,指示接受提案后,等待發(fā)送提案的節(jié)點(diǎn)廣播的被接受的提案,如果在等待時(shí)間內(nèi)未接收到發(fā)送提案的節(jié)點(diǎn)廣播的被接受的提案,則標(biāo)記當(dāng)如未接受:提案,允許請(qǐng)求提案的節(jié)點(diǎn)發(fā)起提案。進(jìn)一步地,一種節(jié)點(diǎn),包括:提案發(fā)起單元、提案單元和主節(jié)點(diǎn)確定單元,其中:所述提案發(fā)起單元,用于向集群中除自身外的節(jié)點(diǎn)請(qǐng)求發(fā)起提案,判斷允許自身發(fā)起提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到允許發(fā)起提案的最小要求值,如果達(dá)到,則通知所述提案單元;
      所述提案單元,用于向集群中除自身外的節(jié)點(diǎn)廣播提案,并判斷接受提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到提案被接受的最小要求值,如果達(dá)到,則通知所述主節(jié)點(diǎn)確定單元;所述主節(jié)點(diǎn)確定單元,用于確定提案的節(jié)點(diǎn)為主節(jié)點(diǎn),向集群中除自身外的節(jié)點(diǎn)廣播被接受的提案。進(jìn)一步地,一種節(jié)點(diǎn),包括:發(fā)起判斷單元和提案判斷單元,其中:所述發(fā)起判斷單元,用于在接收到請(qǐng)求發(fā)起提案的消息后,根據(jù)在接收到所述消息前是否已接受提案,向發(fā)送所述消息的節(jié)點(diǎn)返回響應(yīng)消息,指示是否允許發(fā)送所述消息的節(jié)點(diǎn)發(fā)起提案;所述提案判斷單元,用于在接收到提案后,判斷是否已允許發(fā)送提案的節(jié)點(diǎn)發(fā)起提案,如果是,則向發(fā)送提案的節(jié)點(diǎn)返回響應(yīng)消息,指示接受提案。綜上所述,本發(fā)明從集群系統(tǒng)的節(jié)點(diǎn)中動(dòng)態(tài)協(xié)商選舉出主節(jié)點(diǎn),達(dá)到在集群中的節(jié)點(diǎn)數(shù)量彈性伸縮的情況下確定主節(jié)點(diǎn)的目的。


      圖1為本發(fā)明的主節(jié)點(diǎn)的選舉方法的流程圖;圖2為本發(fā)明的一種節(jié)點(diǎn)的架構(gòu)圖;圖3為本發(fā)明的另一種節(jié)點(diǎn)的架構(gòu)圖。
      具體實(shí)施例方式本文提出了一種可以支持節(jié)點(diǎn)彈性伸縮的Leader選舉方法,用于實(shí)現(xiàn)節(jié)點(diǎn)動(dòng)態(tài)變化的集群系統(tǒng)的主節(jié)點(diǎn)選舉,該方法中動(dòng)態(tài)獲取節(jié)點(diǎn)的信息,根據(jù)集群系統(tǒng)中實(shí)際的節(jié)點(diǎn)數(shù)量,調(diào)整Leader選舉過(guò)程,達(dá)到在節(jié)點(diǎn)彈性伸縮的情況下確定Leader的目的。本實(shí)施方式的主節(jié)點(diǎn)的選舉方法包含兩個(gè)消息交換通道,選舉信息交換通道和成員信息交換通道,具體的通道選擇方式可以根據(jù)實(shí)際應(yīng)用進(jìn)行選擇(例如心跳線或者仲裁盤)。本實(shí)施方式中每個(gè)節(jié)點(diǎn)兼具三種角色,即Proposer(提案方)、Acceptor(接受方)和 Learner (學(xué)習(xí)方),Proposer 發(fā)送 prepare request (準(zhǔn)備請(qǐng)求)和 proposerequest (提案請(qǐng)求)到 Acceptor, Acceptor 反饋prepare response (準(zhǔn)備應(yīng)答)和proposeresponse (提案應(yīng)答)給Proposer。一旦Proposer獲得租約(Lease,有時(shí)間期限的鎖,獲得租約的節(jié)點(diǎn)為主節(jié)點(diǎn))之后就通知所有的Learner。這些消息通過(guò)選舉信息交換通道傳輸,選舉信息交換通道可以是異步的、不穩(wěn)定的。具體的選舉信息交換流程如圖1所示,以某節(jié)點(diǎn)選舉自己成為L(zhǎng)eader為例,時(shí)長(zhǎng)為T,本實(shí)施方式的主節(jié)點(diǎn)的選舉方法,包括:步驟101:集群中每個(gè)節(jié)點(diǎn)的Proposer生成Prepare Request,包括封裝PrepareRequest的request ID (請(qǐng)求ID),設(shè)置消息的類型為Prepare Request,向集群中的節(jié)點(diǎn)進(jìn)行廣播,請(qǐng)求發(fā)起提案;request ID 為單調(diào)遞增。生成并廣播Prepare Request的偽代碼如下:PrepareRequestO { state.requestID = nextRequestID(); request.type = PrepareRequest; request.requestID = state.requestID;
      Broadcast(reqLiest);
      } 步驟102:Acc印tor 收到 Prepare Request 之后,判斷Prepare Request 的 requestID是否大于已接收到的最大的request ID,如果是,則記錄當(dāng)前Prepare Request的request ID為已接收到的最大的request ID,生成PrepareResponse,在Prepare Response中攜帶提案響應(yīng)信息,發(fā)送給Proposer ;在Acceptor允許Proposer發(fā)起提案時(shí),提案響應(yīng)信息包含指示Acceptor允許提案的 目息,例如提案響應(yīng)彳目息為空(null);在Acceptor已接受:其他節(jié)點(diǎn)的提案,不允許Proposer發(fā)起提案時(shí),提案響應(yīng)信息包含Acceptor已接受的提案(已接受的節(jié)點(diǎn)的ID)。步驟102的偽代碼如下:
      OnPrepareRequestO {
      if(state.highestF^equestlD > request.requestID) return;
      state.highestRequestID = request.requestID; response.type = PrepareResponse; reponse.responselD = request.requestID; response.acceptedProposal = state.accepted Proposal; Send(response);
      }步驟103:Proposer 收到 Prepare Response 之后,判斷 Prepare Response 是否合法,如果合法,則根據(jù)提案響應(yīng)信息判斷Acc印tor是否允許Proposer發(fā)起提案,如果允許,則根據(jù)總節(jié)點(diǎn)數(shù)量判斷允許發(fā)起提案的Acceptor的數(shù)量是否達(dá)到允許發(fā)起提案的最小要求值,如果達(dá)到,注冊(cè)一個(gè)定時(shí)器,生成Propose Request攜帶提案的節(jié)點(diǎn)的ID,向集群中的節(jié)點(diǎn)廣播提案進(jìn)行正式申請(qǐng);在Propose Request中還攜帶定時(shí)器的定時(shí)時(shí)間,將Proposer等待ProposeResponse 的時(shí)間通知 Acceptor。 Proposer 判斷 Prepare Response 是否合法包括:判斷 Prepare Response 的response ID 與 Prepare Request 的 request ID 是否相同,如果相同,則判定 PrepareResponse合法;如果不相同,則判定Prepare Response不合法。Proposer根據(jù)提案響應(yīng)信息判斷Acceptor是否允許Proposer發(fā)起提案包括:判斷提案響應(yīng)信息是否為null,如果為null,則判定Acceptor允許Proposer發(fā)起提案;否貝1J,判定Acceptor不允許Proposer發(fā)起提案。在Acceptor允許Proposer發(fā)起提案時(shí),Proposer還對(duì)允許發(fā)起提案的Acceptor的數(shù)量進(jìn)行累計(jì)。Proposer根據(jù)總節(jié)點(diǎn)數(shù)量判斷允許發(fā)起提案的Acceptor的數(shù)量是否達(dá)到允許發(fā)起提案的最小要求值,包括:判斷允許發(fā)起提案的Acceptor的數(shù)量是否達(dá)到總節(jié)點(diǎn)數(shù)量加I的二分之一的向上取整值。Proposer在定時(shí)器到達(dá)定時(shí)時(shí)間仍未收到Propose Response的情況下,確定提案失敗,標(biāo)記出主節(jié)點(diǎn)未確定。步驟103的偽代碼如下:
      OnPrepareResponseO { if(response.responseID != state.requestID) return;
      if(response.acceptedProposal == null)
      nurnOpened++;
      if(QuorumAccept(numOpened)) {state.timeout = T;
      SetTimeout(T);
      request.type = ProposeRequest; request.requestID = state.requestID request.proposal.proposal ID = self, proposal ID; request.proposal, timeout = state, timeout;
      Broadcast(request);
      }
      }
      OnTimeoutO {state.requestID = null; state.1easeOwner = false
      }步驟104:Acceptor收到Propose Request之后,判斷是否已允許Proposer發(fā)起提案,如果是,生成Propose Response,攜帶接受信息,將Propose Response發(fā)送給Proposer ;Acceptor判斷是否已允許Proposer發(fā)起申請(qǐng),包括:判斷Propose Request的request ID是否小于已接收的最大的request ID,如果是,貝U判定未允許Proposer發(fā)起申請(qǐng);如果不是,則判斷已允許Proposer發(fā)起申請(qǐng)。Acceptor還按照Propose Request中攜帶的定時(shí)時(shí)間注冊(cè)一定時(shí)器,記錄等待租約廣播消息的時(shí)間,在定時(shí)器到達(dá)而未收到租約廣播消息的情況下,標(biāo)記當(dāng)前未接受提案,允許請(qǐng)求提案的Proposer發(fā)起提案。步驟104的偽代碼如下:
      OiiProposeReqiiest()(
      if(request.requestlD < state.highestF^equestlD) return;
      state.acceptedProposal = request.proposal;
      SetTiineout(state,acceptedProposal.timeout); response.type = ProposeResponse; response.responseID = request.requestID;
      Send(response);
      }
      OnTimeoutQ {
      state.acceptedProposal = null:
      }步驟105:Proposer 收到 Propose Response 消息之后,根據(jù) Propose Response 是否攜帶接受信息,判斷接受提案的Acceptor的數(shù)量是否達(dá)到提案被接受的最小要求值,如果達(dá)到,說(shuō)明當(dāng)前節(jié)點(diǎn)成為L(zhǎng)eader,廣播租約廣播消息給所有的Learner,廣播被接受的提案。Proposer在收到Propose Response后,還判斷Propose Response 的response ID與Prepare Request的request ID是否相同,如果相同,則對(duì)接受提案的Acceptor的數(shù)量進(jìn)行累計(jì),并判斷接受提案的Acceptor的數(shù)量是否達(dá)到最小要求值。Proposer根據(jù)總節(jié)點(diǎn)數(shù)量判斷接受提案的Acceptor的數(shù)量是否達(dá)到最小要求值,包括:判斷接受提案的Acc印tor的數(shù)量是否達(dá)到總節(jié)點(diǎn)數(shù)量加I的二分之一的向上取整值。Proposer在判斷出接受提案的Acceptor的數(shù)量達(dá)到最小要求值時(shí),確定提案成功,標(biāo)記出主節(jié)點(diǎn)已確定。步驟105的偽代碼如下:
      OnProposeResponseO {
      if(response.responseID != state.requestID)
      return;
      iiumAccepted++;
      i!'(QuorumAccept(nuinAccepted)) { state.1easeOwner = true;
      Broadcast(state)
      }
      }在步驟105中判斷接受提案的Acc印tor的數(shù)量是否達(dá)到最小要求值的偽代碼如下:以MajorityQuorum為例,接受 一個(gè)選舉結(jié)果的函數(shù)如下:QuorumAccept(numAccepted){return (numAccepted >= ceil ((double) (numNodes+1)/2));}在步驟103中判斷允許發(fā)起申請(qǐng)的Acc印tor的數(shù)量是否達(dá)到最小要求值的偽代碼與上述偽代碼類似,區(qū)別僅在于變量略有不同。本實(shí)施方式中成員信息交換通道主要監(jiān)控節(jié)點(diǎn)的加入或者離開(kāi),相關(guān)的消息包括節(jié)點(diǎn)之間的MemberJoin和MemberLeave,集群中的節(jié)點(diǎn)均保存集群的總節(jié)點(diǎn)數(shù)量,在接收到MemberJoin后在總節(jié)點(diǎn)數(shù)量中加上增加的節(jié)點(diǎn)的數(shù)量;在接收到MemberLeave后在總節(jié)點(diǎn)數(shù)量中減去離開(kāi)的節(jié)點(diǎn)的數(shù)量。偽代碼如下:OnMeinberJoin0.!nuinNodes++;
      }
      OnMeinberLeaveO { nuinNodes—;
      }如圖2所示,本實(shí)施方式還提供了一種節(jié)點(diǎn),包括:提案發(fā)起單元、提案單元和主節(jié)點(diǎn)確定單元,其中:提案發(fā)起單元,用于向集群中除自身外的節(jié)點(diǎn)請(qǐng)求發(fā)起提案,判斷允許自身發(fā)起提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到允許發(fā)起提案的最小要求值,如果達(dá)到,則通知提案單元;提案單元,用于向集群中除自身外的節(jié)點(diǎn)廣播提案,并判斷接受提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到提案被接受的最小要求值,如果達(dá)到,則通知主節(jié)點(diǎn)確定單元;

      主節(jié)點(diǎn)確定單元,用于確定提案的節(jié)點(diǎn)為主節(jié)點(diǎn),向集群中除自身外的節(jié)點(diǎn)廣播被接受的提案。提案發(fā)起單元,具體用于在向集群中除自身外的節(jié)點(diǎn)請(qǐng)求發(fā)起提案后,接收響應(yīng)消息,根據(jù)響應(yīng)消息中攜帶的提案響應(yīng)信息判斷發(fā)送響應(yīng)消息的節(jié)點(diǎn)是否允許發(fā)起提案,如果允許,則對(duì)允許發(fā)起提案的節(jié)點(diǎn)的數(shù)量進(jìn)行累計(jì),并根據(jù)集群的總節(jié)點(diǎn)數(shù)量判斷允許發(fā)起提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到允許發(fā)起提案的最小要求值。提案單元,具體用于在向集群中除自身外的節(jié)點(diǎn)廣播提案后,接收響應(yīng)消息,根據(jù)響應(yīng)消息中是否攜帶接受信息判斷發(fā)送響應(yīng)消息的節(jié)點(diǎn)是否接受提案,如果接受,則對(duì)接受提案的節(jié)點(diǎn)的數(shù)量進(jìn)行累計(jì),并根據(jù)集群的總節(jié)點(diǎn)數(shù)量判斷接受提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到提案被接受的最小要求值。允許發(fā)起提案的最小要求值和提案被接受的最小要求值是集群的總節(jié)點(diǎn)數(shù)量加I的二分之一的向上取整值。集群的總節(jié)點(diǎn)數(shù)量由提案發(fā)起單元和提案單元保存,集群中的各節(jié)點(diǎn)監(jiān)控集群中節(jié)點(diǎn)的加入和離開(kāi),在有節(jié)點(diǎn)加入時(shí),在總節(jié)點(diǎn)數(shù)量中加上增加的節(jié)點(diǎn)的數(shù)量,在有節(jié)點(diǎn)離開(kāi)時(shí),在總節(jié)點(diǎn)數(shù)量上減去離開(kāi)的節(jié)點(diǎn)的數(shù)量。如圖3所示,本實(shí)施方式的另一種節(jié)點(diǎn),包括:發(fā)起判斷單元和提案判斷單元,其中:發(fā)起判斷單元,用于在接收到請(qǐng)求發(fā)起提案的消息后,根據(jù)在接收到消息前是否已接受提案,向發(fā)送消息的節(jié)點(diǎn)返回響應(yīng)消息,指示是否允許發(fā)送消息的節(jié)點(diǎn)發(fā)起提案;提案判斷單元,用于在接收到提案后,判斷是否已允許發(fā)送提案的節(jié)點(diǎn)發(fā)起提案,如果是,則向發(fā)送提案的節(jié)點(diǎn)返回響應(yīng)消息,指示接受提案。發(fā)起判斷單元,還用于在接收到請(qǐng)求發(fā)起提案的消息后,判斷請(qǐng)求發(fā)起提案的消息的request ID是否大于已接收到的最大的request ID,如果是,則執(zhí)行根據(jù)在接收到消息前是否已接受提案,向發(fā)送消息的節(jié)點(diǎn)返回響應(yīng)消息,并記錄當(dāng)前的請(qǐng)求發(fā)起提案的消息的request ID為已接收到的最大的request ID。提案判斷單元,還用于在向發(fā)送提案的節(jié)點(diǎn)返回響應(yīng)消息,指示接受提案后,等待發(fā)送提案的節(jié)點(diǎn)廣播的被接受的提案,如果在等待時(shí)間內(nèi)未接收到發(fā)送提案的節(jié)點(diǎn)廣播的被接受的提案,則標(biāo)記當(dāng)如未接受:提案,允許請(qǐng)求提案的節(jié)點(diǎn)發(fā)起提案。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來(lái)實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來(lái)實(shí)現(xiàn),從而可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來(lái)執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來(lái)實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。以上該僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      權(quán)利要求
      1.一種主節(jié)點(diǎn)的選舉方法,包括: 集群中的各節(jié)點(diǎn)向集群中除自身外的節(jié)點(diǎn)請(qǐng)求發(fā)起提案,判斷允許自身發(fā)起提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到允許發(fā)起提案的最小要求值,如果達(dá)到,則向集群中除自身外的節(jié)點(diǎn)廣播提案,并判斷接受提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到提案被接受的最小要求值,如果達(dá)到,則確定提案的節(jié)點(diǎn)為主節(jié)點(diǎn),向集群中除自身外的節(jié)點(diǎn)廣播被接受的提案。
      2.如權(quán)利要求1所述的方法,其特征在于,判斷允許自身發(fā)起提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到允許發(fā)起提案的最小要求值,包括: 在向集群中除自身外的節(jié)點(diǎn)請(qǐng)求發(fā)起提案后,接收響應(yīng)消息,根據(jù)響應(yīng)消息中攜帶的提案響應(yīng)信息判斷發(fā)送響應(yīng)消息的節(jié)點(diǎn)是否允許發(fā)起提案,如果允許,則對(duì)允許發(fā)起提案的節(jié)點(diǎn)的數(shù)量進(jìn)行累計(jì),并根據(jù)集群的總節(jié)點(diǎn)數(shù)量判斷允許發(fā)起提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到允許發(fā)起提案的最小要求值。
      3.如權(quán)利要求1所述的方法,其特征在于,判斷接受提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到提案被接受的最小要求值,包括: 在向集群中除自身外的節(jié)點(diǎn)廣播提案后,接收響應(yīng)消息,根據(jù)響應(yīng)消息中是否攜帶接受信息判斷發(fā)送響應(yīng)消息的節(jié)點(diǎn)是否接受提案,如果接受,則對(duì)接受提案的節(jié)點(diǎn)的數(shù)量進(jìn)行累計(jì),并根據(jù)集群的總節(jié)點(diǎn)數(shù)量判斷接受提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到提案被接受的最小要求值。
      4.如權(quán)利要求2或3所述的方法,其特征在于,所述允許發(fā)起提案的最小要求值和提案被接受的最小要求值是集群的總節(jié)點(diǎn)數(shù)量加I的二分之一的向上取整值。
      5.如權(quán)利要求2或3所述的方法,其特征在于,所述集群的總節(jié)點(diǎn)數(shù)量由集群中的各節(jié)點(diǎn)保存,集群中的各節(jié)點(diǎn)監(jiān)控集群中節(jié)點(diǎn)的加入和離開(kāi),在有節(jié)點(diǎn)加入時(shí),在總節(jié)點(diǎn)數(shù)量中加上增加的節(jié)點(diǎn)的數(shù)量,在有節(jié)點(diǎn)離開(kāi)時(shí),在總節(jié)點(diǎn)數(shù)量上減去離開(kāi)的節(jié)點(diǎn)的數(shù)量。
      6.一種主節(jié)點(diǎn)的選舉方法,包括: 集群中的各節(jié)點(diǎn)在接收到請(qǐng)求發(fā)起提案的消息后,根據(jù)在接收到所述消息前是否已接受提案,向發(fā)送所述消息的節(jié)點(diǎn)返回響應(yīng)消息,指示是否允許發(fā)送所述消息的節(jié)點(diǎn)發(fā)起提案,并且,在接收到提案后,判斷是否已允許發(fā)送提案的節(jié)點(diǎn)發(fā)起提案,如果是,則向發(fā)送提案的節(jié)點(diǎn)返回響應(yīng)消息,指示接受提案。
      7.如權(quán)利要求6所述的方法,其特征在于,還包括: 集群中的各節(jié)點(diǎn)在接收到請(qǐng)求發(fā)起提案的消息后,還判斷所述請(qǐng)求發(fā)起提案的消息的請(qǐng)求標(biāo)識(shí)(request ID)是否大于已接收到的最大的request ID,如果是,則執(zhí)行所述根據(jù)在接收到所述消息前是否已接受提案,向發(fā)送所述消息的節(jié)點(diǎn)返回響應(yīng)消息,并記錄當(dāng)前的請(qǐng)求發(fā)起提案的消息的request ID為已接收到的最大的request ID。
      8.如權(quán)利要求6所述的方法,其特征在于,還包括: 在向發(fā)送提案的節(jié)點(diǎn)返回響應(yīng)消息,指示接受提案后,等待發(fā)送提案的節(jié)點(diǎn)廣播的被接受的提案,如果在等待時(shí)間內(nèi)未接收到發(fā)送提案的節(jié)點(diǎn)廣播的被接受的提案,則標(biāo)記當(dāng)iu未接受提案,允許請(qǐng)求提案的節(jié)點(diǎn)發(fā)起提案。
      9.一種節(jié)點(diǎn),包括:提案發(fā)起單元、提案單元和主節(jié)點(diǎn)確定單元,其中: 所述提案發(fā)起單元,用于向集群中除自身外的節(jié)點(diǎn)請(qǐng)求發(fā)起提案,判斷允許自身發(fā)起提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到允許發(fā)起提案的最小要求值,如果達(dá)到,則通知所述提案單元; 所述提案單元,用于向集群中除自身外的節(jié)點(diǎn)廣播提案,并判斷接受提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到提案被接受的最小要求值,如果達(dá)到,則通知所述主節(jié)點(diǎn)確定單元; 所述主節(jié)點(diǎn)確定單元,用于確定提案的節(jié)點(diǎn)為主節(jié)點(diǎn),向集群中除自身外的節(jié)點(diǎn)廣播被接受的提案。
      10.一種節(jié)點(diǎn),包括:發(fā)起判斷單元和提案判斷單元,其中: 所述發(fā)起判斷單元,用于 在接收到請(qǐng)求發(fā)起提案的消息后,根據(jù)在接收到所述消息前是否已接受提案,向發(fā)送所述消息的節(jié)點(diǎn)返回響應(yīng)消息,指示是否允許發(fā)送所述消息的節(jié)點(diǎn)發(fā)起提案; 所述提案判斷單元,用于在接收到提案后,判斷是否已允許發(fā)送提案的節(jié)點(diǎn)發(fā)起提案,如果是,則向發(fā)送提案的節(jié)點(diǎn)返回響應(yīng)消息,指示接受提案。
      全文摘要
      本發(fā)明公開(kāi)了一種主節(jié)點(diǎn)的選舉方法及節(jié)點(diǎn),包括集群中的各節(jié)點(diǎn)向集群中除自身外的節(jié)點(diǎn)請(qǐng)求發(fā)起提案,判斷允許自身發(fā)起提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到允許發(fā)起提案的最小要求值,如果達(dá)到,則向集群中除自身外的節(jié)點(diǎn)廣播提案,并判斷接受提案的節(jié)點(diǎn)的數(shù)量是否達(dá)到提案被接受的最小要求值,如果達(dá)到,則確定提案的節(jié)點(diǎn)為主節(jié)點(diǎn),向集群中除自身外的節(jié)點(diǎn)廣播被接受的提案。本發(fā)明從集群系統(tǒng)的節(jié)點(diǎn)中動(dòng)態(tài)協(xié)商選舉出主節(jié)點(diǎn),達(dá)到在集群中的節(jié)點(diǎn)數(shù)量彈性伸縮的情況下確定主節(jié)點(diǎn)的目的。
      文檔編號(hào)H04L29/08GK103118084SQ201310022088
      公開(kāi)日2013年5月22日 申請(qǐng)日期2013年1月21日 優(yōu)先權(quán)日2013年1月21日
      發(fā)明者顏秉珩, 張俊, 崔贏, 張現(xiàn)忠 申請(qǐng)人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1