專利名稱:資源的容錯(cuò)和可縮放的負(fù)載分布的制作方法
資源的容錯(cuò)和可縮放的負(fù)載分布
背景技術(shù):
容錯(cuò)性和縮放能力是對(duì)基于服務(wù)器的系統(tǒng)的兩個(gè)要求。在典型系統(tǒng)中,服務(wù)器處理一組資源并且提供找到資源的能力。例如,文件服務(wù)器向用戶提供存儲(chǔ)和查找該服務(wù)器上的文件的能力。在單個(gè)服務(wù)器場(chǎng)景中,所有這些資源都存儲(chǔ)在集中式的位置處,在那里,多個(gè)服務(wù)器可以用于服務(wù)于資源。當(dāng)服務(wù)器停機(jī)時(shí),由該服務(wù)器來(lái)服務(wù)的那些資源受到影響。
發(fā)明內(nèi)容
提供本發(fā)明內(nèi)容以便以簡(jiǎn)化形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概念。本概述并非旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。使用分布式資源算法在服務(wù)器上對(duì)資源進(jìn)行定位,所述分布式資源算法在服務(wù)器 群集內(nèi)的每個(gè)服務(wù)器上執(zhí)行。在該群集中的任一服務(wù)器處接收針對(duì)資源的請(qǐng)求。接收該請(qǐng)求的服務(wù)器執(zhí)行分布式資源算法來(lái)確定擁有和處理所請(qǐng)求資源的服務(wù)器。該服務(wù)器在該服務(wù)器擁有該資源時(shí)處理該請(qǐng)求,或者將該請(qǐng)求傳遞給擁有該資源的服務(wù)器。分布式資源算法自動(dòng)地適應(yīng)于在該群集內(nèi)添加或移除服務(wù)器,并且嘗試將資源在該群集內(nèi)的可用服務(wù)器間均勻分布。附圖簡(jiǎn)述圖I示出了示例性計(jì)算環(huán)境;圖2示出了用于在服務(wù)器群集中對(duì)資源進(jìn)行定位的系統(tǒng);圖3示出了用于分配和映射服務(wù)器群集內(nèi)的資源的過(guò)程;圖4示出了用于請(qǐng)求資源的說(shuō)明性過(guò)程;以及圖5示出了用于請(qǐng)求臨時(shí)由備份服務(wù)器處理的資源的說(shuō)明性過(guò)程。詳細(xì)描述現(xiàn)將參考附圖來(lái)描述各實(shí)施例,在附圖中類似的標(biāo)號(hào)代表類似的元素。具體地,圖I和相應(yīng)的討論旨在提供對(duì)在其中可實(shí)現(xiàn)各實(shí)施例的合適計(jì)算環(huán)境的簡(jiǎn)要、概括描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)和其它類型的結(jié)構(gòu)。也可使用其它計(jì)算機(jī)系統(tǒng)配置,包括手持式設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程消費(fèi)電子產(chǎn)品、小型計(jì)算機(jī)、大型計(jì)算機(jī)等等。還可使用在其中任務(wù)由通過(guò)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計(jì)算環(huán)境。在分布式計(jì)算環(huán)境中,程序模塊可位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備兩者中?,F(xiàn)在參考
圖1,將描述在各個(gè)實(shí)施例中所利用的計(jì)算機(jī)100的說(shuō)明性計(jì)算機(jī)環(huán)境。圖I所示的計(jì)算環(huán)境可以被配置為服務(wù)器、臺(tái)式或移動(dòng)計(jì)算機(jī)、或者某一其他類型的計(jì)算設(shè)備,并且包括中央處理單元5 (“CPU”)、包括隨機(jī)存取存儲(chǔ)器9 (“RAM”)和只讀存儲(chǔ)器(“R0M”)10的系統(tǒng)存儲(chǔ)器7、以及將該存儲(chǔ)器耦合至中央處理單元(“CPU”)5的系統(tǒng)總線12?;据斎?輸出系統(tǒng)存儲(chǔ)在ROM 10中,所述基本輸入/輸出系統(tǒng)包含幫助在諸如啟動(dòng)期間在計(jì)算機(jī)內(nèi)元件之間傳遞信息的基本例程。計(jì)算機(jī)100還包括用于存儲(chǔ)操作系統(tǒng)
16、應(yīng)用程序24、其它程序模塊25和資源管理器26的大容量存儲(chǔ)設(shè)備14,這將在以下更為詳盡地描述。大容量存儲(chǔ)設(shè)備14通過(guò)連接至總線12的大容量存儲(chǔ)控制器(未示出)連接到CPU
5。大容量存儲(chǔ)設(shè)備14及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)為計(jì)算機(jī)100提供非易失性、非瞬態(tài)存儲(chǔ)。雖然此處包含的對(duì)計(jì)算機(jī)可讀介質(zhì)的描述針對(duì)諸如硬盤或CD-ROM驅(qū)動(dòng)器等大容量存儲(chǔ)設(shè)備,但是計(jì)算機(jī)可讀介質(zhì)可以是能夠由計(jì)算機(jī)100訪問(wèn)的任何可用介質(zhì)。作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以存儲(chǔ)如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)等信息的任何方法或技術(shù)來(lái)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)還包括,但不限于,RAM、ROM、可擦除可編程只讀存儲(chǔ)器(“EPROM”)、電可擦可編程只讀存儲(chǔ)器(“EEPR0M”)、閃存或其它固態(tài)存儲(chǔ)器技術(shù)、⑶-ROM、數(shù)字多功能盤(“DVD”)或其它光存儲(chǔ)、磁帶盒、磁帶、磁盤存儲(chǔ)或其它磁性存儲(chǔ)設(shè)備、或能用于存儲(chǔ)所需信息且可以由計(jì)算機(jī)100訪問(wèn)的任何其它介質(zhì)。計(jì)算機(jī)100使用通過(guò)諸如因特網(wǎng)之類的網(wǎng)絡(luò)18與遠(yuǎn)程計(jì)算機(jī)的邏輯連接而在網(wǎng)絡(luò)化環(huán)境中操作。計(jì)算機(jī)100可以通過(guò)連接至總線12的網(wǎng)絡(luò)接口單元20來(lái)連接到網(wǎng)絡(luò)18。網(wǎng)絡(luò)連接可以是無(wú)線的和/或有線的。網(wǎng)絡(luò)接口單元20也可用于連接到其它類型的網(wǎng)絡(luò)和遠(yuǎn)程計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)100還可包括用于接收和處理來(lái)自多個(gè)其他設(shè)備的輸入的輸入/輸出控制器22,這些設(shè)備包括鍵盤、鼠標(biāo)或者電子指示筆(未在圖I中示出)。類似地,輸A /輸出控制器22可以提供到IP電話、顯示屏23、打印機(jī)或其它類型的輸出設(shè)備的輸入/輸出。載波網(wǎng)絡(luò)28是負(fù)責(zé)與移動(dòng)設(shè)備29通信的網(wǎng)絡(luò)。載波網(wǎng)絡(luò)28可包括無(wú)線和有線組件兩者。例如,載波網(wǎng)絡(luò)28可包括鏈接到有線電話網(wǎng)絡(luò)的蜂窩塔。通常,蜂窩塔攜帶發(fā)往及來(lái)自諸如蜂窩電話、筆記本計(jì)算機(jī)、袖珍PC、長(zhǎng)距離通信鏈接等移動(dòng)設(shè)備的通信。網(wǎng)關(guān)27在載波網(wǎng)絡(luò)28和IP網(wǎng)絡(luò)18之間路由消息。例如,可在載波網(wǎng)絡(luò)28上將呼叫或某個(gè)其他消息路由到移動(dòng)設(shè)備和/或在IP網(wǎng)絡(luò)18上將呼叫或某個(gè)其他消息路由到用戶的設(shè)備。網(wǎng)關(guān)27提供用于將通信從IP網(wǎng)絡(luò)傳送到載波網(wǎng)絡(luò)的手段。反過(guò)來(lái),具有連接到載波網(wǎng)絡(luò)的設(shè)備的用戶可將呼叫定向到IP網(wǎng)絡(luò)上的客戶端。如前簡(jiǎn)述的那樣,多個(gè)程序模塊和數(shù)據(jù)文件可以存儲(chǔ)在計(jì)算機(jī)100的大容量存儲(chǔ)設(shè)備14和RAM 9內(nèi),包括適于控制計(jì)算機(jī)的操作的操作系統(tǒng)16,如華盛頓州雷蒙德市的微軟公司的 OFFICE COMMUNICATION SERVER 、WINDOWS SERVER 或 WINDOWS 7 操作系統(tǒng)。大容量存儲(chǔ)設(shè)備14和RAM9還可以存儲(chǔ)一個(gè)或多個(gè)程序模塊。具體而言,大容量存儲(chǔ) 設(shè)備14和RAM 9可以存儲(chǔ)一個(gè)或多個(gè)應(yīng)用程序24和程序模塊25。資源管理器26被配置為使用在服務(wù)器群集內(nèi)的每個(gè)服務(wù)器上執(zhí)行的分布式資源算法來(lái)對(duì)資源進(jìn)行定位。在服務(wù)器處接收針對(duì)資源的請(qǐng)求。該服務(wù)器執(zhí)行分布式資源算法來(lái)確定擁有和處理所請(qǐng)求資源的服務(wù)器。該服務(wù)器在該服務(wù)器擁有該資源時(shí)處理該請(qǐng)求,或者將該請(qǐng)求傳遞給擁有該資源的服務(wù)器。分布式資源算法自動(dòng)地適應(yīng)于在該群集內(nèi)添加或移除服務(wù)器,并且旨在將資源在該群集內(nèi)的可用服務(wù)器間均勻分布。根據(jù)一個(gè)實(shí)施例,資源管理器26與諸如微軟的OFFICE COMMUNICATOR 之類的應(yīng)用程序24通信。盡管資源管理器26被示出為獨(dú)立程序,但是該功能可被集成到諸如微軟的OFFICE COMMUNICATOR ^乙類的其他軟件和/或硬件中。資源管理器26的操作在以下更詳細(xì)地描述??梢允褂糜脩艚缑?5與資源管理器26和/或應(yīng)用程序24交互。圖2示出了用于在服務(wù)器群集對(duì)資源進(jìn)行定位的系統(tǒng)。如所示那樣,系統(tǒng)200包括耦合到IP網(wǎng)絡(luò)18的服務(wù)器Rl (210)、R2 (220)和R3 (230)的群集。該群集內(nèi)的每個(gè)服務(wù)器都包括用于對(duì)資源進(jìn)行定位的資源管理器26,并且擁有和處理一組資源(212a、212b和212c)。如上面簡(jiǎn)述的那樣,資源管理器26被配置為通過(guò)執(zhí)行分布式資源算法來(lái)在群集內(nèi)對(duì)資源進(jìn)行定位。 在群集內(nèi),當(dāng)在服務(wù)器上接收到對(duì)資源進(jìn)行定位的請(qǐng)求時(shí),該服務(wù)器上的資源管理器26執(zhí)行分布式資源算法。對(duì)所定位的每一資源相關(guān)聯(lián)。該資源可以是任何類型的資源,比如文件、用戶、郵箱、目錄等等。例如,分布式資源算法可以用于域名系統(tǒng)(DNS)負(fù)載平衡。根據(jù)一個(gè)實(shí)施例,當(dāng)資源為用戶時(shí),該唯一標(biāo)識(shí)符基于該用戶的統(tǒng)一資源標(biāo)識(shí)符(URI)。該用戶的URI可以用于確定將服務(wù)于該用戶的實(shí)際服務(wù)器。例如,當(dāng)服務(wù)器從用戶接收到請(qǐng)求時(shí),該服務(wù)器的資源管理器26使用URI來(lái)確定分配該群集內(nèi)的什么服務(wù)器來(lái)處理該用戶。當(dāng)資源是文件時(shí),該唯一標(biāo)識(shí)符可以基于文件名、全局唯一標(biāo)識(shí)符(GUID)、或者某個(gè)其他唯一標(biāo)識(shí)符。類似地,會(huì)話發(fā)起協(xié)議(SIP)服務(wù)器可以將用戶的SIP URI用作唯一標(biāo)識(shí)符。一般而言,可以使用任何唯一標(biāo)識(shí)符來(lái)標(biāo)識(shí)出所述資源中的每個(gè)。如所示那樣,群集200包括三個(gè)物理服務(wù)器(Rl,R2和R3)。還維護(hù)有邏輯服務(wù)器260的列表。在用于對(duì)資源進(jìn)行定位的會(huì)話期間,群集中的邏輯服務(wù)器的數(shù)目保持恒定。在當(dāng)前示例中,存在四個(gè)邏輯服務(wù)器(SI,S2,S3,S4),這如框260中所示。邏輯服務(wù)器表示可以在任何時(shí)間運(yùn)行的潛在物理服務(wù)器,比如R1、R2或R3。每個(gè)邏輯服務(wù)器不必對(duì)應(yīng)于實(shí)際執(zhí)行分布式資源算法的物理服務(wù)器的數(shù)目,但是物理服務(wù)器的數(shù)目不大于在操作期間所分配的邏輯服務(wù)器的數(shù)目。然而,物理服務(wù)器的數(shù)目可能在對(duì)資源進(jìn)行定位時(shí)改變。例如,在操作期間的任何時(shí)刻,物理服務(wù)器(R1,R2,R3)中的一個(gè)或多個(gè)可能都停機(jī)和恢復(fù)??梢詫⑦壿嫹?wù)器的數(shù)目設(shè)置成任何數(shù)目,只要該數(shù)目至少等于將在用于對(duì)資源進(jìn)行定位的會(huì)話期間運(yùn)行的物理服務(wù)器的數(shù)目。根據(jù)一個(gè)實(shí)施例,將邏輯服務(wù)器的數(shù)目設(shè)置成將可用于對(duì)資源進(jìn)行定位的物理服務(wù)器的最大數(shù)目。出于不旨在為限制性的解釋說(shuō)明目的,假定該群集具有四個(gè)邏輯服務(wù)器{SI,S2,S3,S4} (4的基數(shù)),這如框260所示。在下面的示例中,假定所述資源中的每個(gè)都是用戶。向每個(gè)資源分配邏輯服務(wù)器的序列,所述序列指示處理該用戶的服務(wù)器的優(yōu)先級(jí)。假定向用戶Alice分配序列{S3,S4,S2,S1}。在分配以后,該序列不改變,并且由每個(gè)服務(wù)器以相同方式來(lái)計(jì)算,使得每個(gè)服務(wù)器都以相同的所分配序列出現(xiàn)。在當(dāng)前的示例中,邏輯服務(wù)器S3對(duì)于Alice是主要服務(wù)器。S4是將在服務(wù)器S3不可用時(shí)使用的次要服務(wù)器。服務(wù)器S2是將在S3和S4都不可用時(shí)使用的第三服務(wù)器,并且SI是在沒(méi)有其他服務(wù)器運(yùn)行時(shí)處理針對(duì)用戶Alice的請(qǐng)求的最后的服務(wù)器。在運(yùn)行時(shí),維護(hù)物理服務(wù)器到邏輯服務(wù)器的運(yùn)行時(shí)映射270。例如當(dāng)存在三個(gè)物理服務(wù)器Rl、R2和R3時(shí),它們可以分別被映射到SI、S2和S3。然而,可以使用任何映射,只要該映射在服務(wù)器間是一致的。在該示例中,不存在對(duì)應(yīng)于邏輯服務(wù)器S4的物理服務(wù)器并且在框270內(nèi)用X來(lái)表示。Alice首先被分配給R3 (因?yàn)镾3是所分配的主要邏輯服務(wù)器),并且如果R3不可用,則被分配給R2并且然后是Rl。
在運(yùn)行時(shí),服務(wù)器Rl、R2和R3通過(guò)IP網(wǎng)絡(luò)18交換健康度信息,所述IP網(wǎng)絡(luò)18允許每個(gè)服務(wù)器得知該群集內(nèi)的其他服務(wù)器中的每個(gè)的健康度信息。健康度信息可以包括不同的信息。例如,健康度可以是由存活的每個(gè)服務(wù)器以預(yù)定的時(shí)間(例如I秒、10秒、I分鐘等等)自動(dòng)地傳遞的簡(jiǎn)單心跳來(lái)確定,或者包括通信內(nèi)的更詳細(xì)信息。例如,健康度信息可以包括服務(wù)器的當(dāng)前狀態(tài)、預(yù)計(jì)停機(jī)時(shí)間等等。假定將Alice分配給服務(wù)器R3,因?yàn)槠渑銮墒茿lice的序列上為第一服務(wù)器。當(dāng)R3停機(jī)時(shí),Alice重新連接。群集內(nèi)的其他服務(wù)器基于所交換的健康度信息得知R3為不可用的,并且R2取得對(duì)Alice的所有權(quán),因?yàn)镽2是該群集內(nèi)存活的第一可用物理服務(wù)器,并且映射到下一邏輯服務(wù)器S2。當(dāng)Rl需要找出擁有資源Alice的服務(wù)器時(shí),資源管理器26運(yùn)行確定性資源算法并且確定R2是Alice的物理列表上的存活的第一服務(wù)器,并且將請(qǐng)求轉(zhuǎn)發(fā)給R2。當(dāng)通過(guò)交換健康度信息確定R3恢復(fù)上線時(shí),物理服務(wù)器R1、以及被臨時(shí)從服務(wù)器Rl分配資源的R2評(píng)估它們當(dāng)前擁有的所有資源。R2確定其對(duì)于Alice不是物理序列中存活的第一服務(wù)器并且將Alice遷移回R3?,F(xiàn)在參考圖3-5,將描述用于在服務(wù)器群集內(nèi)對(duì)資源進(jìn)行定位的說(shuō)明性過(guò)程。當(dāng)閱讀對(duì)在此提供的例程的討論時(shí),應(yīng)當(dāng)理解,各實(shí)施例的邏輯操作被實(shí)現(xiàn)為(I)運(yùn)行于計(jì)算系統(tǒng)上的一系列計(jì)算機(jī)實(shí)現(xiàn)的動(dòng)作或程序模塊,和/或(2)計(jì)算系統(tǒng)內(nèi)互連的機(jī)器邏輯電路或電路模塊。該實(shí)現(xiàn)是取決于實(shí)現(xiàn)本發(fā)明的計(jì)算系統(tǒng)的性能要求來(lái)選擇的。因此,所例示的并且構(gòu)成此處所描述的實(shí)施例的邏輯操作被不同地表示為操作、結(jié)構(gòu)設(shè)備、動(dòng)作或模塊。這些操作、結(jié)構(gòu)設(shè)備、動(dòng)作和模塊可用軟件、固件、專用數(shù)字邏輯,及其任何組合來(lái)實(shí)現(xiàn)。現(xiàn)在參考圖3,示出了用于在服務(wù)器群集內(nèi)分配和映射的資源的過(guò)程300。在啟動(dòng)框以后,該過(guò)程移動(dòng)到操作310,在操作310,為每個(gè)資源確定服務(wù)器的序列的分配。在給定具有基數(shù)n的邏輯服務(wù)器{SI,S2,. . . Sn}的列表的情況下,為每個(gè)資源確定該序列的特定排列。根據(jù)一個(gè)實(shí)施例,該確定性排列是由資源的唯一標(biāo)識(shí)符來(lái)鍵控的(keyed)。該序列中的第一條目被稱為該資源的主要服務(wù)器,下一條目是該資源的次要服務(wù)器,第三條目是該資源的第三服務(wù)器,以此類推。邏輯服務(wù)器的使用允許所分配的序列即使在添加新服務(wù)器或從群集移除服務(wù)器的情況下仍然對(duì)于資源保持相同。一般而言,所分配的序列應(yīng)當(dāng)導(dǎo)致資源在邏輯服務(wù)器之間的公平分布。例如,如果存在一千個(gè)資源和四個(gè)邏輯服務(wù)器,則應(yīng)當(dāng)向每個(gè)邏輯服務(wù)器分配大致250個(gè)資源。分配的公平性取決于用于生成邏輯序列的算法。一般而言,應(yīng)當(dāng)利用導(dǎo)致資源在邏輯服務(wù)器之間的的大致相等分布的算法。不公平的算法可能導(dǎo)致所有資源被分配給同一服務(wù)器。例如,如果該算法為所有資源生成相同序列,則所有這些資源都將被分配給同一服務(wù)器。根據(jù)一個(gè)實(shí)施例,利用分布式散列表(DHT)。DHT的使用在運(yùn)行在該系統(tǒng)中的任何服務(wù)器上時(shí)產(chǎn)生相同結(jié)果,并且不需要中央?yún)f(xié)調(diào)器。DHT通過(guò)執(zhí)行重新平衡算法來(lái)處理群集內(nèi)的服務(wù)器成員資格的改變。一般而言,對(duì)資源的唯一標(biāo)識(shí)符進(jìn)行散列以創(chuàng)建索引號(hào)。然后,使用該索引號(hào)來(lái)為該資源確定服務(wù)器序列(即主要服務(wù)器、次要服務(wù)器…)。散列函數(shù)將該資源的唯一標(biāo)識(shí)符映射到范圍[1,N !]內(nèi)的整數(shù),其中N是邏輯服務(wù)器集合的基數(shù)。例如,考慮基數(shù)3。在三個(gè)邏輯服務(wù)器的情況下,存在六個(gè)可能的分配,這在下面列出。
~FI~ST]~S2~|~S3~
2SI S3S2~
3S2 SI S3~
~ S2 S3~~ST
5 S3~~SI S2~
~6 S3S2 ST因此,在給定I至3 ! =6之間的整數(shù)時(shí),通過(guò)進(jìn)行簡(jiǎn)單表查找來(lái)獲得邏輯映射。隨著基數(shù)上升,表的大小也上升(N !個(gè)條目)。還可以使用迭代方案來(lái)確定分配。從上面可以得知,對(duì)于索引I和2,最重要位置的邏輯服務(wù)器是SI,對(duì)于索引3和4最重要位置的邏輯服務(wù)器為S2,并且對(duì)于剩余索引,其為S3。一旦第一服務(wù)器已經(jīng)被固定,則該算法前進(jìn)到下一位置。根據(jù)一個(gè)實(shí)施例,該算法從最重要位置工作到最不重要的位置。一旦已經(jīng)為給定資源計(jì)算出邏輯序列,則該過(guò)程移動(dòng)到操作320,在操作320,將邏輯序列映射到物理序列。根據(jù)一個(gè)實(shí)施例,每個(gè)服務(wù)器都在被委托時(shí)被分配ID,其中每個(gè)服務(wù)器具有不同的ID。根據(jù)一個(gè)實(shí)施例,將邏輯服務(wù)器映射到具有與其自身具有相同ID的物理服務(wù)器。如果不存在被分配該ID的服務(wù)器,則將邏輯服務(wù)器映射到“不存在”的物理服務(wù)器(即圖2中對(duì)于S4為X)。為了示出物理服務(wù)器到服務(wù)器的邏輯序列的分配,假定存在四個(gè)被委托的服務(wù)器并且存在十個(gè)邏輯服務(wù)器。四個(gè)物理服務(wù)器被分配id 1、2、5和6。邏輯映射{SI,S2,S3,S4,S5,S6,S7,S8,S9,S10}被映射到{Rl,R2,X,X,R5,R6,X,X,X,X},其中 X 表示“不存在”的服務(wù)器。因此,服務(wù)器的物理ID與該服務(wù)器的邏輯id相同。一旦已經(jīng)獲得該映射,則該過(guò)程就移動(dòng)到操作330,在操作330,服務(wù)器從開(kāi)頭走過(guò)該列表,并且檢查以獲悉每個(gè)物理服務(wù)器是否為活動(dòng)的。然后將針對(duì)該資源的請(qǐng)求定向到活動(dòng)的第一物理服務(wù)器。當(dāng)該資源的主要服務(wù)器不可用時(shí),則后備服務(wù)器之一擁有該資源。根據(jù)一個(gè)實(shí)施例,當(dāng)服務(wù)器不是資源的主要服務(wù)器時(shí),該資源在后備模式下被該服務(wù)器接受。例如,如果資源的物理序列是{Rl,R2,X,X,R5,X,R7,X,X,X}并且如果Rl停機(jī),則該資源在R2未停機(jī)時(shí)在后備模式下被R2接受。如果Rl和R2都停機(jī),則該資源在后備模式下被R5接受。如果另一方面,Rl恢復(fù),則該資源被Rl處的主要服務(wù)器擁有,并且由于在Rl之前不存在其他服務(wù)器,因此不認(rèn)為該用戶處于后備模式。移動(dòng)到操作340,當(dāng)群集內(nèi)的物理服務(wù)器的數(shù)目改變時(shí),在服務(wù)器間對(duì)資源進(jìn)行重新平衡。例如,當(dāng)將服務(wù)器添加到群集時(shí),則評(píng)估由后備服務(wù)器任一處理的任何資源以確定它們是否要被移動(dòng)到已恢復(fù)的服務(wù)器。由主要服務(wù)器處理的資源不受非主要服務(wù)器恢復(fù)的影響。
類似地,當(dāng)從群集移除服務(wù)器時(shí),則把被移除的服務(wù)器所擁有的所有資源移動(dòng)到群集內(nèi)的另一服務(wù)器。這以兩個(gè)步驟進(jìn)行把關(guān)于被解除委托的服務(wù)器的信息傳播給群集服務(wù)器內(nèi)的所有注冊(cè)者。這導(dǎo)致針對(duì)該資源的隨后請(qǐng)求到達(dá)正確的服務(wù)器。當(dāng)被解除委托的服務(wù)器停機(jī)時(shí),使分配給該服務(wù)器的所有資源斷開(kāi)。當(dāng)發(fā)生針對(duì)該資源的請(qǐng)求時(shí),則其到達(dá)群集中的不同服務(wù)器并且被合適地重定向。為了減少同時(shí)進(jìn)行的資源重新分配的數(shù)目,多個(gè)資源可以移動(dòng)到批量模式。例如,替代于處理同時(shí)移動(dòng)所述資源的所有請(qǐng)求,一次可以處理預(yù)定數(shù)目(即25、50、1000等等)。當(dāng)物理服務(wù)器停機(jī)時(shí),把被分配給該物理服務(wù)器的所有資源移動(dòng)到另一服務(wù)器。類似地,當(dāng)該服務(wù)器被分配為處理用戶時(shí),則另一服務(wù)器被分配為處理該用戶。由于在群集的服務(wù)器之間交換健康度信息,因此所述資源被移動(dòng)到該資源的邏輯序列中的下一可用服務(wù)器,并且該服務(wù)器現(xiàn)在擁有該資源,直到該資源再次被移動(dòng)(即服務(wù)器恢復(fù))。當(dāng)服務(wù)器恢復(fù)為在線時(shí),所有服務(wù)器都探測(cè)到這一情況,并且重新評(píng)估它們擁有的資源。如果恢復(fù)的物理資源處于資源所在的物理服務(wù)器之前,則將該資源遷移到正確的物理服務(wù)器。隨后該過(guò)程流至結(jié)束框,并返回以處理其它動(dòng)作。圖4示出了用于請(qǐng)求資源的說(shuō)明性過(guò)程。如所示那樣,過(guò)程400包括請(qǐng)求者410、服務(wù)器R2 (420 )、R2資源管理器430、服務(wù)器Rl (440)和Rl資源管理器(450)。盡管示出了兩個(gè)物理服務(wù)器,但是可以存在更多或更少的物理服務(wù)器。例如,可能存在高達(dá)邏輯服務(wù)器數(shù)目的物理服務(wù)器。出于下面示例的目的,假定已經(jīng)向資源分配了邏輯序列{S4,S1,S2,S3, S5, S6, S8, S7, S9, S10}。 在步驟1,請(qǐng)求者410請(qǐng)求在服務(wù)器R2上被接收的資源。在步驟2,R2查詢R2資源管理器以獲得處理該資源的服務(wù)器。在步驟3,R2資源管理器返回服務(wù)器I是當(dāng)前擁有該資源的服務(wù)器。由于Rl和R2都處于相同群集中,因此服務(wù)器R2在步驟4向請(qǐng)求者發(fā)送重定向。請(qǐng)求者在步驟5向服務(wù)器Rl請(qǐng)求該資源。服務(wù)器Rl查詢Rl資源管理器以確定處理該資源的服務(wù)器。在這種情況下,服務(wù)器Rl處理該資源,并且因此Rl資源管理器在步驟7返回服務(wù)器Rl處理該資源。在步驟8,服務(wù)器I將所請(qǐng)求的資源返回給請(qǐng)求者。圖5示出了用于請(qǐng)求臨時(shí)由后備服務(wù)器處理的資源的說(shuō)明性過(guò)程。如所示那樣,過(guò)程500包括請(qǐng)求者510、服務(wù)器R2 (520)、R2資源管理器530、服務(wù)器Rl (540)和Rl資源管理器(550)。出于下面示例的目的,假定已經(jīng)向資源分配了邏輯序列{S4,SI,S2,S3,S5, S6, S8, S7, S9, S10}。在該示例中,在步驟1,請(qǐng)求者510請(qǐng)求被服務(wù)器R2被接收的資源。在該示例中,服務(wù)器Rl是主要服務(wù)器,但是Rl在該請(qǐng)求時(shí)為停機(jī)的。在步驟2,服務(wù)器R2請(qǐng)求R2資源管理器查找誰(shuí)擁有所請(qǐng)求的資源。由于主要服務(wù)器停機(jī),因此R2資源管理器返回R2擁有該資源。在步驟4,將該資源返回給請(qǐng)求者。在步驟5,在服務(wù)器R2處接收指示Rl恢復(fù)為在線的健康度信息(即心跳)。這導(dǎo)致R2資源管理器在步驟6將資源遷移回Rl,其中Rl是該資源的主要服務(wù)器。在步驟7,當(dāng)資源是用戶時(shí),要求該用戶重新連接到該群集。在步驟8,請(qǐng)求者向服務(wù)器I請(qǐng)求該資源。在步驟9,服務(wù)器Rl請(qǐng)求Rl資源管理器查找誰(shuí)擁有所請(qǐng)求的資源。Rl資源管理器在步驟10返回Rl作為該資源的所有者。在步驟11,將該資源返回給請(qǐng)求者。
以上說(shuō)明、示例和數(shù) 據(jù)提供了對(duì)本發(fā)明的組成部分的制造和使用的全面描述。因?yàn)榭梢栽诓槐畴x本發(fā)明的精神和范圍的情況下做出本發(fā)明的許多實(shí)施方式,所以本發(fā)明落在所附權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種用于確定來(lái)自服務(wù)器群集的服務(wù)器以處理資源請(qǐng)求的方法,包括 在所述服務(wù)器群集內(nèi)的服務(wù)器上接收針對(duì)資源的請(qǐng)求; 在接收針對(duì)所述資源的請(qǐng)求的服務(wù)器上執(zhí)行分布式算法以確定處理所述資源的服務(wù)器; 其中當(dāng)所述群集內(nèi)的其他服務(wù)器之一接收到針對(duì)所述資源的請(qǐng)求時(shí),還在所述其他服務(wù)器中的每個(gè)上執(zhí)行所述分布式算法,其中所述分布式算法使用邏輯服務(wù)器的列表、以及所述邏輯服務(wù)器到所述群集內(nèi)的活動(dòng)的服務(wù)器的映射; 當(dāng)所述資源未被所述服務(wù)器處理時(shí),將所述請(qǐng)求轉(zhuǎn)發(fā)給所確定的服務(wù)器;以及 當(dāng)接收所述請(qǐng)求的服務(wù)器處理所述資源時(shí),響應(yīng)針對(duì)所述資源的請(qǐng)求。
2.如權(quán)利要求I所述的方法,其特征在于,還包括將資源分配給邏輯服務(wù)器的列表,所述列表指示用于處理所述資源的優(yōu)選服務(wù)器以及在優(yōu)選服務(wù)器不可用時(shí)處理所述資源的另一預(yù)定的邏輯服務(wù)器。
3.如權(quán)利要求I所述的方法,其特征在于,所述群集內(nèi)的邏輯服務(wù)器的數(shù)目是固定的數(shù)目,并且其中所述群集內(nèi)的服務(wù)器的數(shù)目小于或等于邏輯服務(wù)器的數(shù)目。
4.如權(quán)利要求I所述的方法,其特征在于,周期性地更新所述邏輯服務(wù)器到所述群集內(nèi)的服務(wù)器的映射。
5.如權(quán)利要求I所述的方法,其特征在于,所述服務(wù)器中的每個(gè)都周期性地彼此交換健康度信息。
6.如權(quán)利要求4所述的方法,其特征在于,基于所述群集內(nèi)的服務(wù)器的健康度來(lái)更新所述映射。
7.如權(quán)利要求I所述的方法,其特征在于,還包括確定服務(wù)器何時(shí)被添加到所述群集,并且響應(yīng)于所述服務(wù)器被添加,所述群集內(nèi)的每個(gè)服務(wù)器都重新評(píng)估其所分配的資源。
8.如權(quán)利要求I所述的方法,其特征在于,還包括確定服務(wù)器何時(shí)被從所述群集移除,并且響應(yīng)于所述服務(wù)器被移除,基于邏輯服務(wù)器的列表把被分配給被所移除的服務(wù)器的資源分配給所述群集內(nèi)的其他服務(wù)器。
9.如權(quán)利要求I所述的方法,其特征在于,使用分布式散列表將所述資源均勻分發(fā)給所述服務(wù)器。
10.一種具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令用于確定來(lái)自服務(wù)器群集的服務(wù)器以處理資源請(qǐng)求的方法,包括 在所述群集內(nèi)的服務(wù)器處接收針對(duì)資源的請(qǐng)求; 在所述服務(wù)器上執(zhí)行分布式算法以確定處理所述資源的服務(wù)器,其中所述分布式算法響應(yīng)于針對(duì)所述資源的另一請(qǐng)求還在所述群集內(nèi)的其他服務(wù)器中的每個(gè)上執(zhí)行;其中所述分布式算法使用與所述資源相關(guān)聯(lián)的唯一標(biāo)識(shí)符、邏輯服務(wù)器的列表、以及所述邏輯服務(wù)器到所述群集內(nèi)的活動(dòng)的服務(wù)器的映射;其中向所述資源分配序列,所述序列指示所述群集內(nèi)的服務(wù)器間處理所述請(qǐng)求的優(yōu)先級(jí); 當(dāng)所述資源未被所述服務(wù)器處理時(shí),將所述請(qǐng)求轉(zhuǎn)發(fā)給所確定的服務(wù)器;以及 當(dāng)接收所述請(qǐng)求的服務(wù)器擁有所述資源時(shí),響應(yīng)針對(duì)所述資源的請(qǐng)求。
11.如權(quán)利要求10所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述群集內(nèi)的邏輯服務(wù)器的數(shù)目是固定的數(shù)目,并且其中所述群集內(nèi)的服務(wù)器的數(shù)目在運(yùn)行時(shí)操作期間小于或等于邏輯服務(wù)器的數(shù)目,并且其中在運(yùn)行時(shí)期間周期性地更新所述邏輯服務(wù)器到所述群集內(nèi)的服務(wù)器的映射。
12.如權(quán)利要求10所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述服務(wù)器中的每個(gè)都周期性地彼此交換健康度信息以確定服務(wù)器何時(shí)被從所述群集中移除以及服務(wù)器何時(shí)被添加到所述群集。
13.如權(quán)利要求10所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,由所述服務(wù)器處理的資源是VoIP通信系統(tǒng)內(nèi)的用戶。
14.一種用于確定來(lái)自服務(wù)器群集的服務(wù)器以處理資源請(qǐng)求的方法,包括 被配置為連接至所述IP網(wǎng)絡(luò)的網(wǎng)絡(luò)連接; 處理器和計(jì)算機(jī)可讀介質(zhì); 存儲(chǔ)在所述計(jì)算機(jī)可讀介質(zhì)上并在所述處理器上執(zhí)行的操作環(huán)境;以及 在所述操作環(huán)境的控制下操作的資源管理器,所述資源管理器用于 接收針對(duì)資源的請(qǐng)求; 執(zhí)行分布式算法以確定所述群集內(nèi)的處理所述資源的服務(wù)器,其中所述分布式算法響應(yīng)于針對(duì)所述資源的另一請(qǐng)求還在所述群集內(nèi)的其他服務(wù)器中的每個(gè)上執(zhí)行;其中所述分布式算法使用與所述資源相關(guān)聯(lián)的唯一標(biāo)識(shí)符、邏輯服務(wù)器的列表、以及所述邏輯服務(wù)器到所述群集內(nèi)的活動(dòng)的服務(wù)器的映射;其中向所述資源分配序列,所述序列指示所述群集內(nèi)的服務(wù)器間處理所述請(qǐng)求的優(yōu)先級(jí); 當(dāng)所述資源未被接收所述請(qǐng)求的服務(wù)器處理時(shí),將所述請(qǐng)求轉(zhuǎn)發(fā)給所確定的服務(wù)器;以及 當(dāng)接收所述請(qǐng)求的服務(wù)器擁有所述資源時(shí),響應(yīng)針對(duì)所述資源的請(qǐng)求。
15.如權(quán)利要求14所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述群集內(nèi)的邏輯服務(wù)器的數(shù)目是在運(yùn)行時(shí)期間不改變的固定數(shù)目,并且其中所述群集內(nèi)的服務(wù)器的數(shù)目在運(yùn)行時(shí)期間小于或等于邏輯服務(wù)器的數(shù)目,并且其中在運(yùn)行時(shí)期間周期性地更新所述邏輯服務(wù)器到所述群集內(nèi)的服務(wù)器的映射。
全文摘要
使用分布式資源算法在服務(wù)器上對(duì)資源進(jìn)行定位,所述分布式資源算法在服務(wù)器群集內(nèi)的每個(gè)服務(wù)器上執(zhí)行。在該群集中的服務(wù)器處接收針對(duì)資源的請(qǐng)求。該服務(wù)器執(zhí)行分布式資源算法來(lái)確定擁有所請(qǐng)求資源的服務(wù)器。分布式資源算法自動(dòng)地適應(yīng)于在該群集內(nèi)添加或移除服務(wù)器,并且旨在將資源在該群集內(nèi)的可用服務(wù)器間均勻分布。
文檔編號(hào)H04L12/24GK102668453SQ201080058673
公開(kāi)日2012年9月12日 申請(qǐng)日期2010年11月24日 優(yōu)先權(quán)日2009年12月22日
發(fā)明者K·阿南塔納拉亞南, S·D·考克斯, S·納拉亞南, V·艾戴爾曼 申請(qǐng)人:微軟公司