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

服務器系統(tǒng)中領導者服務器的確定方法和服務器系統(tǒng)的制作方法

文檔序號:7776270閱讀:162來源:國知局
服務器系統(tǒng)中領導者服務器的確定方法和服務器系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種服務器系統(tǒng)中領導者服務器的確定方法和服務器系統(tǒng),其中,該確定方法包括:通過至少一輪提名在多個服務器中確定領導者服務器,其中,在每一輪提名中,一服務器向服務器系統(tǒng)中的其他服務器發(fā)送提名消息,提名消息用于供其他服務器判斷是否同意發(fā)送該提名消息的服務器成為領導者服務器;如果在一輪提名中,發(fā)送提名消息的服務器未被確定為領導者服務器,則由不同意該服務器成為領導者服務器的一服務器在下一輪提名中向其他服務器發(fā)送提名消息;其中,在一服務器發(fā)送提名消息后,如果系統(tǒng)中的其他全部服務器、或超過預定數(shù)量的服務器均同意該發(fā)送提名消息的服務器成為領導者服務器,則將該發(fā)送提名消息的服務器確定為領導者服務器。
【專利說明】服務器系統(tǒng)中領導者服務器的確定方法和服務器系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及計算機領域,并且特別地,涉及一種服務器系統(tǒng)中領導者服務器的確定方法和服務器系統(tǒng)。
【背景技術】
[0002]隨著計算機系統(tǒng)處理能力的日益提升,利用這些處理能力的方法層出不窮,其中,采用分布式架構的計算機系統(tǒng)就是有效提高其處理能力的方案之一。分布式架構允許帶寬、性能和可靠性等系統(tǒng)資源的靈活配置,采用分布式架構的系統(tǒng)可以包含數(shù)量眾多的分布式節(jié)點,這些節(jié)點可以相互通信以達到處理各種任務消息的目的。
[0003]為了共同完成某項任務,眾多分布式節(jié)點之間需要維護某種一致的資源視圖,例如每個客戶端節(jié)點需要知道整個分布式文件系統(tǒng)中文件的布局信息以便訪問文件,如果這種視圖不一致將無法保證文件數(shù)據(jù)的一致性。一致的資源視圖保證了任務處理在整個分布式系統(tǒng)中的處理過程就好像在單個節(jié)點上處理一樣,否則,不一致的資源視圖會導致處理邏輯錯誤,最終無法產(chǎn)生正確的結果。分布式系統(tǒng)可以是分布式文件系統(tǒng)、分布式數(shù)據(jù)庫等存儲系統(tǒng),也可能是其他類型計算機處理系統(tǒng)。
[0004]在現(xiàn)有技術中,分布式系統(tǒng)多數(shù)情況下可以使用Paxos協(xié)議來在眾多分布式節(jié)點間達成一致性,該協(xié)議涉及兩種角色:領導者服務器和接受者服務器,其中,領導者服務器在整個協(xié)議中做協(xié)調(diào)工作,保證大多數(shù)接受者服務器認可的結果作為最終結果,并將最終結果提交給所有接受者服務器,這樣,整個分布式系統(tǒng)就形成一致的結果,各個節(jié)點都基于這個結果進行處理。某個分布式節(jié)點可以承擔這兩種角色中的一種或多種。
[0005]Paxos協(xié)議包含如下幾個階段:
[0006]1.提案階段。領導者服務器創(chuàng)建一個編號為N的提案,這個提案編號必須大于該領導者服務器之前創(chuàng)建的提案編號,領導者服務器將包含這個提案編號的準備消息發(fā)送給接受者服務器;
[0007]2.承諾階段。接受者服務器收到準備消息后,如果發(fā)現(xiàn)這個提案號是它所見到最大的,那么接受者服務器承諾會忽略今后所有比該編號小的任何準備消息;否則,接受者服務器忽略這個準備消息,因為它太舊了,如果接受者服務器之前接受過其他提案,那么接受者服務器需要在給領導者服務器的承諾消息中加入之前的提案編號和提案的值;
[0008]3.請求接受階段。如果領導者服務器發(fā)現(xiàn)大多數(shù)接受者服務器都承諾接受這個提案,那么它就需要給提案設置一個值,如果有任何接受者服務器在承諾消息中返回了之前它們曾經(jīng)接受的提案,那么領導者服務器應該選擇其中編號最大的提案的值作為本次提案的值;否則,領導者服務器可以選擇它想要的任意值,值確定后,領導者服務器將包含該值的請求接受消息發(fā)給每個接受者服務器;
[0009]4.接受階段。接受者服務器收到請求接受消息后,如果接受者服務器還沒有承諾過任何大于當前提案號的提案,那么接受者服務器必須接受這個提案,并給領導者服務器發(fā)送接受消息;否則,接受者服務器可以忽略該請求接受消息;[0010]5.提交請求階段。如果領導者服務器收到大多數(shù)接受者服務器的接受消息后,給每個接受者服務器發(fā)送提交請求消息;否則,繼續(xù)沿用之前的值;
[0011]6.提交階段。接受者服務器將提案和提案的值保存在本地,至此一致的視圖已經(jīng)建立。
[0012]其一致的制圖建立流程如圖1所示。
[0013]在現(xiàn)有技術中,領導者服務器故障后,分布式一致性協(xié)議(即Paxos協(xié)議)會發(fā)生阻塞,整個系統(tǒng)會因此失效。在Paxos協(xié)議中領導者服務器扮演著協(xié)調(diào)一致的角色,它是構建一致性視圖過程的發(fā)起者和終結者,沒有領導者服務器的存在,整個Paxos協(xié)議都會失效。但是,Paxos協(xié)議本身沒有明確規(guī)定如何確定領導者服務器,為了解決這個問題,在現(xiàn)有技術中,使用靜態(tài)指定的方式確定領導者服務器,然而,當領導者服務器發(fā)生故障時,整個協(xié)議便失效,這極大的影響了協(xié)議的可用性。除非領導者服務器故障排除后重新恢復工作,否則整個分布式系統(tǒng)的功能會發(fā)生阻塞。因此,Paxos協(xié)議需要一種高容錯的確定領導者服務器的機制。
[0014]而現(xiàn)有的容錯技術雖然能夠保證故障發(fā)生后系統(tǒng)繼續(xù)提供服務,但是依然會引入其他功能性阻塞問題。當領導者服務器發(fā)生故障后,會指定另一個領導者服務器代替前者行使協(xié)調(diào)一致性的職責,但是,如果前者故障恢復后重新回到系統(tǒng)中,那么此時就會同時存在兩個領導者服務器,此時,兩個領導者服務器都會向其他接受者服務器發(fā)布提案,由于兩者的爭搶,沒有任何提案最后可以被提交,整個Paxos協(xié)議依然會陷入一種功能上的阻塞狀態(tài),極大影響了整個系統(tǒng)的可用性,因此,Paxos協(xié)議需要一種高容錯并且非阻塞的確定領導者服務器的機制。
[0015]針對相關技術中服務器系統(tǒng)中采用靜態(tài)指定的方式確定領導者服務器,沒有明確的確定領導者服務器的方法,導致在領導者服務器發(fā)生故障后,整個分布式一致性失效并容易出現(xiàn)多個領導者服務器相互僵持的阻塞狀態(tài)的問題,目前尚未提出有效的解決方案。

