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