国产精品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>

      一種基于消息日志的容錯(cuò)集群系統(tǒng)和方法

      文檔序號(hào):7649236閱讀:159來源:國知局
      專利名稱:一種基于消息日志的容錯(cuò)集群系統(tǒng)和方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及計(jì)算機(jī)領(lǐng)域中容錯(cuò)集群系統(tǒng)及方法,尤其為不具有可靠存 儲(chǔ)設(shè)備和備用計(jì)算節(jié)點(diǎn)的集群環(huán)境提供基于消息日志的高效容錯(cuò)系統(tǒng)及方 法。
      背景技術(shù)
      隨著網(wǎng)絡(luò)和計(jì)算技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)業(yè)務(wù)與應(yīng)用服務(wù)變得越來越復(fù) 雜龐大,使得集群系統(tǒng)得到了廣泛地應(yīng)用。這些集群系統(tǒng)中往往包含了眾 多的計(jì)算節(jié)點(diǎn),非常容易遭受頻繁的局部故障,在沒有容錯(cuò)方法的情況下, 集群系統(tǒng)很難保證長時(shí)間的正常運(yùn)行。對(duì)進(jìn)程狀態(tài)和進(jìn)程間通信消息加以 保存是一種有效的容錯(cuò)手段,集群系統(tǒng)遇到故障時(shí),通過調(diào)用先前保存的 檢查點(diǎn)和消息日志可以幫助進(jìn)程恢復(fù)到它在故障前所處的狀態(tài)。在基于消 息日志的容錯(cuò)方法中,進(jìn)程除了按一定策略設(shè)置包含進(jìn)程狀態(tài)的檢查點(diǎn)外, 還要將進(jìn)程間的通信消息以日志的形式保存到可靠存儲(chǔ)介質(zhì)上。在故障恢 復(fù)過程中,進(jìn)程首先回巻到檢查點(diǎn)狀態(tài),然后利用消息日志進(jìn)行重演。根據(jù)消息日志被保存到穩(wěn)定存儲(chǔ)上的頻率,目前公開的基于消息日志 的容錯(cuò)方法主要有三類第一類是悲觀消息日志,它假定任何非確定事件 之后都可能發(fā)生故障,最直接的實(shí)現(xiàn)方式就是在事件影響進(jìn)程狀態(tài)前,將 事件的日志信息保存到穩(wěn)定存儲(chǔ)上,這保證了系統(tǒng)可以很容易地從任何時(shí) 刻的故障中恢復(fù)。悲觀消息日志有兩個(gè)主要優(yōu)勢 一是不會(huì)產(chǎn)生孤立進(jìn)程, 二是消息日志和檢査點(diǎn)的垃圾收集算法非常簡單,然而悲觀日志會(huì)導(dǎo)致很 高的系統(tǒng)開銷。第二類樂觀消息日志先將事件的日志信息臨時(shí)記錄在易失 的內(nèi)存中,然后周期性地存放到穩(wěn)定存儲(chǔ)上。盡管這可以顯著減少了系統(tǒng) 無故障運(yùn)行開銷,但它需要復(fù)雜的恢復(fù)和垃圾收集算法。同時(shí),還可能會(huì) 由于孤立進(jìn)程而產(chǎn)生無邊界回巻問題。第三類因果消息日志方法結(jié)合了前 兩類方法的優(yōu)點(diǎn)。它具有較低的無故障運(yùn)行開銷,同時(shí)也限制了失效回巻 的程度,并保證進(jìn)程回巻到最近的檢查點(diǎn)狀態(tài)。然而這些優(yōu)勢的獲得是以 復(fù)雜的恢復(fù)步驟為代價(jià)的。以上所述的容錯(cuò)方法雖然各有特色,但都是基于目前集群系統(tǒng)中大多
      包含冗余設(shè)備,比如專門用于保存檢查點(diǎn)和消息日志的穩(wěn)定存儲(chǔ)設(shè)備;用 于代替失效計(jì)算節(jié)點(diǎn)的備用節(jié)點(diǎn)等。而在實(shí)際情況中,很多集群系統(tǒng)往往 資源有限,難以提供額外設(shè)備,這使得上述的方法無法為這些系統(tǒng)提供容 錯(cuò)功能。另一方面,在目前的集群系統(tǒng)中,保存檢査點(diǎn)和消息日志會(huì)頻繁 地對(duì)外部存儲(chǔ)設(shè)備進(jìn)行讀寫,這會(huì)大大增加系統(tǒng)的無故障開銷。而且,在 故障出現(xiàn)后,新的計(jì)算節(jié)點(diǎn)重新啟動(dòng)失效進(jìn)程,也會(huì)影響系統(tǒng)性能,增加 故障恢復(fù)時(shí)間。發(fā)明內(nèi)容本發(fā)明解決的技術(shù)問題是克服目前基于消息日志的容錯(cuò)方法過分依賴 集群系統(tǒng)中擁有額外存儲(chǔ)設(shè)備或計(jì)算節(jié)點(diǎn)的缺陷,并解決由于讀寫外部存 儲(chǔ)設(shè)備和重啟失效進(jìn)程所導(dǎo)致的系統(tǒng)性能開銷問題,提出了一種基于消息 日志的容錯(cuò)集群系統(tǒng)和方法。本發(fā)明提出的基于消息日志的容錯(cuò)集群系統(tǒng),包括多個(gè)計(jì)算節(jié)點(diǎn),每 個(gè)計(jì)算節(jié)點(diǎn)上運(yùn)行著多個(gè)應(yīng)用進(jìn)程,每個(gè)應(yīng)用進(jìn)程都對(duì)應(yīng)設(shè)有至少一個(gè)備 用進(jìn)程,且備用進(jìn)程與其對(duì)應(yīng)的應(yīng)用進(jìn)程不在一個(gè)計(jì)算節(jié)點(diǎn)上;各應(yīng)用進(jìn) 程及其備用進(jìn)程均記錄有該應(yīng)用進(jìn)程所發(fā)送消息的消息日志,備用進(jìn)程用于 在計(jì)算節(jié)點(diǎn)發(fā)生故障時(shí)通過激活消息日志取代應(yīng)用進(jìn)程。優(yōu)選的,所述應(yīng)用進(jìn)程和備用進(jìn)程中還設(shè)有用于記錄給其它進(jìn)程發(fā)送 消息的最大發(fā)送序列號(hào)列表,以及用于記錄從其它進(jìn)程接收消息的接收序 列號(hào)列表。優(yōu)選的,所述的最大發(fā)送序列號(hào)列表、接收序列號(hào)列表、進(jìn)程所發(fā)送 消息的消息日志保存在進(jìn)程所屬計(jì)算節(jié)點(diǎn)的主存中。本發(fā)明提出的基于消息日志的容錯(cuò)方法,包括以下處理過程1) 設(shè)定檢查點(diǎn),應(yīng)用進(jìn)程將其狀態(tài)保存到檢查點(diǎn)中,并將檢査點(diǎn)信息同步到備用進(jìn)程;2) 發(fā)送應(yīng)用進(jìn)程向接收應(yīng)用進(jìn)程發(fā)送消息,并對(duì)發(fā)送的消息以消息日 志的方式保持到發(fā)送應(yīng)用進(jìn)程和接收應(yīng)用進(jìn)程中;3)當(dāng)計(jì)算節(jié)點(diǎn)發(fā)生故障,計(jì)算節(jié)點(diǎn)中失效的應(yīng)用進(jìn)程對(duì)應(yīng)的備用進(jìn)程 通過保存的檢查點(diǎn)和消息日志激活,并取代應(yīng)用進(jìn)程的工作。優(yōu)選的,所述步驟l)中具體包括以下處理過程11) 設(shè)定檢査點(diǎn),應(yīng)用進(jìn)程將其狀態(tài)保存到檢査點(diǎn)中,并將檢査點(diǎn)信息給其備用進(jìn)程;12) 備用進(jìn)程收到檢查點(diǎn)信息后,用新的檢查點(diǎn)信息替代舊的檢查點(diǎn)信息,并向應(yīng)用進(jìn)程反饋確認(rèn)信息。優(yōu)選的,所述步驟12)之后還包括以下處理步驟13) 應(yīng)用進(jìn)程通過向更新檢查點(diǎn)前所有與其有消息交互的應(yīng)用進(jìn)程以及其備份進(jìn)程發(fā)送垃圾收集信息,收到垃圾收集信息的進(jìn)程根據(jù)信息內(nèi)容 刪除消息日志中的歷史垃圾消息。優(yōu)選的,所述步驟2)具體包括以下處理過程21) 發(fā)送應(yīng)用進(jìn)程向接收應(yīng)用進(jìn)程發(fā)送帶有消息發(fā)送序列號(hào)的通信請(qǐng)求;22) 接收應(yīng)用進(jìn)程收到請(qǐng)求后,根據(jù)請(qǐng)求中帶有的消息發(fā)送序列號(hào)在 接收應(yīng)用進(jìn)程的消息日志中査詢,對(duì)于確認(rèn)該消息沒有收到過,則為待接 收的消息分配接收序列號(hào),并向發(fā)送應(yīng)用進(jìn)程反饋;23) 發(fā)送應(yīng)用進(jìn)程向接收應(yīng)用進(jìn)程發(fā)送消息。 優(yōu)選的,所述步驟23)具體為 當(dāng)發(fā)送應(yīng)用進(jìn)程與接收應(yīng)用進(jìn)程在同一計(jì)算節(jié)點(diǎn)時(shí),231) 發(fā)送應(yīng)用進(jìn)程將消息、發(fā)送序列號(hào)、接收序列號(hào)發(fā)送到發(fā)送應(yīng)用 進(jìn)程的備份進(jìn)程;232) 發(fā)送應(yīng)用進(jìn)程的備份進(jìn)程收到消息后,將內(nèi)容保存到其消息日志 中,并向發(fā)送應(yīng)用進(jìn)程發(fā)送確認(rèn)信息;233) 發(fā)送應(yīng)用進(jìn)程向接收應(yīng)用進(jìn)程發(fā)送消息; 當(dāng)發(fā)送應(yīng)用進(jìn)程與接收應(yīng)用進(jìn)程在不同的計(jì)算節(jié)點(diǎn)時(shí),234) 發(fā)送應(yīng)用進(jìn)程將待發(fā)送消息、接收序列號(hào)保存在其消息日志中;235) 發(fā)送應(yīng)用進(jìn)程向接收應(yīng)用進(jìn)程發(fā)送消息。 優(yōu)選的,所述步驟3)具體包括以下處理過程31) 當(dāng)計(jì)算節(jié)點(diǎn)發(fā)生故障,計(jì)算節(jié)點(diǎn)中失效的應(yīng)用進(jìn)程對(duì)應(yīng)的備用進(jìn) 程通過保存的檢査點(diǎn)和消息日志激活,并向其它應(yīng)用進(jìn)程發(fā)送廣播消息;32) 其它應(yīng)用進(jìn)程收到廣播消息后,向備用進(jìn)程發(fā)送之前已發(fā)送給失 效的應(yīng)用進(jìn)程的消息,并附有各消息的接收序列號(hào)和最大接收序列號(hào);33) 被激活的備份進(jìn)程從收到的接收序列號(hào)中找到最大值,開始重新 分配接收序列號(hào),完成取代應(yīng)用進(jìn)程的工作。本發(fā)明利用備份進(jìn)程保存檢査點(diǎn)和消息日志,同時(shí),通過將它們記錄 到消息發(fā)送者側(cè)的內(nèi)存中避免同步日志記錄產(chǎn)生的系統(tǒng)開銷。這不僅減小 了記錄日志的費(fèi)用,還取消了對(duì)穩(wěn)定存儲(chǔ)介質(zhì)的依賴。本發(fā)明不需要任何 保存檢査點(diǎn)和日志的可靠存儲(chǔ)設(shè)備,在恢復(fù)期間,也不會(huì)依賴額外備用的 計(jì)算節(jié)點(diǎn)去接替失效節(jié)點(diǎn),進(jìn)程無需重新啟動(dòng)就會(huì)繼續(xù)運(yùn)行在剩余的節(jié)點(diǎn) 上。同時(shí),系統(tǒng)還可以方便地增加負(fù)載均衡功能,有效降低節(jié)點(diǎn)失效對(duì)整 個(gè)系統(tǒng)的影響。


      圖1為本發(fā)明實(shí)現(xiàn)容錯(cuò)功能的集群系統(tǒng)結(jié)構(gòu)原理圖;圖2為本發(fā)明實(shí)現(xiàn)進(jìn)程檢查點(diǎn)保存的流程圖;圖3為本發(fā)明實(shí)現(xiàn)進(jìn)程間通信的流程圖;圖4為本發(fā)明實(shí)現(xiàn)同一節(jié)點(diǎn)進(jìn)程間通信消息保存的流程圖;圖5為本發(fā)明實(shí)現(xiàn)不同節(jié)點(diǎn)進(jìn)程間通信消息保存的流程圖。
      具體實(shí)施方式
      下面結(jié)合附圖對(duì)本發(fā)明技術(shù)方案的實(shí)施作進(jìn)一步的詳細(xì)描述。 圖l為本發(fā)明實(shí)現(xiàn)容錯(cuò)功能的集群系統(tǒng)結(jié)構(gòu)圖。其中 有m個(gè)進(jìn)程運(yùn)行在含有n個(gè)計(jì)算節(jié)點(diǎn)的集群系統(tǒng)中,計(jì)算節(jié)點(diǎn)故障均 為失效停止,當(dāng)一個(gè)節(jié)點(diǎn)失效時(shí),其它的節(jié)點(diǎn)能夠立即檢測到它的失效。 節(jié)點(diǎn)上運(yùn)行的進(jìn)程可以被描述為一個(gè)二元組P=(pm,bk), pm和bk分別表 示該進(jìn)程的主版本和副版本。由于本發(fā)明的實(shí)施例中每個(gè)進(jìn)程僅含有一個(gè) 相應(yīng)的副本,所以容錯(cuò)模型只允許單點(diǎn)失效,若使用更多的進(jìn)程副本,該 模型可以擴(kuò)展到多點(diǎn)失效。本發(fā)明的容錯(cuò)方法完全基于軟件,不依賴于任
      何特殊的硬件。系統(tǒng)中沒有完全可靠的設(shè)備,節(jié)點(diǎn)間的通信都是通過網(wǎng)絡(luò)消息傳遞;網(wǎng)絡(luò)是可靠的;分段確定性(PWD, Piece Wise Deterministic) 假設(shè)也被保留,它假設(shè)消息接收是影響進(jìn)程狀態(tài)唯一不確定事件。本發(fā)明的實(shí)現(xiàn)需要向系統(tǒng)中每一個(gè)進(jìn)程增加一些數(shù)據(jù)模塊,在了解這 些數(shù)據(jù)模塊之前,首先認(rèn)識(shí)兩個(gè)數(shù)據(jù)項(xiàng)發(fā)送序列號(hào)(SSN, Send Sequence Number)-進(jìn)程發(fā)送的每一條消息都有一個(gè)發(fā)送序列號(hào),記錄了當(dāng)前發(fā)送者 發(fā)給接收者消息的數(shù)目;接收序列號(hào)(RSN, Receive Sequence Number)-接收進(jìn)程會(huì)為其接收到的每一條消息分配一個(gè)RSN,并按照RSN的遞增順 序處理消息?;谏鲜龅臄?shù)據(jù)項(xiàng),在進(jìn)程中定義了以下數(shù)據(jù)模塊進(jìn)程所發(fā)送消息的消息日志進(jìn)程發(fā)送的每一條消息連同消息的RSN 號(hào)都被記錄在一個(gè)消息日志中。如果消息在相同處理器上兩個(gè)進(jìn)程間發(fā)送, 它們將被記錄在發(fā)送進(jìn)程副版本的消息日志中。記錄最大SSN列表每個(gè)進(jìn)程都維護(hù)了一個(gè)發(fā)送給其它進(jìn)程最大SSN 的列表,稱之為SSNTable,它還維護(hù)了一個(gè)從不同進(jìn)程接收的SSN滑動(dòng)窗 口,這被用于復(fù)制消息檢測。維護(hù)RSN值的列表: 一個(gè)進(jìn)程維護(hù)一個(gè)自從最近檢查點(diǎn)后已分配的RSN 列表,可以通過發(fā)送者和SSN號(hào)檢索對(duì)應(yīng)的消息是否已被接收,RSN列表 中還包含已分配的最大RSN號(hào)Rcount。除了最新的值,這些數(shù)據(jù)模塊必須要包含在進(jìn)程的檢查點(diǎn)中,當(dāng)進(jìn)程 從其檢查點(diǎn)重啟時(shí),它們的值也將隨著檢查點(diǎn)數(shù)據(jù)恢復(fù)。如圖2所示,進(jìn)程P周期性地決定將它的狀態(tài)保存到檢查點(diǎn)中,并將 檢查點(diǎn)發(fā)送給它的備份進(jìn)程P. bk。每一個(gè)主進(jìn)程還記錄它已經(jīng)處理的最大 RSN的消息,保存發(fā)送給不同主進(jìn)程的RSN列表將通過移除對(duì)應(yīng)消息的入 口被垃圾收集。當(dāng)接收到檢査點(diǎn)后,P.bk將用新的檢査點(diǎn)替換舊的檢査點(diǎn)拷貝,然后 發(fā)送一個(gè)確認(rèn)消息給P. pm。接收到確認(rèn)后,P. pm會(huì)發(fā)送一個(gè)包含最高RSN 的垃圾收集消息給最新檢査點(diǎn)前所有發(fā)送給它消息的進(jìn)程,當(dāng)進(jìn)程Q.pm 收到來自P. pm的垃圾收集消息后,Q. pm將刪除消息日志中所有發(fā)送給P. pm 且RSN小于消息中指定RSN的消息。同時(shí),P.pm發(fā)送另一條相似的垃圾收 集消息給它的備份進(jìn)程P.bk,用以刪除本地消息日志中舊的記錄。在決定檢査點(diǎn)周期的問題上,內(nèi)存和速度之間存在一個(gè)有趣的平衡 如果檢査點(diǎn)周期過小,記錄在發(fā)送者上的消息將占用比較小的內(nèi)存,但保 存檢查點(diǎn)的開銷將比較大。如果檢査點(diǎn)周期過大,記錄在發(fā)送者上的消息 將變多而檢査點(diǎn)的開銷將變小。而且,稀少的檢査點(diǎn)將由于需要重發(fā)的舊 消息過多而使恢復(fù)變慢。所以在決定檢查點(diǎn)周期中預(yù)期的故障數(shù)目也是重 要的因素,而且一些應(yīng)用可能有內(nèi)存限制,所以檢查點(diǎn)周期可能作為用戶 輸入設(shè)置或者動(dòng)態(tài)決定,針對(duì)檢査點(diǎn)的需求驅(qū)動(dòng)策略也可能被應(yīng)用。不像其它基于消息日志的容錯(cuò)方法,本發(fā)明不依賴于多個(gè)保存檢査點(diǎn) 的可靠服務(wù)器。取而代之的是依賴進(jìn)程的主副版本不會(huì)在同一個(gè)檢查點(diǎn)周 期內(nèi)出現(xiàn)故障。圖3表現(xiàn)了進(jìn)程P發(fā)送消息給進(jìn)程Q必須要執(zhí)行的步驟。如圖所示, 兩個(gè)進(jìn)程在進(jìn)行通信的過程中,會(huì)根據(jù)相互位置的不同而采取不同的方式 保存消息日志。本地進(jìn)程間消息發(fā)送虛擬化意味著多個(gè)進(jìn)程可能被映射到相同計(jì)算 節(jié)點(diǎn)上,相同節(jié)點(diǎn)上的進(jìn)程可以被看作互為本地。發(fā)送給本地進(jìn)程的消息 日志和接收者在相同的節(jié)點(diǎn)上,如果節(jié)點(diǎn)失效,消息的所有信息都將從系 統(tǒng)中消失,盡管消息可以被恢復(fù)的發(fā)送者重新生成,但是它還需要被接收 者準(zhǔn)確地按照先前的順序處理,由于發(fā)送者和順序號(hào)可以唯一確定一條消息,所以只要記錄發(fā)送者進(jìn)程序列號(hào)、消息的SSN和RSN,就可以滿足正 確性的需要。來自于本地進(jìn)程P的RSN(m)可以通過下列方法獲得帶有RSN的本地 消息被發(fā)送給發(fā)送者備份進(jìn)程保存,只有在收到自己備份進(jìn)程確認(rèn)后才開 始該消息的處理工作,發(fā)送本地消息的消息交換序列如圖4所示,由于在 遠(yuǎn)端節(jié)點(diǎn)上記錄日志,本地進(jìn)程間消息延時(shí)與遠(yuǎn)端進(jìn)程間消息延時(shí)相同。等待備份進(jìn)程確認(rèn)并不意味著進(jìn)程執(zhí)行的實(shí)際停止,而是進(jìn)程記著它 正在等待特定的消息繼續(xù)執(zhí)行,無論等待的消息何時(shí)到達(dá),消息發(fā)送協(xié)議 都將假設(shè)處于等待狀態(tài),這在下面所有的算法中都是正確的。遠(yuǎn)端進(jìn)程間消息發(fā)送在不同節(jié)點(diǎn)上的兩個(gè)進(jìn)程被稱為相互遠(yuǎn)端,在 這種情況下,進(jìn)程間通信按照遠(yuǎn)端消息發(fā)送步驟模式執(zhí)行,消息發(fā)送的流 程如圖5所示。進(jìn)程P記錄消息并發(fā)送入場券請(qǐng)求并等待回復(fù)。當(dāng)進(jìn)程Q接收到帶有 特定SSN的入場券請(qǐng)求,它將查詢包含RSN列表的〈sender, SSN〉項(xiàng),如果 發(fā)現(xiàn)SSN已存在,則返回列表中存儲(chǔ)的值,如果發(fā)現(xiàn)對(duì)應(yīng)SSN的消息已收 到,而且在最近的檢査點(diǎn)以后,則標(biāo)記RSN為已收到;如果發(fā)現(xiàn)消息在最近的檢查點(diǎn)前收到,則標(biāo)記RSN是舊的。如果以上的情況沒有一個(gè)滿足, 將意味著這是一個(gè)新消息的請(qǐng)求。它將增加Rcount值并返回RSN給P,同 時(shí)在列表中增加相應(yīng)發(fā)送者,SSN和RSN的數(shù)據(jù)項(xiàng)。標(biāo)記為已接收的RSN意味著消息不需要發(fā)送給接收者,除非它被重啟。 對(duì)應(yīng)于標(biāo)記舊RSN的消息可以不需要記錄,發(fā)送者只需簡單地在它的日志 中添加RSN即可。如果RSN是新的,它將分配給日志中對(duì)應(yīng)的消息,并將 該消息發(fā)送給接收者,RSN表還可以處理發(fā)送者P重發(fā)一個(gè)入場券請(qǐng)求的 情況,如果Q已經(jīng)為這個(gè)請(qǐng)求派發(fā)了 RSN, Q將永遠(yuǎn)不會(huì)收到帶有舊RSN 的消息。消息按照RSN遞增順序被處理,雖然這會(huì)延長Q在舊RSN上的執(zhí) 行時(shí)間,然而卻可以避免為新的SSN分配舊的RSN。當(dāng)P開始發(fā)送消息m 到Q處理m之間會(huì)有一個(gè)時(shí)間差,這個(gè)時(shí)間差由一個(gè)小消息往返時(shí)間所決 定。由于失效的計(jì)算節(jié)點(diǎn)上可能存在多個(gè)進(jìn)程,所以,容錯(cuò)方法中更需要 恢復(fù)步驟。以下是本發(fā)明在進(jìn)程恢復(fù)中所涉及到的步驟。失效探測器檢測到有計(jì)算節(jié)點(diǎn)失效后,立刻通知失效主進(jìn)程的備份進(jìn) 程,備份進(jìn)程會(huì)通過最近的檢查點(diǎn)和本地消息日志激活,并從檢查點(diǎn)位置 開始繼續(xù)執(zhí)行,以接管主進(jìn)程的工作,激活完畢后備份進(jìn)程會(huì)廣播消息表 示它已經(jīng)準(zhǔn)備好接收被記錄的日志。作為對(duì)廣播的回應(yīng),所有的主進(jìn)程都 將重發(fā)附有RSN的日志消息給被激活的備份進(jìn)程。對(duì)于沒有RSN的日志消 息,入場券請(qǐng)求將會(huì)發(fā)送。每個(gè)主進(jìn)程還會(huì)發(fā)送一個(gè)包含它所收到的來自 該備份進(jìn)程主版本最高的RSN號(hào)消息,同時(shí),被激活的備份進(jìn)程會(huì)拒絕任 何它接收到的重復(fù)消息。 一旦被激活的備份進(jìn)程知道它的主版本在崩潰前 所派發(fā)的最大RSN,它會(huì)開始重新派發(fā)RSN。在恢復(fù)期間如果一個(gè)本地消息 被生成,來自備份進(jìn)程的本地消息日志將被用于找到RSN。針對(duì)集群系統(tǒng)的容錯(cuò)需求,本發(fā)明提出了一種基于消息日志的容錯(cuò)集 群系統(tǒng)和方法。與其它的容錯(cuò)方法不同,本發(fā)明不依賴于任何完全可靠的 存儲(chǔ)設(shè)備,允許在沒有額外節(jié)點(diǎn)替代的情況下,當(dāng)小部分節(jié)點(diǎn)失效時(shí),進(jìn) 程無需重新啟動(dòng)就可繼續(xù)執(zhí)行。本發(fā)明具有較低的系統(tǒng)開銷和快速的錯(cuò)誤 恢復(fù)性能,有力地保證了集群計(jì)算業(yè)務(wù)不中斷。以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說 明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對(duì)于本發(fā)明所屬技術(shù) 領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若 干簡單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。
      權(quán)利要求
      1. 一種基于消息日志的容錯(cuò)集群系統(tǒng),其特征在于,所述集群系統(tǒng)包 括多個(gè)計(jì)算節(jié)點(diǎn),每個(gè)計(jì)算節(jié)點(diǎn)上運(yùn)行著多個(gè)應(yīng)用進(jìn)程,每個(gè)應(yīng)用進(jìn)程都 對(duì)應(yīng)設(shè)有至少一個(gè)備用進(jìn)程,且備用進(jìn)程與其對(duì)應(yīng)的應(yīng)用進(jìn)程不在一個(gè)計(jì) 算節(jié)點(diǎn)上;各應(yīng)用進(jìn)程及其備用進(jìn)程均記錄有該應(yīng)用進(jìn)程所發(fā)送消息的消息 曰志,備用進(jìn)程用于在計(jì)算節(jié)點(diǎn)發(fā)生故障時(shí)通過激活消息日志取代應(yīng)用進(jìn) 程。
      2. 根據(jù)權(quán)利要求1所述的基于消息日志的容錯(cuò)集群系統(tǒng),其特征在于, 所述應(yīng)用進(jìn)程和備用進(jìn)程中還設(shè)有用于記錄給其它進(jìn)程所發(fā)送消息的最大 發(fā)送序列號(hào)列表,以及用于記錄從其它進(jìn)程接收消息的接收序列號(hào)列表。
      3. 根據(jù)權(quán)利要求2所述的基于消息日志的容錯(cuò)集群系統(tǒng),其特征在于, 所述的最大發(fā)送序列號(hào)列表、接收序列號(hào)列表、進(jìn)程所發(fā)送消息的消息日 志保存在進(jìn)程所屬計(jì)算節(jié)點(diǎn)的主存中。
      4. 一種基于消息日志的容錯(cuò)方法,其特征在于,所述方法包括以下處 理過程1) 設(shè)定檢査點(diǎn),應(yīng)用進(jìn)程將其狀態(tài)保存到檢查點(diǎn)中,并將檢査點(diǎn)信息 同步到備用進(jìn)程;2) 發(fā)送應(yīng)用進(jìn)程向接收應(yīng)用進(jìn)程發(fā)送消息,并對(duì)發(fā)送的消息以消息日 志的方式保持到發(fā)送應(yīng)用進(jìn)程和接收應(yīng)用進(jìn)程中;3) 當(dāng)計(jì)算節(jié)點(diǎn)發(fā)生故障,計(jì)算節(jié)點(diǎn)中失效的應(yīng)用進(jìn)程對(duì)應(yīng)的備用進(jìn)程 通過保存的檢查點(diǎn)和消息日志激活,并取代應(yīng)用進(jìn)程的工作。
      5. 根據(jù)權(quán)利要求4所述的基于消息日志的容錯(cuò)方法,其特征在于,所 述步驟l)中具體包括以下處理過程11) 設(shè)定檢査點(diǎn),應(yīng)用進(jìn)程將其狀態(tài)保存到檢查點(diǎn)中,并將檢查點(diǎn)信 息給其備用進(jìn)程;12) 備用進(jìn)程收到檢査點(diǎn)信息后,用新的檢查點(diǎn)信息替代舊的檢查點(diǎn) 信息,并向應(yīng)用進(jìn)程反饋確認(rèn)信息。
      6. 根據(jù)權(quán)利要求5所述的基于消息日志的容錯(cuò)方法,其特征在于,所 述步驟12)之后還包括以下處理步驟13) 應(yīng)用進(jìn)程通過向更新檢查點(diǎn)前所有與其有消息交互的應(yīng)用進(jìn)程以及其備份進(jìn)程發(fā)送垃圾收集信息,收到垃圾收集信息的進(jìn)程根據(jù)信息內(nèi)容 刪除消息日志中的歷史垃圾消息。
      7. 根據(jù)權(quán)利要求4所述的基于消息日志的容錯(cuò)方法,其特征在于,其特征在于,所述步驟2)具體包括以下處理過程21) 發(fā)送應(yīng)用進(jìn)程向接收應(yīng)用進(jìn)程發(fā)送帶有消息發(fā)送序列號(hào)的通信請(qǐng)求;22) 接收應(yīng)用進(jìn)程收到請(qǐng)求后,根據(jù)請(qǐng)求中帶有的消息發(fā)送序列號(hào)在 接收應(yīng)用進(jìn)程的消息日志中査詢,對(duì)于確認(rèn)該消息沒有收到過,則為待接 收的消息分配接收序列號(hào),并向發(fā)送應(yīng)用進(jìn)程反饋;23) 發(fā)送應(yīng)用進(jìn)程向接收應(yīng)用進(jìn)程發(fā)送消息。
      8. 根據(jù)權(quán)利要求7所述的基于消息日志的容錯(cuò)方法,其特征在于,所 述步驟23)具體為當(dāng)發(fā)送應(yīng)用進(jìn)程與接收應(yīng)用進(jìn)程在同一計(jì)算節(jié)點(diǎn)時(shí),231) 發(fā)送應(yīng)用進(jìn)程將消息、發(fā)送序列號(hào)、接收序列號(hào)發(fā)送到發(fā)送應(yīng)用 進(jìn)程的備份進(jìn)程;232) 發(fā)送應(yīng)用進(jìn)程的備份進(jìn)程收到消息后,將內(nèi)容保存到其消息日志 中,并向發(fā)送應(yīng)用進(jìn)程發(fā)送確認(rèn)信息;233) 發(fā)送應(yīng)用進(jìn)程向接收應(yīng)用進(jìn)程發(fā)送消息; 當(dāng)發(fā)送應(yīng)用進(jìn)程與接收應(yīng)用進(jìn)程在不同的計(jì)算節(jié)點(diǎn)時(shí),234) 發(fā)送應(yīng)用進(jìn)程將待發(fā)送消息、接收序列號(hào)保存在其消息日志中;235) 發(fā)送應(yīng)用進(jìn)程向接收應(yīng)用進(jìn)程發(fā)送消息。
      9. 根據(jù)權(quán)利要求4所述的基于消息日志的容錯(cuò)方法,其特征在于,所 述步驟3)具體包括以下處理過程31) 當(dāng)計(jì)算節(jié)點(diǎn)發(fā)生故障,計(jì)算節(jié)點(diǎn)中失效的應(yīng)用進(jìn)程對(duì)應(yīng)的備用進(jìn) 程通過保存的檢査點(diǎn)和消息日志激活,并向其它應(yīng)用進(jìn)程發(fā)送廣播消息;32) 其它應(yīng)用進(jìn)程收到廣播消息后,向備用進(jìn)程發(fā)送之前已發(fā)送給失效的應(yīng)用進(jìn)程的消息,并附有各消息的接收序列號(hào)和最大接收序列號(hào);33) 被激活的備份進(jìn)程從收到的接收序列號(hào)中找到最大值,開始重新 分配接收序列號(hào),完成取代應(yīng)用進(jìn)程的工作。
      全文摘要
      本發(fā)明公開了一種基于消息日志的容錯(cuò)集群系統(tǒng)和方法,本發(fā)明系統(tǒng)中無需額外增加可靠設(shè)備,而是利用備份進(jìn)程保存檢查點(diǎn)和消息日志,同時(shí),通過將它們記錄到消息發(fā)送者側(cè)的內(nèi)存中避免同步日志記錄產(chǎn)生的系統(tǒng)開銷。這不僅減小了記錄日志的費(fèi)用,還取消了對(duì)穩(wěn)定存儲(chǔ)介質(zhì)的依賴。本發(fā)明不需要任何保存檢查點(diǎn)和日志的可靠存儲(chǔ)設(shè)備,在恢復(fù)期間,也不會(huì)依賴額外備用的計(jì)算節(jié)點(diǎn)去接替失效節(jié)點(diǎn),進(jìn)程無需重新啟動(dòng)就會(huì)繼續(xù)運(yùn)行在剩余的節(jié)點(diǎn)上。同時(shí),系統(tǒng)還可以方便地增加負(fù)載均衡功能,有效降低節(jié)點(diǎn)失效對(duì)整個(gè)系統(tǒng)的影響。
      文檔編號(hào)H04L12/24GK101145946SQ200710077179
      公開日2008年3月19日 申請(qǐng)日期2007年9月17日 優(yōu)先權(quán)日2007年9月17日
      發(fā)明者翌 李, 王繼剛, 謝世波 申請(qǐng)人:中興通訊股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1