【發(fā)明內(nèi)容】

[0016]針對相關技術中服務器系統(tǒng)中采用靜態(tài)指定的方式確定領導者服務器,沒有明確的確定領導者服務器的方法,導致在領導者服務器發(fā)生故障后,整個分布式一致性失效并容易出現(xiàn)多個領導者服務器相互僵持的阻塞狀態(tài)的問題,本發(fā)明提出一種服務器系統(tǒng)中領導者服務器的確定方法和服務器系統(tǒng),能夠通過至少一輪提名,一服務器向服務器系統(tǒng)中的其他服務器發(fā)送提名消息,并接收來自于其他服務器的確認消息,確定出服務器系統(tǒng)中的領導者服務器。
[0017]本發(fā)明的技術方案是這樣實現(xiàn)的:
[0018]根據(jù)本發(fā)明的一個方面,提供了一種服務器系統(tǒng)中領導者服務器的確定方法,該確定方法包括:
[0019]通過至少一輪提名在多個服務器中確定領導者服務器,其中,在每一輪提名中,一服務器向服務器系統(tǒng)中的其他服務器發(fā)送提名消息,提名消息用于供其他服務器判斷是否同意發(fā)送該提名消息的服務器成為領導者服務器;
[0020]如果在一輪提名中,發(fā)送提名消息的服務器未被確定為領導者服務器,則由不同意該服務器成為領導者服務器的一服務器在下一輪提名中向其他服務器發(fā)送提名消息;[0021]其中,在一服務器發(fā)送提名消息后,如果服務器系統(tǒng)中的其他全部服務器、或超過預定數(shù)量的服務器均同意該發(fā)送提名消息的服務器成為領導者服務器,則將該發(fā)送提名消息的服務器確定為領導者服務器。
[0022]此外,在每一輪提名中,一服務器向服務器系統(tǒng)中的其他服務器發(fā)送提名消息的情況下,該服務器啟動定時器,定時器用于規(guī)定本輪提名持續(xù)的時間,如果在定時器規(guī)定的時間范圍內(nèi),服務器系統(tǒng)中的其他全部服務器、或超過預定數(shù)量的服務器均同意該發(fā)送提名消息的服務器成為領導者服務器,則將該發(fā)送提名消息的服務器確定為領導者服務器;
[0023]如果在定時器規(guī)定的時間范圍內(nèi),同意該發(fā)送提名消息的服務器成為領導者服務器的服務器未達到預定數(shù)量,則發(fā)送提名消息的服務器未被確定為領導者服務器,本輪提
々口水o
[0024]其中,提名消息中包含發(fā)送該提名消息的服務器的性能等級信息,接收到提名消息的服務器根據(jù)自身的性能等級信息與提名消息中的性能等級信息的比較結果,判斷是否同意發(fā)送該提名消息的服務器成為領導者服務器。
[0025]此外,提名消息中具有表示該提名消息發(fā)送時間的時間信息,如果一服務器發(fā)送了第一提名消息,并且該服務器從其他服務器接收到第二提名消息,則該服務器根據(jù)第一提名消息中的時間信息和第二提名消息中的時間信息,確定根據(jù)第二提名消息回復確認消息、或者忽略第二提名消息,其中,確認消息用于表示同意發(fā)送第二提名消息的服務器成為領導者服務器。
[0026]并且,接收到第二提名消息的服務器判斷第一提名消息中的時間信息所表示的時間點是否早于第二提名消息中的時間信息所表示的時間點,在判斷結果為是的情況下,根據(jù)第二提名消息回復確認消息;否則忽略第二提名消息。
[0027]其中,確定所述性能等級信息的條件包括:
[0028]進程的備份功能、電源的可延續(xù)性能、CPU的主頻、CPU核心數(shù)、內(nèi)存容量、硬盤容
量、硬盤讀寫速率。
[0029]其中,領導者服務器為用于協(xié)調(diào)服務器系統(tǒng)中的分布式一致性的服務器。
[0030]此外,該確定方法進一步包括:
[0031]確定的領導者服務器向服務器系統(tǒng)的其他服務器通知本服務器為領導者服務器。
[0032]根據(jù)本發(fā)明的另一方面,提供了一種服務器系統(tǒng),包括多個服務器,其中,該服務器系統(tǒng)中的每個服務器包括:
[0033]發(fā)送模塊,用于在一輪提名中,向服務器系統(tǒng)中的其他服務器發(fā)送提名消息,提名消息用于供其他服務器判斷是否同意發(fā)送該提名消息的服務器成為領導者服務器;
[0034]確定模塊,用于發(fā)送提名消息后,如果服務器系統(tǒng)中的其他全部服務器、或超過預定數(shù)量的服務器均同意本地服務器成為領導者服務器,則將本地服務器確定為領導者服務器;
[0035]其中,服務器系統(tǒng)通過至少一輪提名在多個服務器中確定領導者服務器,在每一輪提名中,一服務器向服務器系統(tǒng)中的其他服務器發(fā)送提名消息,如果在一輪提名中,發(fā)送提名消息的服務器未被確定為領導者服務器,則由不同意該服務器成為領導者服務器的一服務器在下一輪提名中向其他服務器發(fā)送提名消息。
[0036]此外,每個服務器進一步包括:[0037]定時器,用于規(guī)定一輪提名持續(xù)的時間,并且定時器在定時器所在的服務器向服務器系統(tǒng)中的其他服務器發(fā)送提名消息的情況下啟動,如果在定時器規(guī)定的時間范圍內(nèi),服務器系統(tǒng)中的其他全部服務器、或超過預定數(shù)量的服務器均同意定時器所在的服務器成為領導者服務器,則確定模塊將該所在的服務器確定為領導者服務器;
[0038]如果在定時器規(guī)定的時間范圍內(nèi),定時器所在的服務器未被確定為領導者服務器,則確定模塊確定本輪提名結束。
[0039]此外,提名消息中包含發(fā)送該提名消息的服務器的性能等級信息,并且,每個服務器進一步包括:
[0040]判斷模塊,用于在接收到來自于其他服務器的提名消息的情況下,根據(jù)自身的性能等級信息與提名消息中的性能等級信息的比較結果,判斷是否同意發(fā)送該提名消息的服務器成為領導者服務器;
[0041]并且,發(fā)送模塊進一步用于在判斷模塊的判斷結果為是的情況下,向發(fā)送該提名消息的服務器發(fā)送確認消息,其中,確認消息用于表示同意發(fā)送該提名消息的服務器成為領導者服務器;發(fā)送模塊還用于在判斷模塊的判斷結果為否的情況下,向其他服務器發(fā)送提名消息。
[0042]其中,提名消息中具有表示該提名消息發(fā)送時間的時間信息,如果一服務器發(fā)送了第一提名消息,并且該服務器從其他服務器接收到第二提名消息,則該服務器的判斷模塊根據(jù)第一提名消息中的時間信息和第二提名消息中的時間信息,確定根據(jù)第二提名消息回復確認消息、或者忽略第二提名消息。
[0043]并且,接收到第二提名消息的服務器的判斷模塊用于判斷第一提名消息中的時間信息所表示的時間點是否早于第二提名消息中的時間信息所表示的時間點,在判斷結果為是的情況下,根據(jù)第二提名消息回復確認消息;否則忽略第二提名消息。
[0044]本發(fā)明通過至少一輪提名,并且,在每一輪提名中,由一服務器向其他服務器發(fā)送提名消息,并接收來自其他服務器的確認消息,如果在本輪提名中,發(fā)送提名消息的服務器被確定為領導者服務器,則向其他服務器通知本服務器為領導者服務器,如果在本輪提名中,發(fā)送提名消息的服務器沒有被確定為領導者服務器,則由不同意該服務器成為領導者服務器的一服務器在下一輪提名中向其他服務器發(fā)送提名消息,能夠在服務器系統(tǒng)中確定出唯一的領導者服務器,從而使服務器系統(tǒng)中分布式一致性得以保證,也保證了服務器系統(tǒng)的穩(wěn)定流暢運行。
【專利附圖】

