專利名稱:協(xié)同系統(tǒng)中可擴展的動態(tài)容錯方法
技術領域:
本發(fā)明屬于計算機支持協(xié)同工作(Computer Supported CooperativeWork,CSCW)領域,為一種新型的可擴展的動態(tài)容錯方法。
背景技術:
計算機支持協(xié)同工作支持多用戶通過計算機及網(wǎng)絡技術,以協(xié)調(diào)和協(xié)作的方式共同完成一項任務。隨著網(wǎng)絡技術的飛速發(fā)展,CSCW為在時空上分散的人們提供了一種“面對面”和“你見即我見”的協(xié)同工作環(huán)境,它能支持多個時間上分離、空間上分布而工作又相互依賴的協(xié)作成員的協(xié)同工作。在過去的幾年,國際及國內(nèi)有代表性的CSCW系統(tǒng)包括斯坦福研究所(SRI)研制的多媒體協(xié)同工作系統(tǒng)(The Collaborative Environment forConcurrent Engineering Design,CECED),普渡大學研制的SHASTRA協(xié)同工作的多媒體設計系統(tǒng),IBM歐洲網(wǎng)絡中心、DEC公司等共同開發(fā)的BERKOM多媒體協(xié)同服務器以及其它CSCW系統(tǒng),如京通視頻會議系統(tǒng),3C(CAD/CAPP/CAM)智能協(xié)商系統(tǒng)等。目前協(xié)同系統(tǒng)已經(jīng)廣泛應用于支持群體用戶協(xié)同工作。由于協(xié)同工作支持系統(tǒng)涉及群體用戶協(xié)作,任何系統(tǒng)故障造成群體協(xié)作無法進行或結(jié)果丟失,從而,對群體協(xié)作的效率及結(jié)果影響很大。因此,在協(xié)同系統(tǒng)設計中,如何保證協(xié)同系統(tǒng)服務節(jié)點的高可靠性和性能是關系到用戶對系統(tǒng)信賴程度的關鍵因素。
高可靠性的實現(xiàn)方式,除了要求硬件設備具有高可靠性的設計外,還要有良好的部件容錯機制。實踐證明,容錯設計對計算機應用系統(tǒng)可靠性的提高是十分有效的。傳統(tǒng)的容錯設計一般采用服務冗余的方式服務節(jié)點上的服務進程(稱為基本服務進程)復制多份(稱為后備服務進程)分別運行在不同的節(jié)點上。根據(jù)冗余服務的作用方式,可分為主動復制和主用備份。在主動復制方式中基本服務進程和所有后備服務進程同時接收客戶請求并進行請求處理,然后將處理結(jié)果都返回給客戶,由客戶選擇返回結(jié)果。主動復制方式雖然服務進程失效對客戶透明,但通信開銷比較大,而且由于系統(tǒng)資源有限,冗余服務同時響應請求,從總體上降低了系統(tǒng)的性能。在主用備份方式中基本服務進程接收客戶請求進行處理,后備進程周期性地與基本服務進程通信,與其保持同步。當基本服務進程失效后,從后備服務進程中選取一個進程作為基本服務進程。這種方式同主動復制方式相比,大大減少了通信開銷,但備份進程在基本進程正常的情況下處于“閑置”狀態(tài),浪費了系統(tǒng)資源并且系統(tǒng)負載不均衡。當協(xié)同工作任務數(shù)量增加時,協(xié)同服務節(jié)點容易形成系統(tǒng)瓶頸,性能降低。因此,這兩種容錯方式應用于協(xié)同環(huán)境中均存在一定的問題。此外,在協(xié)同工作支持環(huán)境中,協(xié)同工作任務數(shù)量是動態(tài)變化的,反映為服務節(jié)點性能的動態(tài)變化,因此要求服務節(jié)點的容錯是動態(tài)可擴展的。但由上述分析可知,主動復制和主用備份兩種容錯方式都不能很好地適應協(xié)同系統(tǒng)動態(tài)變化的特性。
發(fā)明內(nèi)容
本發(fā)明的目的就是針對現(xiàn)有技術的不足,提供一種協(xié)同系統(tǒng)中可擴展的動態(tài)容錯方法,該方法能夠使系統(tǒng)具有良好容錯和負載均衡能力。
本發(fā)明提供的一種協(xié)同系統(tǒng)中可擴展的動態(tài)容錯方法,包括以下步驟(1)當服務請求到達時,服務管理器按如下步驟為其分配服務節(jié)點(1.1)判斷環(huán)上最大節(jié)點號RN是否為零,如果RN=0,要構(gòu)建r元服務基環(huán),并設定令牌號為0,進入步驟(1.2);否則直接進入步驟(1.2);(1.2)將協(xié)同任務t分配給持有令牌的服務節(jié)點N(i),其負載增1,將任務t添加到持有令牌節(jié)點的任務集合中;(1.3)判斷令牌號是否大于最大節(jié)點號,如果是,將持有令牌的節(jié)點加入服務環(huán),同時令RN=RN+1,進入步驟(1.4);否則直接進入步驟(1.4);(1.4)判斷冗余度r是否大于最大節(jié)點號RN,如果是,在備用節(jié)點中將新的節(jié)點加入服務環(huán),使其擴展構(gòu)成r元服務環(huán),進入步驟(1.5);否則直接進入步驟(1.5);(1.5)備份任務t到服務環(huán)上與持有令牌的服務節(jié)點最近的r-1個節(jié)點上;(1.6)判斷服務環(huán)上是否存在負載小于閾值的有效節(jié)點,如果不存在,則將令牌傳遞給下一個即將加入服務環(huán)的環(huán)外備用節(jié)點,并為其分配節(jié)點號等于最大節(jié)點號加1,然后進入步驟(2);如果存在,則傳遞令牌到環(huán)上下一個負載小于閾值的有效節(jié)點,然后進入步驟(2);(2)服務節(jié)點N(i)執(zhí)行該協(xié)同任務,在執(zhí)行任務的過程中,檢查服務環(huán)中是否有失效節(jié)點N(i),如果無失效節(jié)點,轉(zhuǎn)入步驟(3);否則,服務管理器按如下步驟重構(gòu)服務環(huán)(2.1)判斷失效節(jié)點N(i)的負載是否等于零,如果是,則轉(zhuǎn)步驟(2.4);否則進入步驟(2.2);(2.2)從失效節(jié)點N(i)的任務集合中取出任務t,檢查任務t的邏輯環(huán)中是否存在負載小于負載閾值的有效節(jié)點N(j),如果不存在,則從備用節(jié)點中取出一個節(jié)點替代節(jié)點N(i),進入步驟(3);否則進入步驟(2.3);(2.3)將節(jié)點N(j)作為N(i)的一個替代節(jié)點,將任務t加入節(jié)點N(j)的任務集合中,同時節(jié)點N(i)的負載減1,然后轉(zhuǎn)步驟(2.1);(2.4)刪除節(jié)點N(i),同時所有大于i的節(jié)點號減1;(2.5)判斷持有令牌的節(jié)點負載是否等于閾值,如果不是,進入步驟(3);否則進入步驟(2.6);(2.6)判斷服務環(huán)上是否存在負載小于閾值的有效節(jié)點,如果存在,則傳遞令牌到下一個負載小于閾值的節(jié)點,然后進入步驟(3);否則,將令牌傳給環(huán)外的備用節(jié)點,并為其分配節(jié)點號等于最大節(jié)點號加1,然后進入步驟(3);(3)判斷任務t是否完成,如果否,轉(zhuǎn)入步驟(2),否則,進行如下步驟(3.1)從節(jié)點N(i)的任務集合中刪除任務t,并刪除節(jié)點N(i)中任務t對應的邏輯環(huán)T_C,將節(jié)點N(i)負載減1,
(3.2)判斷令牌號是否大于最大節(jié)點號,如果是,將令牌傳遞給節(jié)點N(i),結(jié)束,否則直接結(jié)束。
步驟(1.1)中r元服務基環(huán)構(gòu)建方法為根據(jù)任務t的服務冗余度r,從備用節(jié)點中取出r個服務節(jié)點,分別設置節(jié)點號為0,1,…,r-1,記為N(0),N(1),……,N(r-1);然后分配節(jié)點N(0)給協(xié)同任務作為主服務節(jié)點,其他節(jié)點作為N(0)的備份節(jié)點;最后這r個節(jié)點N(0),N(1),……,N(r-1)連接成環(huán),構(gòu)成由r個節(jié)點{N(0),N(1),……,N(r-1)}的r元服務基環(huán)。
步驟(1.4)中服務環(huán)擴展方式為首先增加r-RN個新節(jié)點,分配節(jié)點號分別為N(r),N(r+1),……,N(RN-1),然后根據(jù)服務基環(huán)構(gòu)建方式重構(gòu)服務環(huán)。
本發(fā)明是一種基于主用備份方式改進的結(jié)構(gòu),主服務節(jié)點接收客戶請求進行處理,備份節(jié)點根據(jù)任務冗余度大小動態(tài)分配,而不像主用備份方式結(jié)構(gòu)規(guī)定的每個任務的備份節(jié)點都必須是相同的。備份服務節(jié)點上的后備進程周期性地與主服務節(jié)點上的基本服務進程通信,與其保持同步。當基本服務進程失效后,從后備服務進程中選取一個作為基本服務進程。同時,任何一個服務節(jié)點都可以作為系統(tǒng)任務的主服務節(jié)點和備份節(jié)點,達到最大限度的利用系統(tǒng)資源。這種方式同主用備份方式相比,大大減少了備份進程在基本進程正常的情況下處于“閑置”的狀態(tài),有效的利用了系統(tǒng)資源。本發(fā)明能夠根據(jù)節(jié)點性能和協(xié)同系統(tǒng)負載狀況即協(xié)同工作的任務數(shù)量動態(tài)設定服務節(jié)點的負載閾值,改變服務冗余度,不僅提高了服務效率,而且以一種簡單有效的方式實現(xiàn)了負載平衡。具體而言,本發(fā)明主要有以下特點(1)動態(tài)性本發(fā)明利用系統(tǒng)的負載信息動態(tài)地定義服務節(jié)點的負載閾值,負載閾值的大小可根據(jù)系統(tǒng)負載的大小和系統(tǒng)可提供服務節(jié)點的數(shù)量及性能決定,可改變服務冗余度,既提高了系統(tǒng)可靠性和消息服務的效率,又不過多地占用系統(tǒng)資源。
(2)可擴展性服務節(jié)點的狀態(tài)復制算法與通信協(xié)議分離,不涉及底層通信機制,具有良好的可擴展性。
(3)細粒度的負載均衡本發(fā)明采用的是基于負載的調(diào)度方式,能精確定位負載最輕的節(jié)點,達到極佳的負載均衡效果,并且服務節(jié)點在作為備份節(jié)點的同時為協(xié)同工作任務提供服務,避免了系統(tǒng)資源的浪費和單一節(jié)點提供服務而造成的系統(tǒng)“瓶頸”。
(4)對用戶透明容錯機制對用戶完全透明,并且故障處理及時、系統(tǒng)恢復快、開銷小。
(5)良好的性價比與專用高可用性服務器相比,利用本發(fā)明的服務系統(tǒng)具有更好的容錯能力和更強的計算能力,而且系統(tǒng)的實現(xiàn)是經(jīng)濟的,易支付的。
圖1為本發(fā)明的流程示意圖;圖2為服務節(jié)點分配流程圖;圖3為本發(fā)明的k元服務環(huán)體系結(jié)構(gòu)圖;圖4為節(jié)點失效后服務環(huán)重構(gòu)流程圖;圖5為協(xié)同任務刪除流程圖。
具體實施例方式
下面結(jié)合附圖和實例對本發(fā)明作進一步詳細的說明。
如圖1所示,本發(fā)明包括以下步驟(1)當有服務請求到達時,服務管理器為其分配服務節(jié)點,服務請求變?yōu)閰f(xié)同任務;(2)執(zhí)行該協(xié)同任務,在執(zhí)行任務的過程中,定時檢查服務環(huán)中是否有失效節(jié)點。如果有失效節(jié)點,服務管理器發(fā)出指令重構(gòu)服務環(huán)。如果沒有失效節(jié)點,執(zhí)行步驟(3);(3)檢查任務是否完成。如果任務完成,服務節(jié)點刪除完成任務,結(jié)束;否則,回到步驟(2)。
系統(tǒng)可以根據(jù)節(jié)點的性能,為各節(jié)點選擇合適的負載閾值,并針對不同的服務請求設定任務的服務冗余度r。各服務節(jié)點的負載閾值、協(xié)同任務數(shù)量以及其冗余度r決定了服務環(huán)的節(jié)點數(shù)目。環(huán)上節(jié)點并行為協(xié)同任務提供服務,既提高了消息的處理能力,又有效利用系統(tǒng)資源。同時,在環(huán)上存在某些節(jié)點失效的情況下,服務環(huán)結(jié)構(gòu)保證有效服務節(jié)點能隨時接替失效服務節(jié)點的工作,自動重構(gòu)服務環(huán),為協(xié)同任務提供持續(xù)可靠的消息服務,保證服務的“不斷流”。
為更好的闡述服務環(huán)結(jié)構(gòu)的工作原理,我們將節(jié)點號等于令牌號的節(jié)點稱為持有令牌節(jié)點。以下詳細說明上述三個步驟的工作原理與流程(1)服務節(jié)點分配針對不同的服務請求設定任務的服務冗余度r,然后為其分配服務節(jié)點。如圖2所示,具體步驟如下(1.1)確定服務環(huán)是否存在,即判斷環(huán)上最大節(jié)點號RN是否為零。如果環(huán)上最大節(jié)點號為零,說明服務環(huán)不存在,需要構(gòu)建r元服務基環(huán),并設定令牌號為0;如果服務環(huán)存在,則進行第2步;其中,r元服務環(huán)構(gòu)建方式如下首先根據(jù)任務t的服務冗余度r從備用節(jié)點中取出r個服務節(jié)點,分別設置節(jié)點號為0,1,…,r-1,記為N(0),N(1),……,N(r-1);然后分配節(jié)點N(0)給協(xié)同任務作為主服務節(jié)點,其他節(jié)點作為N(0)的備份節(jié)點;最后這r個節(jié)點N(0),N(1),……,N(r-1)連接成環(huán)。由r個節(jié)點{N(0),N(1),……,N(r-1)}構(gòu)成的r元服務基環(huán)的連接方式有如下特征(a)當服務節(jié)點個數(shù)為r(r為正整數(shù),r≥2),最大服務節(jié)點號RN=r-1時,N(i)與N(j)和N(1)連接,其中j=(i-1)modr;l=(i+1)modr;j,l≥0且為整數(shù)。
(b)r元服務環(huán)中任意兩點N(i)與N(j)之間的距離d(i,j)=(i-j)modr。r元服務環(huán)結(jié)構(gòu)圖如圖3所示。
(1.2)將協(xié)同任務t分配給持有令牌的服務節(jié)點,其負載增1,將任務t添加到持有令牌節(jié)點的任務集合中;
(1.3)令牌號是否大于最大節(jié)點號。如果是,說明分配的節(jié)點是服務環(huán)外的節(jié)點,則將持有令牌節(jié)點加入服務環(huán),同時最大節(jié)點號增1;(1.4)冗余度r是否大于最大節(jié)點號RN。如果是,說明服務環(huán)上節(jié)點數(shù)目不滿足任務t的冗余度要求,則需在備用節(jié)點中將新的節(jié)點加入服務環(huán),使其擴展構(gòu)成r元服務環(huán);其中,服務環(huán)擴展方式如下首先增加r-RN個新節(jié)點,分配節(jié)點號分別為N(r),N(r+1),……,N(RN-1),然后根據(jù)上述的服務環(huán)構(gòu)建方式重構(gòu)服務環(huán);(1.5)備份任務t到服務環(huán)上與持有令牌的服務節(jié)點最近的r-1個節(jié)點上假如服務環(huán)為k元服務環(huán),具有冗余度為r的任務t分配到主服務節(jié)點N(i)時,根據(jù)“由近及遠”的原則,選取服務環(huán)上距離主服務節(jié)點最近的r-1個節(jié)點作為任務t的備份節(jié)點。備份節(jié)點號為(i-m)modk和(i+n)modk,其中 備份完成后,將令牌傳遞到下一個負載小于閾值的節(jié)點;(1.6)服務環(huán)上是否存在負載小于閾值的有效節(jié)點。如果不存在,則將令牌傳遞給下一個即將加入服務環(huán)的環(huán)外備用節(jié)點,并為其分配節(jié)點號等于最大節(jié)點號加1;如果存在,則傳遞令牌到環(huán)上下一個負載小于閾值的有效節(jié)點。
服務節(jié)點分配完畢后,任務t的邏輯環(huán)T_C就是其主服務節(jié)點和備份服務節(jié)點所組成的集合。系統(tǒng)利用令牌傳遞方式為協(xié)同工作任務分配服務環(huán)上輕載的服務節(jié)點,保證了服務環(huán)上節(jié)點的負載平衡。同時,服務環(huán)可以適應協(xié)同任務數(shù)量及冗余度的動態(tài)變化,具有良好的可擴展性。
(2)服務環(huán)重構(gòu)服務節(jié)點N(i)失效后,首先為N(i)上的任務尋找替代的服務節(jié)點,重構(gòu)服務環(huán);然后查詢持有令牌的節(jié)點是否依然滿足負載小于閾值的條件,如果不滿足,則需要傳遞令牌到下一個負載小于閾值的有效節(jié)點。
節(jié)點N(i)失效后服務環(huán)重構(gòu)NodeFailure(N(i)),如圖4所示,具體實施步驟如下(2.1)失效節(jié)點N(i)的負載是否等于零。如果是,則轉(zhuǎn)步驟(2.4);否則繼續(xù)下一步;(2.2)從節(jié)點N(i)的任務集合中取出任務t,檢查任務t的邏輯環(huán)中是否存在負載小于負載閾值的有效節(jié)點N(j),如果不存在,則從備用節(jié)點中取出一個節(jié)點替代節(jié)點N(i),結(jié)束;否則繼續(xù)下一步;(2.3)節(jié)點N(j)作為N(i)的一個替代節(jié)點,將任務t加入節(jié)點N(j)的任務集合中,同時節(jié)點N(i)的負載減1,然后轉(zhuǎn)步驟(2.1);(2.4)刪除節(jié)點N(i),同時所有大于i的節(jié)點號減1;(2.5)持有令牌的節(jié)點負載是否等于閾值。如果不是,則結(jié)束;否則繼續(xù)下一步;(2.6)服務環(huán)上是否存在負載小于閾值的有效節(jié)點。如果存在,則傳遞令牌到下一個負載小于閾值的節(jié)點;否則,說明環(huán)上節(jié)點負載都達到最大負載,將令牌傳給環(huán)外的備用節(jié)點,并為其分配節(jié)點號等于最大節(jié)點號加1。
假定服務環(huán)上節(jié)點N(i)失效,則分別為N(i)上協(xié)同任務尋找替代節(jié)點,即尋找N(i)上協(xié)同任務集合中每個任務的替代服務節(jié)點。假設任務集合中的任務t,其邏輯環(huán)為T_C,當協(xié)同任務t的主服務節(jié)點失效后,在T_C內(nèi)尋找與失效節(jié)點N(i)最近且負載小于負載閾值的有效節(jié)點作為其替代節(jié)點。如果該節(jié)點存在,則刪除失效節(jié)點并重構(gòu)服務環(huán),否則從備用節(jié)點中取出一個節(jié)點作為N(i)節(jié)點的替代節(jié)點重構(gòu)服務環(huán)。
(3)協(xié)同任務刪除服務節(jié)點負載,體現(xiàn)為節(jié)點上協(xié)同任務的數(shù)量,隨著協(xié)同任務的創(chuàng)建和刪除是動態(tài)變化的,節(jié)點上任務反映了協(xié)同任務在服務節(jié)點上的當前狀態(tài),因此當節(jié)點N(i)上冗余度為r的任務t結(jié)束退出或被刪除時,節(jié)點上負載要隨之變化。
節(jié)點N(i)上冗余度為r的協(xié)同任務t的刪除TaskDeleting(t),流程圖見圖5所示,具體實施步驟如下
(3.1)是否刪除節(jié)點N(i)的任務t,如果是,從節(jié)點N(i)的任務集合中刪除任務t;否則結(jié)束;(3.2)刪除節(jié)點N(i)中任務t對應的邏輯環(huán)T_C;(3.3)節(jié)點N(i)負載減1;(3.4)令牌號是否大于最大節(jié)點號。如果是,說明令牌節(jié)點為服務環(huán)外的節(jié)點,則將令牌傳遞給節(jié)點N(i)。
實例利用本發(fā)明所說的容錯方法,在實驗室提供了10個物理服務器,并且這些節(jié)點都能提供服務節(jié)點分配,協(xié)同任務刪除,服務環(huán)重構(gòu)等服務。10個物理服務器的硬件配置以及根據(jù)機器性能設置的負載閾值如下
創(chuàng)建第一個冗余度為4的協(xié)同任務t1時,系統(tǒng)構(gòu)建服務基環(huán)我們從10臺備用機中取出4個服務節(jié)點,記為N(0),N(1),N(2),N(3)。按照以下列方式連接成服務環(huán)節(jié)點N(0)與節(jié)點N(3),N(1)連接;節(jié)點N(1)與節(jié)點N(0),N(2)連接;節(jié)點N(2)與節(jié)點N(1),N(3)連接;節(jié)點N(3)與節(jié)點N(2),N(0)連接。其中N(0)為任務t1的主服務節(jié)點,N(1),N(2)和N(3)為t1的備份服務節(jié)點,t1成為節(jié)點N(0)上任務,具有邏輯環(huán)T_C={N(0),N(1),N(2),N(3)}。基環(huán)創(chuàng)建時間為5毫秒。
創(chuàng)建第二個冗余度為7的協(xié)同任務t2時,由于服務環(huán)上節(jié)點個數(shù)是4,服務環(huán)不滿足協(xié)同任務t2的冗余度要求,再從備用節(jié)點中取出3個節(jié)點加入服務環(huán),分別記為N(4),N(5),N(6)。服務環(huán)由4元服務環(huán)擴展為7元服務環(huán)。然后分配節(jié)點N(1)作為任務t2的主服務節(jié)點,備份節(jié)點為N(0),N(2),N(3),N(4),N(5),N(6)。t2成為節(jié)點N(1)上任務,具有邏輯環(huán)T_C={N(1),N(0),N(2),N(3),N(4),N(5),N(6)}。
創(chuàng)建第三個冗余度為3的協(xié)同任務t3時,分配節(jié)點N(2)作為任務t3的主服務節(jié)點,備份節(jié)點為N(1),N(3)。t3成為節(jié)點N(2)上任務,具有邏輯環(huán)T_C={N(1),N(2),N(3)}。
同上述方式,系統(tǒng)依次創(chuàng)建協(xié)同任務t4,t5,……分配環(huán)上輕載的節(jié)點作為其主服務節(jié)點提供服務并確定任務的邏輯環(huán)。當環(huán)上的節(jié)點負載均達到其負載閾值,則將新的節(jié)點加入服務環(huán),保證服務的性能。
經(jīng)多次測試,采用本發(fā)明所說的協(xié)同系統(tǒng)可擴展容錯方法的服務環(huán),對于節(jié)點失效后,服務環(huán)仍能正常工作,由于失效節(jié)點上的任務會被重新分配到有效節(jié)點,以及重構(gòu)服務環(huán),保證了正在執(zhí)行的服務請求不會受到影響。
權(quán)利要求
1.一種協(xié)同系統(tǒng)中可擴展的動態(tài)容錯方法,包括以下步驟(1)當服務請求到達時,服務管理器按如下步驟為其分配服務節(jié)點(1.1)判斷環(huán)上最大節(jié)點號RN是否為零,如果RN=0,要構(gòu)建r元服務基環(huán),并設定令牌號為0,進入步驟(1.2);否則直接進入步驟(1.2);(1.2)將協(xié)同任務t分配給持有令牌的服務節(jié)點N(i),其負載增1,將任務t添加到持有令牌節(jié)點的任務集合中;(1.3)判斷令牌號是否大于最大節(jié)點號,如果是,將持有令牌的節(jié)點加入服務環(huán),同時令RN=RN+1,進入步驟(1.4);否則直接進入步驟(1.4);(1.4)判斷冗余度r是否大于最大節(jié)點號RN,如果是,在備用節(jié)點中將新的節(jié)點加入服務環(huán),使其擴展構(gòu)成r元服務環(huán),進入步驟(1.5);否則直接進入步驟(1.5);(1.5)備份任務t到服務環(huán)上與持有令牌的服務節(jié)點最近的r-1個節(jié)點上;(1.6)判斷服務環(huán)上是否存在負載小于閾值的有效節(jié)點,如果不存在,則將令牌傳遞給下一個即將加入服務環(huán)的環(huán)外備用節(jié)點,并為其分配節(jié)點號等于最大節(jié)點號加1,然后進入步驟(2);如果存在,則傳遞令牌到環(huán)上下一個負載小于閾值的有效節(jié)點,然后進入步驟(2);(2)服務節(jié)點N(i)執(zhí)行該協(xié)同任務,在執(zhí)行任務的過程中,檢查服務環(huán)中是否有失效節(jié)點N(i),如果無失效節(jié)點,轉(zhuǎn)入步驟(3);否則,服務管理器按如下步驟重構(gòu)服務環(huán)(2.1)判斷失效節(jié)點N(i)的負載是否等于零,如果是,則轉(zhuǎn)步驟(2.4);否則進入步驟(2.2);(2.2)從失效節(jié)點N(i)的任務集合中取出任務t,檢查任務t的邏輯環(huán)中是否存在負載小于負載閾值的有效節(jié)點N(j),如果不存在,則從備用節(jié)點中取出一個節(jié)點替代節(jié)點N(i),進入步驟(3);否則進入步驟(2.3);(2.3)將節(jié)點N(j)作為N(i)的一個替代節(jié)點,將任務t加入節(jié)點N(j)的任務集合中,同時節(jié)點N(i)的負載減1,然后轉(zhuǎn)步驟(2.1);(2.4)刪除節(jié)點N(i),同時所有大于i的節(jié)點號減1;(2.5)判斷持有令牌的節(jié)點負載是否等于閾值,如果不是,進入步驟(3);否則進入步驟(2.6);(2.6)判斷服務環(huán)上是否存在負載小于閾值的有效節(jié)點,如果存在,則傳遞令牌到下一個負載小于閾值的節(jié)點,然后進入步驟(3);否則,將令牌傳給環(huán)外的備用節(jié)點,并為其分配節(jié)點號等于最大節(jié)點號加1,然后進入步驟(3);(3)判斷任務t是否完成,如果否,轉(zhuǎn)入步驟(2),否則,進行如下步驟(3.1)從節(jié)點N(i)的任務集合中刪除任務t,并刪除節(jié)點N(i)中任務t對應的邏輯環(huán)T_C,將節(jié)點N(i)負載減1,(3.2)判斷令牌號是否大于最大節(jié)點號,如果是,將令牌傳遞給節(jié)點N(i),結(jié)束,否則直接結(jié)束。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于步驟(1.1)中r元服務基環(huán)構(gòu)建方法為根據(jù)任務t的服務冗余度r,從備用節(jié)點中取出r個服務節(jié)點,分別設置節(jié)點號為0,1,…,r-1,記為N(0),N(1),……,N(r-1);然后分配節(jié)點N(0)給協(xié)同任務作為主服務節(jié)點,其他節(jié)點作為N(0)的備份節(jié)點;最后這r個節(jié)點N(0),N(1),……,N(r-1)連接成環(huán),構(gòu)成由r個節(jié)點{N(0),N(1),……,N(r-1)}的r元服務基環(huán)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于步驟(1.4)中服務環(huán)擴展方式為首先增加r-RN個新節(jié)點,分配節(jié)點號分別為N(r),N(r+1),……,N(RN-1),然后根據(jù)服務基環(huán)構(gòu)建方式重構(gòu)服務環(huán)。
全文摘要
本發(fā)明公開了一種協(xié)同系統(tǒng)中可擴展的動態(tài)容錯方法,該方法是基于主用備份方式的改進,主服務節(jié)點接收客戶請求進行處理,備份節(jié)點根據(jù)任務冗余度大小動態(tài)分配;備份服務節(jié)點上的后備進程周期性地與主服務節(jié)點上的基本服務進程通信,與其保持同步。當基本服務進程失效后,從后備服務進程中選取一個作為基本服務進程。同時,任何一個服務節(jié)點都可以作為系統(tǒng)任務的主服務節(jié)點和備份節(jié)點,達到最大限度的利用系統(tǒng)資源。本發(fā)明減少了備份進程在基本進程正常的情況下處于“閑置”的狀態(tài),有效的利用了系統(tǒng)資源。本發(fā)明能夠根據(jù)節(jié)點性能和協(xié)同系統(tǒng)負載狀況,改變服務冗余度,不僅提高了服務效率,而且以一種簡單有效的方式實現(xiàn)了負載平衡。
文檔編號H04L12/18GK1744554SQ20051001958
公開日2006年3月8日 申請日期2005年10月13日 優(yōu)先權(quán)日2005年10月13日
發(fā)明者金海 , 王玎, 李勝利, 袁平鵬, 李昌清, 孫盛, 黎時才, 鄺坪, 戰(zhàn)治國, 王輝 申請人:華中科技大學