【附圖說明】
[0045]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0046]圖1是在現(xiàn)有技術中,服務器系統(tǒng)中眾多分布式節(jié)點一致性視圖的建立流程圖;
[0047]圖2是根據(jù)本發(fā)明實施例的服務器系統(tǒng)中領導者服務器的確定方法流程圖;
[0048]圖3是根據(jù)本發(fā)明實施例的服務器系統(tǒng)中每個服務器的結構框圖;
[0049]圖4是根據(jù)本發(fā)明一個實施例的服務器系統(tǒng)中領導者服務器的確定方法實現(xiàn)過程中提名階段的流程圖;
[0050]圖5是根據(jù)本發(fā)明一個實施例的服務器系統(tǒng)中領導者服務器的確定方法實現(xiàn)過程中確認階段的流程圖;
[0051]圖6是根據(jù)本發(fā)明一個實施例的服務器系統(tǒng)中領導者服務器的確定方法實現(xiàn)過程中決勝階段的流程圖;
[0052]圖7是根據(jù)本發(fā)明一個實施例的服務器系統(tǒng)中領導者服務器的確定方法實現(xiàn)過程中當選階段的流程圖。
【具體實施方式】
[0053]下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0054]根據(jù)本發(fā)明的實施例,提供了一種服務器系統(tǒng)中領導者服務器的確定方法。
[0055]如圖2所示,該確定方法包括:
[0056]步驟S201,通過至少一輪提名在多個服務器中確定領導者服務器,其中,在每一輪提名中,一服務器向服務器系統(tǒng)中的其他服務器發(fā)送提名消息,提名消息用于供其他服務器判斷是否同意發(fā)送該提名消息的服務器成為領導者服務器;
[0057]在此步驟中,作為一新加入服務器系統(tǒng)的服務器,在未知服務器系統(tǒng)中領導者服務器是否存在、和/或運行狀態(tài)、和/或性能等級信息的情況下,向系統(tǒng)中其他服務器發(fā)送提名消息,也就是說,即使服務器系統(tǒng)中之前的領導者服務器出現(xiàn)異常后又恢復正常工作,也只能作為新加入的節(jié)點,并不能繼續(xù)擁有領導者服務器的地位,如果想成為領導者服務器,必須經(jīng)過提名,從而保證了服務器系統(tǒng)中,領導者服務器只有一個,不會出現(xiàn)多個領導者服務器相互僵持導致服務器系統(tǒng)發(fā)生功能阻塞的情況,也就是說,在服務器系統(tǒng)中,如果領導者服務器不存在、或者一旦領導者服務器發(fā)生故障,在分布式系統(tǒng)就某個視圖達成一致前要先就領導者服務器達成一致,并且每次重新確定領導者服務器都要經(jīng)歷一個達成一致的過程。
[0058]步驟S203,如果在一輪提名中,發(fā)送提名消息的服務器未被確定為領導者服務器,則由不同意該服務器成為領導者服務器的一服務器在下一輪提名中向其他服務器發(fā)送提名消息;
[0059]步驟S205,其中,在一服務器發(fā)送提名消息后,如果服務器系統(tǒng)中的其他全部服務器、或超過預定數(shù)量的服務器均同意該發(fā)送提名消息的服務器成為領導者服務器,則將該發(fā)送提名消息的服務器確定為領導者服務器。
[0060]此外,在每一輪提名中,一服務器向服務器系統(tǒng)中的其他服務器發(fā)送提名消息的情況下,該服務器啟動定時器,定時器用于規(guī)定本輪提名持續(xù)的時間,如果在定時器規(guī)定的時間范圍內(nèi),服務器系統(tǒng)中的其他全部服務器、或超過預定數(shù)量的服務器均同意該發(fā)送提名消息的服務器成為領導者服務器,則將該發(fā)送提名消息的服務器確定為領導者服務器;
[0061]如果在定時器規(guī)定的時間范圍內(nèi),同意該發(fā)送提名消息的服務器成為領導者服務器的服務器未達到預定數(shù)量,則發(fā)送提名消息的服務器未被確定為領導者服務器,本輪提名結束;
[0062]例如,如果在定時器規(guī)定的時間范圍內(nèi),同意發(fā)送提名消息的服務器成為領導者服務器的服務器數(shù)量沒有達到預定數(shù)量,則該發(fā)送提名消息的服務器未被確定為領導者服務器,本輪提名仍然結束,該發(fā)送提名消息的服務器等待其他服務器的成為領導者服務器的通知或者接收新一輪提名中的來自其他服務器的提名消息。
[0063]其中,提名消息中包含發(fā)送該提名消息的服務器的性能等級信息,接收到提名消息的服務器根據(jù)自身的性能等級信息與提名消息中的性能等級信息的比較結果,判斷是否同意發(fā)送該提名消息的服務器成為領導者服務器。
[0064]此外,提名消息中具有表示該提名消息發(fā)送時間的時間信息,如果一服務器發(fā)送了第一提名消息,并且該服務器從其他服務器接收到第二提名消息,則該服務器根據(jù)第一提名消息中的時間信息和第二提名消息中的時間信息,確定根據(jù)第二提名消息回復確認消息、或者忽略第二提名消息,其中,確認消息用于表示同意發(fā)送第二提名消息的服務器成為領導者服務器。
[0065]并且,接收到第二提名消息的服務器判斷第一提名消息中的時間信息所表示的時間點是否早于第二提名消息中的時間信息所表示的時間點,在判斷結果為是的情況下,根據(jù)第二提名消息回復確認消息;否則忽略第二提名消息。
[0066]具體地,例如,在一輪提名中,在一服務器發(fā)送了第一提名消息以后,如果接收到來自其他服務器的第二提名消息,并且,該第二提名消息的發(fā)送時間點晚于該第一提名消息的發(fā)送時間點,則說明接收到第一提名消息的服務器不同意發(fā)送第一提名消息的服務器成為領導者服務器,所以該服務器向其他服務器發(fā)送第二提名消息,從而第二提名消息的發(fā)送時間點晚于第一提名消息的發(fā)送時間點;如果接收到的第二提名消息的發(fā)送時間點早于第一提名消息的發(fā)送時間點,則直接將該第二提名消息忽略。
[0067]此外,每一輪提名中,發(fā)送提名消息的服務器可以是一個,也可以是多個,而判斷哪一提名消息作為本輪提名的開始,則通過提名消息的發(fā)送時間點,并結合服務器的性能等級值決定。
[0068]其中,確定性能等級信息的條件包括以下參數(shù):進程的備份功能、電源的可延續(xù)性能、CPU的主頻、CPU核心數(shù)、內(nèi)存容量、硬盤容量、硬盤讀寫速率等等。進一步地,也可以根據(jù)以上參數(shù)的至少之一來確定性能等級信息。
[0069]例如,一種方式是根據(jù)實際情況,將上述條件加權考慮,得到性能等級值。
[0070]其中,領導者服務器為用于協(xié)調(diào)服務器系統(tǒng)中的分布式一致性的服務器。
[0071]此外,該確定方法進一步包括:
[0072]確定的領導者服務器向服務器系統(tǒng)的其他服務器通知本服務器為領導者服務器。
[0073]根據(jù)本發(fā)明的實施例,還提供了一種服務器系統(tǒng),包括多個服務器。
[0074]如圖3所示,該服務器系統(tǒng)中的每個服務器包括:
[0075]發(fā)送模塊31,用于在一輪提名中,向服務器系統(tǒng)中的其他服務器發(fā)送提名消息,提名消息用于供其他服務器判斷是否同意發(fā)送該提名消息的服務器成為領導者服務器;
[0076]確定模塊32,用于發(fā)送提名消息后,如果服務器系統(tǒng)中的其他全部服務器、或超過預定數(shù)量的服務器均同意本地服務器成為領導者服務器,則將本地服務器確定為領導者服務器;[0077]其中,服務器系統(tǒng)通過至少一輪提名在多個服務器中確定領導者服務器,在每一輪提名中,一服務器向服務器系統(tǒng)中的其他服務器發(fā)送提名消息,如果在一輪提名中,發(fā)送提名消息的服務器未被確定為領導者服務器,則由不同意該服務器成為領導者服務器的一服務器在下一輪提名中向其他服務器發(fā)送提名消息。
[0078]此外,每個服務器進一步包括:
[0079]定時器(未示出),用于規(guī)定一輪提名持續(xù)的時間,并且定時器在定時器所在的服務器向服務器系統(tǒng)中的其他服務器發(fā)送提名消息的情況下啟動,如果在定時器規(guī)定的時間范圍內(nèi),服務器系統(tǒng)中的其他全部服務器、或超過預定數(shù)量的服務器均同意定時器所在的服務器成為領導者服務器,則確定模塊32將該所在的服務器確定為領導者服務器;
[0080]如果在定時器規(guī)定的時間范圍內(nèi),定時器所在的服務器未被確定為領導者服務器,則確定模塊32確定本輪提名結束。
[0081]此外,提名消息中包含發(fā)送該提名消息的服務器的性能等級信息,并且,每個服務器進一步包括:
[0082]判斷模塊(未示出),用于在接收到來自于其他服務器的提名消息的情況下,根據(jù)自身的性能等級信息與提名消息中的性能等級信息的比較結果,判斷是否同意發(fā)送該提名消息的服務器成為領導者服務器;
[0083]并且,發(fā)送模塊31進一步用于在判斷模塊的判斷結果為是的情況下,向發(fā)送該提名消息的服務器發(fā)送確認消息,其中,確認消息用于表示同意發(fā)送該提名消息的服務器成為領導者服務器;發(fā)送模塊31還用于在判斷模塊的判斷結果為否的情況下,向其他服務器發(fā)送提名消息。
[0084]其中,提名消息中具有表示該提名消息發(fā)送時間的時間信息,如果一服務器發(fā)送了第一提名消息,并且該服務器從其他服務器接收到第二提名消息,則該服務器的判斷模塊根據(jù)第一提名消息中的時間信息和第二提名消息中的時間信息,確定根據(jù)第二提名消息回復確認消息、或者忽略第二提名消息。
[0085]并且,接收到第二提名消息的服務器的判斷模塊用于判斷第一提名消息中的時間信息所表示的時間點是否早于第二提名消息中的時間信息所表示的時間點,在判斷結果為是的情況下,根據(jù)第二提名消息回復確認消息;否則忽略第二提名消息。
[0086]例如,在一個實施例中,本發(fā)明提出的服務器系統(tǒng)中領導者服務器的確定方法的核心由如下幾個階段構成。其中,每個參與其中的分布式節(jié)點起初都是選舉人,在經(jīng)歷了選舉后,會產(chǎn)生唯一的領導者,其余成為接受者,選舉人需要記錄的信息包括:等級、時間點、候選標志位、確認選舉人集合和已確認的領導者,其中,等級描述該選舉人成為領導者的符合程度,不同的選舉人之間通過比較等級來確定誰更適合成為領導者;時間點是一個單調(diào)遞增的時間描述符,它描述整個選舉過程的推進過程;候選人標志位表明該選舉人是否正在經(jīng)歷被選舉為領導者的過程;確認選舉人集合描述所有認可該選舉人成為領導者的其他選舉人;已確認的領導者描述該選舉人已經(jīng)認可的領導者。
[0087]一、提名階段。如圖4所示,這個階段的主要職責是向分布式系統(tǒng)中的所有其他選舉人發(fā)出提名消息,表達自己意圖成為領導者的意愿。
[0088]1.清空選舉人集合,開始新的一輪提名;
[0089]2.獲取該選舉人當前的時間點,即發(fā)送提名消息的時間點;[0090]3.將候人選標志位標記為真,已確認的領導者標記為不存在;
[0091]4.向除自身外的其他選舉人發(fā)送提名消息;
[0092]5.啟動定時器。
[0093]二、確認階段。如圖5所示,這個階段的職責是處理來自其他選舉人的提名消息。
[0094]1.接收到來自其他節(jié)點的提名消息的節(jié)點比較接收到的提名消息內(nèi)包含的提名消息發(fā)送的時間點與該節(jié)點的時間點,如果該節(jié)點的時間點較大,那么直接丟棄該提名消息不予處理,進入步驟5 ;如果該節(jié)點的時間點較小,對于新加入系統(tǒng)的節(jié)點其初始的時間點必定落后于其他節(jié)點,此時為了幫助新節(jié)點加入系統(tǒng),本地先發(fā)起新的選舉,令本地時間點等于提名消息時間點,然后繼續(xù)處理提名消息,進入步驟2 ;
[0095]2.接收到提名消息的節(jié)點比較該提名消息中包含的發(fā)送該提名消息的節(jié)點的等級值與該節(jié)點等級值的大小,在該節(jié)點等級值較小的情況下,該節(jié)點不同意發(fā)送提名消息的節(jié)點成為為領導者,自己向其他節(jié)點發(fā)送提名消息。
[0096]3.接收到來自該節(jié)點的提名消息之后,判斷已確認的領導者是否存在,如果判斷結果為是,則說明本節(jié)點已經(jīng)確認過該節(jié)點發(fā)送來的提名消息,同意該節(jié)點為領導者,確認階段結束,否則,進入步驟4;
[0097]4.判斷候選人標志位是否為假,即自己是否正在經(jīng)歷被選舉為領導者的過程,并在判斷結果為自己沒有在經(jīng)歷被選舉為領導者的過程的情況下,向其他選舉人發(fā)送發(fā)送提名消息,爭取自己成為領導者;
[0098]5.判斷本節(jié)點是否正在參與選舉,或者本節(jié)點是否為新加入的節(jié)點,如果判斷結果為本節(jié)點沒有正在參與選舉,或者本節(jié)點為新加入的節(jié)點,則發(fā)起新一輪選舉,向其他節(jié)點發(fā)送提名消息,爭取讓新節(jié)點參與到選舉過程中來;
[0099]6.如果接收到來自其他節(jié)點的提名消息,并判斷已確認的領導者不存在,或者本地確認的領導者比發(fā)送提名消息的節(jié)點差,則向該發(fā)送提名消息的節(jié)點恢復確認消息,同意該節(jié)點成為領導者服務器,并啟動定時器。
[0100]三、決勝階段。如圖6所示,這個階段的主要職責是處理來自其他節(jié)點的確認消
肩、O
[0101]1.在一節(jié)點接收到來自其他節(jié)點的確認消息之后,比較該確認消息的時間點與本地時間點的大小,如果該時間點大于本節(jié)點的時間點,則可能本節(jié)點剛剛啟動,更新本節(jié)點的時間點,進入提名階段,否則,繼續(xù)決勝階段;
[0102]2.判斷候選人標志位是否為真,如果判斷結果為是,則說明該節(jié)點正在經(jīng)歷被選舉為領導者的過程,將該確認消息的發(fā)送者加入到確認選舉人集合;
[0103]3.如果在定時器規(guī)定的時間范圍內(nèi),系統(tǒng)中其他全部選舉人均同意本節(jié)點為領導者,則取消定時器,想其他選舉人發(fā)送勝選消息;否則,退出決勝階段,等待其他選舉人的勝選消息或者提名消息。
[0104]四、當選階段。如圖7所示,這個階段的主要職責是處理來自其他節(jié)點的勝選消息。判斷本節(jié)點如果沒有正在參與選舉,則進入提名階段,否則按照勝選消息的時間點更新本地時間點,取消確認階段啟動的定時器。
[0105]不難理解,在以上實施例描述的服務器系統(tǒng)中領導者服務器的確定方法,在選舉人發(fā)送的每一消息(包括提名消息、確認消息、勝選消息等等)中,均包含有該選舉人發(fā)送該消息的時間點,并且,在每一次發(fā)送消息之后,均啟動相應的定時器,以便控制選舉過程進行的時間。
[0106]此外,根據(jù)等級的定義,確定等級值的方法要客觀反映定義。例如,一種方式是考慮節(jié)點的可靠性,具有備份控制器、電源或電池的節(jié)點更合適成為領導者;還可以考慮節(jié)點的性能,具有較高CPU主頻、較多CPU核心數(shù)和內(nèi)存容量以及較高性能硬盤的節(jié)點更合適成為領導者。將上述因素加權綜合考慮得出的等級值作為評判標準,在本實施例中規(guī)定,等級的值越小越合適成為領導者,當然,在其他實施例中,根據(jù)實際情況和用戶需要,也可以規(guī)定等級值越大越合適成為領導者。
[0107]本實施例中描述的服務器系統(tǒng)中領導者服務器的確定方法,具備以下效果:
[0108]1.領導者故障后,整個系統(tǒng)不會發(fā)生功能阻塞。系統(tǒng)首次啟動后,依靠本發(fā)明提出的確定方法可以確定唯一的領導者;當領導者故障后,發(fā)現(xiàn)故障的節(jié)點可以再次依靠這套選舉方法確定新的領導者,所以,整個系統(tǒng)可以持續(xù)無阻塞地提供服務;
[0109]2.該確定方法在整個系統(tǒng)內(nèi)部就領導者達成了一致,不會存在多個領導者長期僵持的場景。因為在確認階段,每個節(jié)點都會將提名消息發(fā)送者的等級與自身等級進行比較,只有當對方比自身更合適成為領導者時才會給對方回復確認消息。所以,整個選舉方法可以保證最終確定最為合適的唯一領導者,無論是曾經(jīng)因故障脫離系統(tǒng)的節(jié)點還是全新的節(jié)點加入到系統(tǒng)后,本選舉方法在確認階段和決勝階段都可以發(fā)現(xiàn)這兩種場景,并在本地進入提名階段,以便新的選舉過程可以包含新加入的節(jié)點,從而使系統(tǒng)在任何時刻都存在消除分歧的能力,進而保證了整個系統(tǒng)在領導者上的一致性。
[0110]綜上所述,借助于本發(fā)明的上述技術方案,通過至少一輪提名,并且,在每一輪提名中,由一服務器向其他服務器發(fā)送提名消息,并接收來自其他服務器的確認消息,如果在本輪提名中,發(fā)送提名消息的服務器被確定為領導者服務器,則向其他服務器通知本服務器為領導者服務器,如果在本輪提名中,發(fā)送提名消息的服務器沒有被確定為領導者服務器,則由不同意該服務器成為領導者服務器的一服務器在下一輪提名中向其他服務器發(fā)送提名消息,能夠在服務器系統(tǒng)中確定出唯一的領導者服務器,從而使服務器系統(tǒng)中的分布式一致性得以保證,并保證了服務器系統(tǒng)的穩(wěn)定流暢運行。
[0111]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
【權利要求】
1.一種服務器系統(tǒng)中領導者服務器的確定方法,其特征在于,包括: 通過至少一輪提名在多個服務器中確定領導者服務器,其中,在每一輪提名中,一服務器向所述服務器系統(tǒng)中的其他服務器發(fā)送提名消息,所述提名消息用于供其他服務器判斷是否同意發(fā)送該提名消息的服務器成為領導者服務器; 如果在一輪提名中,發(fā)送提名消息的服務器未被確定為領導者服務器,則由不同意該服務器成為領導者服務器的一服務器在下一輪提名中向其他服務器發(fā)送提名消息; 其中,在一服務器發(fā)送提名消息后,如果所述服務器系統(tǒng)中的其他全部服務器、或超過預定數(shù)量的服務器均同意該發(fā)送提名消息的服務器成為領導者服務器,則將該發(fā)送提名消息的服務器確定為領導者服務器。
2.根據(jù)權利要求1所述的確定方法,其特征在于,在每一輪提名中,一服務器向所述服務器系統(tǒng)中的其他服務器發(fā)送提名消息的情況下,該服務器啟動定時器,所述定時器用于規(guī)定本輪提名持續(xù)的時間,如果在所述定時器規(guī)定的時間范圍內(nèi),所述服務器系統(tǒng)中的其他全部服務器、或超過預定數(shù)量的服務器均同意該發(fā)送提名消息的服務器成為領導者服務器,則將該發(fā)送提名消息的服務器確定為領導者服務器; 如果在所述定時器規(guī)定的時間范圍內(nèi),同意該發(fā)送提名消息的服務器成為領導者服務器的服務器未達到預定數(shù)量,則發(fā)送提名消息的服務器未被確定為領導者服務器,本輪提名結束。
3.根據(jù)權利要求1所述的確定方法,其特征在于,提名消息中包含發(fā)送該提名消息的服務器的性能等級信息,接收到提名消息的服務器根據(jù)自身的性能等級信息與提名消息中的性能等級信息的比較結果,判斷是否同意發(fā)送該提名消息的服務器成為領導者服務器。
4.根據(jù)權利要求3所述的確定方法,其特征在于,提名消息中具有表示該提名消息發(fā)送時間的時間信息,如果一服務器發(fā)送了第一提名消息,并且該服務器從其他服務器接收到第二提名消息,則該服務器根據(jù)所述第一提名消息中的時間信息和所述第二提名消息中的時間信息,確定根據(jù)所述第二提名消息回復確認消息、或者忽略所述第二提名消息,其中,所述確認消息用于表示同意發(fā)送所述第二提名消息的服務器成為領導者服務器。
5.根據(jù)權利要求4所述的確定方法,其特征在于,接收到所述第二提名消息的服務器判斷所述第一提名消息中的時間信息所表示的時間點是否早于所述第二提名消息中的時間信息所表示的時間點,在判斷結果為是的情況下,根據(jù)所述第二提名消息回復確認消息;否則忽略所述第二提名消息。
6.根據(jù)權利要求3-5中任一項所述的確定方法,其特征在于,確定所述性能等級信息的條件包括: 進程的備份功能、電源的可延續(xù)性能、CPU的主頻、CPU核心數(shù)、內(nèi)存容量、硬盤容量、硬盤讀寫速率。
7.根據(jù)權利要求1至5中任意一項所述的確定方法,其特征在于,所述領導者服務器為用于協(xié)調(diào)所述服務器系統(tǒng)中的分布式一致性的服務器。
8.根據(jù)權利要求1至5中任意一項所述的確定方法,其特征在于,進一步包括: 確定的領導者服務器向所述服務器系統(tǒng)的其他服務器通知本服務器為領導者服務器。
9.一種服務器系統(tǒng),包括多個服務器,其特征在于,每個服務器包括: 發(fā)送模塊,用于在一輪提名中,向所述服務器系統(tǒng)中的其他服務器發(fā)送提名消息,所述提名消息用于供其他服務器判斷是否同意發(fā)送該提名消息的服務器成為領導者服務器; 確定模塊,用于發(fā)送提名消息后,如果所述服務器系統(tǒng)中的其他全部服務器、或超過預定數(shù)量的服務器均同意本地服務器成為領導者服務器,則將本地服務器確定為領導者服務器; 其中,所述服務器系統(tǒng)通過至少一輪提名在多個服務器中確定領導者服務器,在每一輪提名中,一服務器向所述服務器系統(tǒng)中的其他服務器發(fā)送提名消息,如果在一輪提名中,發(fā)送提名消息的服務器未被確定為領導者服務器,則由不同意該服務器成為領導者服務器的一服務器在下一輪提名中向其他服務器發(fā)送提名消息。
10.根據(jù)權利要求9所述的服務器系統(tǒng),包括多個服務器,其特征在于,每個服務器進一步包括: 定時器,用于規(guī)定一輪提名持續(xù)的時間,并且所述定時器在所述定時器所在的服務器向所述服務器系統(tǒng)中的其他服務器發(fā)送提名消息的情況下啟動,如果在所述定時器規(guī)定的時間范圍內(nèi),所述服務器系統(tǒng)中的其他全部服務器、或超過預定數(shù)量的服務器均同意所述定時器所在的服務器成為領導者服務器,則所述確定模塊將該所在的服務器確定為領導者服務器; 如果在所述定時器規(guī)定的時間范圍內(nèi),所述定時器所在的服務器未被確定為領導者服務器,則所述確定模塊確定本輪提名結束。
11.根據(jù)權利要求8所述的服務器系統(tǒng),包括多個服務器,其特征在于,提名消息中包含發(fā)送該提名消息的服務器的性能等級信息,并且,每個服務器進一步包括: 判斷模塊,用于在接收到來自于其他服務器的提名消息的情況下,根據(jù)自身的性能等級信息與所述提名消息中的性能等級信息的比較結果,判斷是否同意發(fā)送該提名消息的服務器成為領導者服務器; 并且,所述發(fā)送模塊進一步用于在所述判斷模塊的判斷結果為是的情況下,向發(fā)送該提名消息的服務器發(fā)送確認消息,其中,確認消息用于表示同意發(fā)送該提名消息的服務器成為領導者服務器;所述發(fā)送模塊還用于在所述判斷模塊的判斷結果為否的情況下,向其他服務器發(fā)送提名消息。
12.根據(jù)權利要求11所述的服務器系統(tǒng),其特征在于,提名消息中具有表示該提名消息發(fā)送時間的時間信息,如果一服務器發(fā)送了第一提名消息,并且該服務器從其他服務器接收到第二提名消息,則該服務器的判斷模塊根據(jù)所述第一提名消息中的時間信息和所述第二提名消息中的時間信息,確定根據(jù)所述第二提名消息回復確認消息、或者忽略所述第二提名消息。
13.根據(jù)權利要求12所述的服務器系統(tǒng),其特征在于,接收到所述第二提名消息的服務器的判斷模塊用于判斷所述第一提名消息中的時間信息所表示的時間點是否早于所述第二提名消息中的時間信息所表示的時間點,在判斷結果為是的情況下,根據(jù)所述第二提名消息回復確認消息;否則忽略所述第二提名消息。
【文檔編號】H04L29/08GK103618700SQ201310562622
【公開日】2014年3月5日 申請日期:2013年11月12日 優(yōu)先權日:2013年11月12日
【發(fā)明者】鄭劭馨, 楊浩, 苗艷超, 劉新春 申請人:曙光信息產(chǎn)業(yè)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1