專利名稱:同步負(fù)載平衡器組件間的狀態(tài)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及負(fù)載平衡,特別是同步負(fù)載平衡器組件間的狀態(tài)。
背景技術(shù):
I.背景和相關(guān)技術(shù)計(jì)算機(jī)系統(tǒng)和相關(guān)技術(shù)影響社會的許多方面。的確,計(jì)算機(jī)系統(tǒng)處理信息的能力已轉(zhuǎn)變了人們生活和工作的方式。計(jì)算機(jī)系統(tǒng)現(xiàn)在通常執(zhí)行在計(jì)算機(jī)系統(tǒng)出現(xiàn)以前手動執(zhí) 行的許多任務(wù)(例如,文字處理、日程安排和會計(jì)等)。最近,計(jì)算機(jī)系統(tǒng)彼此耦合并耦合到其他電子設(shè)備以形成計(jì)算機(jī)系統(tǒng)和其他電子設(shè)備可以在其上傳輸電子數(shù)據(jù)的有線和無線計(jì)算機(jī)網(wǎng)絡(luò)。因此,許多計(jì)算任務(wù)的執(zhí)行跨多個不同的計(jì)算機(jī)系統(tǒng)和/或多個不同的計(jì)算環(huán)境分布。在分布式計(jì)算系統(tǒng)中,分布式負(fù)載平衡器經(jīng)常被用于跨許多計(jì)算機(jī)系統(tǒng)共享處理負(fù)載。例如,可以使用多個負(fù)載平衡器來接收定向到多個處理端點(diǎn)的外部通信。每個負(fù)載平衡器具有某種機(jī)制來確保來自同一源點(diǎn)的所有外部通信都定向到同一處理端點(diǎn)。為了使得負(fù)載平衡器能作出將外部通信定向到哪里(例如定向到哪個處理端點(diǎn))的準(zhǔn)確決策,負(fù)載平衡器在彼此之間共享狀態(tài)。例如,在一個負(fù)載平衡器處作出的對指定的源的通信的決策可以跨其它負(fù)載平衡器來同歩?;诮?jīng)同步的狀態(tài),任何負(fù)載平衡器隨后可以作出有關(guān)從指定的源發(fā)送通信給同一處理端點(diǎn)的準(zhǔn)確的決策。不幸地是,為了維護(hù)在多個負(fù)載平衡器間的經(jīng)同步的狀態(tài),通常需要在多個負(fù)載平衡器之間交換相當(dāng)大的數(shù)據(jù)量。因此,同步多個負(fù)載平衡器間的狀態(tài)成為瓶頸,并且限制了負(fù)載平衡器的可伸縮性。
發(fā)明內(nèi)容
本發(fā)明涉及用于同步負(fù)載平衡器組件間的狀態(tài)的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。在一些實(shí)施例中,負(fù)載平衡器從路由器接收分組。分組包含標(biāo)識廣域網(wǎng)上的源的源電子地址信息以及包括虛擬電子地址的目的地電子地址信息。負(fù)載平衡器使用一算法來從所述源電子地址信息以及目的地電子地址信息中生成現(xiàn)有數(shù)據(jù)流的數(shù)據(jù)流標(biāo)識符。負(fù)載平衡器確定該分組是用于現(xiàn)有的數(shù)據(jù)流的。負(fù)載平衡器確定該負(fù)載平衡器缺少足夠的信息來從多個目的地主機(jī)中標(biāo)識出對應(yīng)于該現(xiàn)有數(shù)據(jù)流的目的地主機(jī)。這包括負(fù)載平衡器沒有高速緩存將現(xiàn)有數(shù)據(jù)流映射到多個目的地主機(jī)中的ー個目的地主機(jī)的狀態(tài)。響應(yīng)于所述確定,負(fù)載平衡器標(biāo)識被指定作為現(xiàn)有數(shù)據(jù)流的所有者的所有者負(fù)載平衡器。還響應(yīng)于所述確定,負(fù)載平衡器向所有者負(fù)載平衡器發(fā)送對數(shù)據(jù)流狀態(tài)信息的請求。負(fù)載平衡器從所有者負(fù)載平衡器接收狀態(tài)信息。該狀態(tài)信息標(biāo)識了對應(yīng)于現(xiàn)有數(shù)據(jù)流的目的地主機(jī)。負(fù)載平衡器對所接收的狀態(tài)信息進(jìn)行高速緩存。在該數(shù)據(jù)流中的后續(xù)分組上,負(fù)載平衡器向所有者負(fù)載平衡器發(fā)送回消息以指示數(shù)據(jù)流的繼續(xù)。僅需要在每個空閑的超時間隔發(fā)送一次該繼續(xù)消息??臻e的超時間隔確定即使在缺少任何分組的情況下,數(shù)據(jù)流能夠保持其到同一目的地主機(jī)的映射多少時間。負(fù)載平衡器確定該接收的分組是用于現(xiàn)有的數(shù)據(jù)流的。負(fù)載平衡器確定該負(fù)載平衡器不是現(xiàn)有數(shù)據(jù)流的所有者。負(fù)載平衡器確定該負(fù)載平衡器已經(jīng)高速緩存了現(xiàn)有數(shù)據(jù)流的狀態(tài)。高速緩存的狀態(tài)將現(xiàn)有數(shù)據(jù)流映射到多個目的地主機(jī)中的ー個目的地主機(jī)。負(fù)載平衡器將所接收的分組發(fā)送到被映射至現(xiàn)有數(shù)據(jù)流的目的地主機(jī)。負(fù)載平衡器確定它是否需要將數(shù)據(jù)流繼續(xù)消息發(fā)送給所有者負(fù)載平衡器。負(fù)載平衡器將高速緩存的狀態(tài)發(fā)送給所有者負(fù)載平衡器。提供本發(fā)明內(nèi)容以便以簡化的形式介紹將在以下的具體實(shí)施方式
中進(jìn)ー步描述的ー些概念。本發(fā)明內(nèi)容并非g在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。 本發(fā)明的附加特征和優(yōu)點(diǎn)將在以下描述中敘述,且其一部分根據(jù)本說明書將是顯而易見的,或可通過對本發(fā)明的實(shí)踐來獲知。本發(fā)明的特征和優(yōu)點(diǎn)可通過在所附權(quán)利要求書中特別指出的工具和組合來實(shí)現(xiàn)和獲得。本發(fā)明的這些和其他特征將通過以下描述和所附權(quán)利要求書變得更加顯而易見,或可通過對下文中所述的本發(fā)明的實(shí)踐來領(lǐng)會。
為了描述可獲得本發(fā)明的上述和其它優(yōu)點(diǎn)和特征的方式,將通過參考附圖中示出的本發(fā)明的具體實(shí)施例來呈現(xiàn)以上簡要描述的本發(fā)明的更具體描述??梢岳斫?,這些附圖僅描述本發(fā)明的典型實(shí)施例,從而不被認(rèn)為是對其范圍的限制,本發(fā)明將通過使用附圖用附加特征和細(xì)節(jié)來描述和說明,在附圖中圖I示出便于在負(fù)載平衡器組件之間同步狀態(tài)的示例計(jì)算機(jī)體系結(jié)構(gòu)。圖2示出了用于在負(fù)載平衡器之間共享狀態(tài)的示例方法的流程圖。圖3示出了用于在負(fù)載平衡器之間共享狀態(tài)的示例方法的流程圖。圖4A和4B說明了用于在多路復(fù)用器之間共享狀態(tài)的示例計(jì)算機(jī)體系結(jié)構(gòu)。圖5A和5B說明了用于在多路復(fù)用器之間共享狀態(tài)的示例計(jì)算機(jī)體系結(jié)構(gòu)。圖6A、6B、6C和6D說明了用于維護(hù)數(shù)據(jù)流到目的地主機(jī)的映射的示例計(jì)算機(jī)體系結(jié)構(gòu)。圖7A和7B說明了用于維護(hù)數(shù)據(jù)流到所有者多路復(fù)用器的映射的示例計(jì)算機(jī)體系結(jié)構(gòu)。
具體實(shí)施例方式本發(fā)明涉及用于同步負(fù)載平衡器組件間的狀態(tài)的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。在一些實(shí)施例中,負(fù)載平衡器從路由器接收分組。分組包含標(biāo)識廣域網(wǎng)上的源的源電子地址信息以及包括虛擬電子地址的目的地電子地址信息。負(fù)載平衡器使用一算法來從所述源電子地址信息以及目的地電子地址信息中生成現(xiàn)有數(shù)據(jù)流的數(shù)據(jù)流標(biāo)識符。負(fù)載平衡器確定該分組是用于現(xiàn)有的數(shù)據(jù)流的。負(fù)載平衡器確定該負(fù)載平衡器缺少足夠的信息來從多個目的地主機(jī)中標(biāo)識出對應(yīng)于該現(xiàn)有數(shù)據(jù)流的目的地主機(jī)。這包括負(fù)載平衡器沒有高速緩存將現(xiàn)有數(shù)據(jù)流映射到多個目的地主機(jī)中的ー個目的地主機(jī)的狀態(tài)。響應(yīng)于所述確定,負(fù)載平衡器標(biāo)識被指定作為現(xiàn)有數(shù)據(jù)流的所有者的所有者負(fù)載平衡器。還響應(yīng)于所述確定,負(fù)載平衡器向所有者負(fù)載平衡器發(fā)送對數(shù)據(jù)流狀態(tài)信息的請求。負(fù)載平衡器從所有者負(fù)載平衡器接收狀態(tài)信息。該狀態(tài)信息標(biāo)識了對應(yīng)于現(xiàn)有數(shù)據(jù)流的目的地主機(jī)。負(fù)載平衡器對所接收的狀態(tài)信息進(jìn)行高速緩存。在該數(shù)據(jù)流中的后續(xù)分組上,負(fù)載平衡器向所有者負(fù)載平衡器發(fā)送回消息以指示數(shù)據(jù)流的繼續(xù)。僅需要在每個空閑的超時間隔發(fā)送一次該繼續(xù)消息??臻e的超時間隔確定即使在缺少任何分組的情況下,數(shù)據(jù)流能夠保持其到同一目的地主機(jī)的映射多少時間。負(fù)載平衡器確定該接收的分組是用于現(xiàn)有的數(shù)據(jù)流的。負(fù)載平衡器確定該負(fù)載平衡器不是現(xiàn)有數(shù)據(jù)流的所有者的。負(fù)載平衡器確定該負(fù)載平衡器已經(jīng)高速緩存了現(xiàn)有數(shù)據(jù)流的狀態(tài)。高速緩存的狀態(tài)將現(xiàn)有數(shù)據(jù)流映射到多個目的地主機(jī)中的ー個目的地主機(jī)。負(fù)載平衡器將所接收的包發(fā)送到被映射至現(xiàn)有數(shù)據(jù)流的目的地主機(jī)。負(fù)載平衡器確定它是否 需要將數(shù)據(jù)流繼續(xù)消息發(fā)送給所有者負(fù)載平衡器。負(fù)載平衡器將高速緩存的狀態(tài)發(fā)送給所有者負(fù)載平衡器。本發(fā)明的各實(shí)施例可包括或利用專用或通用計(jì)算機(jī),該專用或通用計(jì)算機(jī)包括諸如例如一個或多個處理器和系統(tǒng)存儲器的計(jì)算機(jī)硬件,如以下更詳細(xì)討論的。本發(fā)明范圍內(nèi)的各實(shí)施例還包括用于攜帶或存儲計(jì)算機(jī)可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的物理介質(zhì)及其他計(jì)算機(jī)可讀介質(zhì)。這些計(jì)算機(jī)可讀介質(zhì)可以是通用或?qū)S糜?jì)算機(jī)系統(tǒng)可訪問的任何可用介質(zhì)。存儲計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)是物理存儲介質(zhì)。攜帯計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)是傳輸介質(zhì)。由此,作為示例而非限制,本發(fā)明的各實(shí)施例可包括至少兩種完全不同類型的計(jì)算機(jī)可讀介質(zhì)計(jì)算機(jī)存儲介質(zhì)(設(shè)備)和傳輸介質(zhì)。計(jì)算機(jī)存儲介質(zhì)(設(shè)備)包括RAM、ROM、EEPROM、CD-ROM、DVD或其他光盤存儲、磁盤存儲或其他磁存儲設(shè)備、或可用于存儲計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置的且可由通用或?qū)S糜?jì)算機(jī)訪問的任何其他介質(zhì)?!熬W(wǎng)絡(luò)”被定義為允許在計(jì)算機(jī)系統(tǒng)和/或模塊和/或其他電子設(shè)備之間傳輸電子數(shù)據(jù)的ー個或多個數(shù)據(jù)鏈路。當(dāng)信息通過網(wǎng)絡(luò)或另一通信連接(硬連線、無線、或者硬連線或無線的組合)傳送到或提供給計(jì)算機(jī)吋,該計(jì)算機(jī)將該連接適當(dāng)?shù)匾暈閭鬏斀橘|(zhì)。傳輸介質(zhì)可包括可用于攜帶計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且通用或?qū)S糜?jì)算機(jī)可訪問的網(wǎng)絡(luò)和/或數(shù)據(jù)鏈路。上述的組合也應(yīng)當(dāng)被包括在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。此外,在到達(dá)各種計(jì)算機(jī)系統(tǒng)組件之后,計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的程序代碼裝置可從傳輸介質(zhì)自動傳輸?shù)接?jì)算機(jī)存儲介質(zhì)(設(shè)備)(或反之亦然)。例如,通過網(wǎng)絡(luò)或數(shù)據(jù)鏈接接收到的計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)可被緩存在網(wǎng)絡(luò)接ロ模塊(例如,“NIC”)內(nèi)的RAM中,然后最終被傳輸?shù)接?jì)算機(jī)系統(tǒng)RAM和/或計(jì)算機(jī)系統(tǒng)處的較不易失性的計(jì)算機(jī)存儲介質(zhì)(設(shè)備)。因而,應(yīng)當(dāng)理解,計(jì)算機(jī)存儲介質(zhì)(設(shè)備)可被包括在還利用(甚至主要利用)傳輸介質(zhì)的計(jì)算機(jī)系統(tǒng)組件中。計(jì)算機(jī)可執(zhí)行指令例如包括,當(dāng)在處理器處執(zhí)行時使通用計(jì)算機(jī)、專用計(jì)算機(jī)、或?qū)S锰幚碓O(shè)備執(zhí)行某一功能或某組功能的指令和數(shù)據(jù)。計(jì)算機(jī)可執(zhí)行指令可以是例如ニ進(jìn)制代碼、諸如匯編語言之類的中間格式指令、或甚至源代碼。雖然用結(jié)構(gòu)特征和/或方法動作專用的語言描述了本主題,但是應(yīng)當(dāng)理解,所附權(quán)利要求書中定義的主題不必限于上述特征或動作。相反,所述特征和動作是作為實(shí)現(xiàn)權(quán)利要求的示例形式而公開的。本領(lǐng)域的技術(shù)人員將理解,本發(fā)明可在具有許多類型的計(jì)算機(jī)系統(tǒng)配置的網(wǎng)絡(luò)計(jì)算環(huán)境中實(shí)踐,這些計(jì)算機(jī)系統(tǒng)配置包括個人計(jì)算機(jī)、臺式計(jì)算機(jī)、膝上型計(jì)算機(jī)、消息處理器、手持式設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、移動電話、PDA、尋呼機(jī)、路由器、交換機(jī)等。本發(fā)明也可在其中通過網(wǎng)絡(luò)鏈接(或者通過硬連線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路,或者通過硬連線和無線數(shù)據(jù)鏈路的組合)的本地和遠(yuǎn)程計(jì)算機(jī)系統(tǒng)兩者都執(zhí)行任務(wù)的分布式系統(tǒng)環(huán)境中實(shí)施。在分布式系統(tǒng)環(huán)境中,程序模塊可位于本地和遠(yuǎn)程存儲器存儲設(shè)備兩者中。圖I示出便于在負(fù)載平衡器組件之間同步狀態(tài)的示例計(jì)算機(jī)體系結(jié)構(gòu)100。參照圖1,計(jì)算機(jī)體系結(jié)構(gòu)100包括路由器102、負(fù)載平衡管理器103、多路復(fù)用器106以及目的地主機(jī)107。所描繪的計(jì)算機(jī)系統(tǒng)中的每ー個通過諸如例如局域網(wǎng)(“LAN”)和/或廣域
網(wǎng)(“WAN”)的網(wǎng)絡(luò)(或作為網(wǎng)絡(luò)的一部分)彼此連接。路由器102被進(jìn)ー步連接到網(wǎng)絡(luò)101。網(wǎng)絡(luò)101可以是其它的WAN,例如因特網(wǎng)。因此,所描繪的組件中的每ー個以及任何其他連接的計(jì)算機(jī)系統(tǒng)及其組件都可以創(chuàng)建消息相關(guān)數(shù)據(jù)并通過所描述的網(wǎng)絡(luò)交換與消息相關(guān)數(shù)據(jù)(例如,網(wǎng)際協(xié)議(“IP”)數(shù)據(jù)報(bào)和利用IP數(shù)據(jù)報(bào)的其他更高層協(xié)議,諸如傳輸控制協(xié)議(“TCP”)、超文本傳輸協(xié)議(“HTTP”)、簡單郵件傳輸協(xié)議(“SMTP”)等)。一般地,路由器102在網(wǎng)絡(luò)101和計(jì)算機(jī)體系結(jié)構(gòu)100的其它組件之間進(jìn)行對接以在網(wǎng)絡(luò)101和計(jì)算機(jī)體系結(jié)構(gòu)100的其它組件之間適當(dāng)?shù)芈酚煞纸M。路由器102可以被配置為接收來自網(wǎng)絡(luò)101的消息并將這些消息轉(zhuǎn)發(fā)到計(jì)算機(jī)體系結(jié)構(gòu)100的合適的組件。例如,路由器102可以被配置為在多路復(fù)用器106處將虛擬因特網(wǎng)地址(“VIP”)的IP話務(wù)轉(zhuǎn)發(fā)給物理接ロ的IP地址。路由器102可以支持路由到基本上任何數(shù)量(例如4、8、16等)的IP地址的等價多徑(“ECMP”)。因此,可以將多個多路復(fù)用器106配置為活動的多路復(fù)用器。在其它實(shí)施例中,(例如當(dāng)不支持ECMP吋),可以將ー個多路復(fù)用器配置為活動的多路復(fù)用器,并且零個或更多的其它多路復(fù)用器被配置為待機(jī)多路復(fù)用器。在其它實(shí)施例中,使用域名服務(wù)(“DNS”)循環(huán)方法。將ー個或多個VIP指派給多個多路復(fù)用器106,并在所述多個多路復(fù)用器106之間共享。域名服務(wù)(“DNS”)的名字被注冊以解析ー個或多個VIP。如果多路復(fù)用器106失敗,則其擁有的VIP被故障轉(zhuǎn)移到其它多路復(fù)用器106。在另外的實(shí)施例中,在網(wǎng)絡(luò)接ロ卡上為每個多路復(fù)用器配置VIP。所述多路復(fù)用器中的ー個(例如主節(jié)點(diǎn))被設(shè)定為響應(yīng)于對VIP的地址解析協(xié)議(“ARP”)請求。這樣,路由器102可以將VIP的任何分組發(fā)送給主節(jié)點(diǎn)。隨后,主節(jié)點(diǎn)可以基于當(dāng)前狀態(tài)和/或負(fù)載平衡器規(guī)則執(zhí)行層2轉(zhuǎn)發(fā)。使用“主節(jié)點(diǎn)”可以減輕溢流(flooding)并且比在層3轉(zhuǎn)發(fā)要容易許多。如所述,多路復(fù)用器106包括多個多路復(fù)用器,包括多路復(fù)用器106A、106B和106C。目的地主機(jī)107包括多個目的地主機(jī),包括目的地主機(jī)107A、107B和107C。一般而言,每個多路復(fù)用器106被配置為接收分組,標(biāo)識該分組的適合的目的地主機(jī),并將該分組轉(zhuǎn)發(fā)給該適合的目的地主機(jī)。在一些實(shí)施例中,根據(jù)下述一個或多個項(xiàng)標(biāo)識分組的適合的目的地主機(jī)107 :分組的內(nèi)容、在接收多路復(fù)用器處高速緩存的狀態(tài)、在其它多路復(fù)用器處高速緩存的狀態(tài)、該分組是用于現(xiàn)有的數(shù)據(jù)流的還是新數(shù)據(jù)流的、以及目的地主機(jī)107的配置。每個多路復(fù)用器包括ID生成器、所有者檢測器以及狀態(tài)管理器。例如,多路復(fù)用器106A、106B和106C分別包括ID生成器141A、141B和141C,所有者檢測器142A、142B和142C,以及狀態(tài)管理器143AU43B和143C。每個ID生成器被配置為基于分組的內(nèi)容生成用于分組的數(shù)據(jù)流ID。在一些實(shí)施例中,(源IP :端ロ、VIP :端ロ、IP協(xié)議)的5元組被用于表示和/或生成數(shù)據(jù)流ID。在其它實(shí)施例中,使用該5元組的子集??梢詫⑿聰?shù)據(jù)流ID映射到由例如(目的地主機(jī)IP :端ロ )所標(biāo)識的目的地主機(jī)107。對應(yīng)的狀態(tài)管理器可以高速緩存映射數(shù)據(jù)流ID的狀態(tài)和(目的地主機(jī)IP :端ロ)。這樣,當(dāng)接收到具有相同流ID的其它分組時,多路復(fù)用器可以參考高速緩存的狀態(tài)以便為每個其它分組標(biāo)識適合的目的地主機(jī)107。在一些實(shí)施例中,數(shù)據(jù)流ID空間的不同部分由不同的多路復(fù)用器“擁有”。在每個 多路復(fù)用器處的所有者檢測器被配置為確定數(shù)據(jù)流ID的所有者多路復(fù)用器。隨后,所有者多路檢測器可以將數(shù)據(jù)流ID作為輸入來接收,并將所有者多路復(fù)用器的IP地址作為輸出來返回。這樣,每個多路復(fù)用器可以針對每個數(shù)據(jù)流ID將狀態(tài)發(fā)送到所有者多路復(fù)用器和/或從所有者多路復(fù)用器請求狀態(tài)。例如,當(dāng)多路復(fù)用器標(biāo)識了數(shù)據(jù)流ID的適合的目的地主機(jī)時,該多路復(fù)用器可以(除了也高速緩存之外)將適合的目的地主機(jī)轉(zhuǎn)發(fā)給該數(shù)據(jù)流ID的所有者多路復(fù)用器。另ー方面,當(dāng)多路復(fù)用器缺少足夠的信息來標(biāo)識數(shù)據(jù)流ID的適合的目的地主機(jī)吋,該多路復(fù)用器可以查詢所有者多路復(fù)用器以獲得適合的目的地主機(jī)。在一些實(shí)施例中,當(dāng)多路復(fù)用器缺少足夠的信息來標(biāo)識對應(yīng)于數(shù)據(jù)流ID的分組的適合的目的地主機(jī)吋,該多路復(fù)用器將分組發(fā)送給該數(shù)據(jù)流ID的所有者多路復(fù)用器。響應(yīng)于接收所述分組,所有者多路復(fù)用器確定該數(shù)據(jù)流ID的適合的目的地主機(jī)。而且,所有者多路復(fù)用器將高速緩存的狀態(tài)(要么是在所有者多路復(fù)用器處生成的,要么是從其它多路復(fù)用器接收的)發(fā)送給該多路復(fù)用器,所述狀態(tài)將數(shù)據(jù)流ID映射到適合的目的地主機(jī)。在一些實(shí)施例中,當(dāng)多路復(fù)用器缺少足夠的信息來標(biāo)識數(shù)據(jù)流ID的適合的目的地主機(jī)時,該多路復(fù)用器將對高速緩存的狀態(tài)的明確請求發(fā)送給該數(shù)據(jù)流ID的所有者多路復(fù)用器。響應(yīng)于接收到明確請求,所有者多路復(fù)用器將高速緩存的狀態(tài)(要么是在所有者多路復(fù)用器處生成的,要么是從其它多路復(fù)用器接收的)發(fā)送給該多路復(fù)用器,所述狀態(tài)將數(shù)據(jù)流ID映射到適合的目的地主機(jī)。隨后,該多路復(fù)用器將分組發(fā)送給適合的目的地主機(jī)。一般,負(fù)載平衡管理器103被配置為在目的地主機(jī)107的安排中監(jiān)視過渡(例如當(dāng)正在添加新的目的地主機(jī)時)過渡。目的地?cái)?shù)組生成器104可以不時地(例如使用散列函數(shù))來用制定將數(shù)據(jù)流ID映射到目的地主機(jī)的數(shù)組。負(fù)載平衡管理器103可以維護(hù)數(shù)組的兩個版本數(shù)組的當(dāng)前版本(例如新數(shù)組109)以及數(shù)組的前ー個版本(例如舊數(shù)組108)。在數(shù)組內(nèi)的位置可以對應(yīng)于數(shù)據(jù)流ID。例如,數(shù)組位置I可以對應(yīng)于數(shù)據(jù)流ID I等。這樣,如在數(shù)組108和109中所示,目的地主機(jī)107B是數(shù)據(jù)流IDl的適合的目的地主機(jī)。負(fù)載平衡管理器103可以將數(shù)組的兩個版本發(fā)送給多路復(fù)用器106。當(dāng)目的地主機(jī)107的安排處于穩(wěn)定狀態(tài)中時,則數(shù)組的當(dāng)前和前一版本內(nèi)的映射匹配。這樣,在穩(wěn)定狀態(tài),多路復(fù)用器106可以參考該映射來確定將指定數(shù)據(jù)流ID的分組發(fā)送到哪里(即使當(dāng)該多路復(fù)用器缺少高速緩存的狀態(tài)時)。另ー方面,當(dāng)目的地主機(jī)107的安排在過渡狀態(tài)中時(例如當(dāng)正在添加新的目的地主機(jī)107),則數(shù)組的當(dāng)前和前一版本內(nèi)的映射不相同。例如,當(dāng)添加新的目的地主機(jī)107時,數(shù)據(jù)流ID空間可以跨更多的目的地主機(jī)107散布開以減少各個目的地主機(jī)107上的負(fù)載。例如,差別111指示了先前對應(yīng)于目的地主機(jī)107D的數(shù)據(jù)流ID空間的一部分(例如數(shù)據(jù)流ID3)現(xiàn)在對應(yīng)于目的地主機(jī)107C。為了增加現(xiàn)有數(shù)據(jù)流的分組繼續(xù)到同一目的地主機(jī)的可能性,多路復(fù)用器106可以當(dāng)目的地主機(jī)107的安排處于過渡中時參考高速緩存的狀態(tài)(要么本地地或要么從所有者多路復(fù)用器查詢出)。圖2示出了用于在負(fù)載平衡器之間共享狀態(tài)的示例方法200的流程圖。方法200將參考計(jì)算機(jī)體系結(jié)構(gòu)100的組件和數(shù)據(jù)來描述。 方法200包括負(fù)載平衡器從路由器接收分組的動作,所述分組包含了標(biāo)識在廣域網(wǎng)上的源的源電子地址信息以及包括虛擬電子地址的目的地電子地址信息(動作201)。例如,多路復(fù)用器106A可以從路由器102接收分組121。分組121包含了標(biāo)識網(wǎng)絡(luò)101上的源的源(例如IP)地址122。分組121還包含了目的地地址123。目的地地址123可以是用于聯(lián)系目的地主機(jī)107的虛擬IP地址。方法200包括負(fù)載平衡器確定該分組是用于現(xiàn)有的數(shù)據(jù)流的動作(動作202)。例如,多路復(fù)用器106可以確定分組121用于現(xiàn)有的數(shù)據(jù)流。在數(shù)據(jù)流中的第一分組(例如傳輸控制協(xié)議TCP分組的SYN分組)可以包含第一分組指示符。數(shù)據(jù)流中的其它分組(例如TCP的非SYN分組)不包含第一分組指示符。這樣,當(dāng)分組不包含第一分組指示符時,多路復(fù)用器可以推斷該分組是用于現(xiàn)有的數(shù)據(jù)流的.多路復(fù)用器106A可以確定分組121不包含第一分組指示符。這樣,多路復(fù)用器106A推斷分組121是用于現(xiàn)有的數(shù)據(jù)流的。方法200包括負(fù)載平衡器使用算法來從源電子地址信息和目的地電子地址信息中生成現(xiàn)有數(shù)據(jù)流的數(shù)據(jù)流標(biāo)識符(動作203)。例如,ID生成器可以使用散列函數(shù)來將源地址122和目的地地址123散列成流ID 144。流ID 144可以表示例如新數(shù)組109的索引位置。例如,流ID 144可以表示新數(shù)組109中的第四個位置。在一些實(shí)施例中,散列算法被用于將源IP地址和VIP散列成數(shù)據(jù)流標(biāo)識符。方法200包括負(fù)載平衡器確定該負(fù)載平衡器缺少足夠的信息來從多個目的地主機(jī)中標(biāo)識出對應(yīng)于該現(xiàn)有數(shù)據(jù)流的目的地主機(jī)的動作(動作204)。例如,多路復(fù)用器106A可以確定該多路復(fù)用器106A缺少足夠的信息來從目的地主機(jī)107中標(biāo)識出對應(yīng)于流ID144的適合的目的地主機(jī)。動作204可以包括負(fù)載平衡器確定該負(fù)載平衡器不具有任何將現(xiàn)有數(shù)據(jù)流映射到多個目的地主機(jī)中的ー個目的地主機(jī)的高速緩存的狀態(tài)的動作(動作205)。例如,狀態(tài)管理器143A可以確定多路復(fù)用器106A不具有任何將流ID 144映射到目的地主機(jī)107之一的高速緩存的狀態(tài)。狀態(tài)管理器143A可以參考狀態(tài)146A (高速緩存的狀態(tài))以檢查流ID 144的目的地主機(jī)映射。動作204可以包括負(fù)載平衡器檢測多個目的地主機(jī)的安排處于過渡中的動作。例如,多路復(fù)用器106A可以檢測在目的地主機(jī)107的安排中的過渡。在一個或多個現(xiàn)有的數(shù)據(jù)流(例如流ID 144)的生命周期期間,目的地主機(jī)107C可以被添加到目的地主機(jī)107。目的地?cái)?shù)組生成器104可以檢測這種改變。作為響應(yīng),目的地?cái)?shù)組生成器104可以生成新的數(shù)組109。多路復(fù)用器106A可以參考舊數(shù)組108和新數(shù)組109。至少如差別111所述,多路復(fù)用器106A檢測該過渡。就是說,數(shù)據(jù)流ID空間的一部分現(xiàn)在被分配給目的地主機(jī)107C。方法200包括響應(yīng)于負(fù)載平衡器缺少足夠信息來標(biāo)識對應(yīng)于現(xiàn)有數(shù)據(jù)流的目的地主機(jī)的判斷,負(fù)載平衡器標(biāo)識ー個被指定為現(xiàn)有數(shù)據(jù)流的所有者的所有者負(fù)載平衡器的動作,所述所有者負(fù)載平衡器是從ー個或多個其它的負(fù)載平衡器中選擇出的(動作206)。例如,多路復(fù)用器106A可以將多路復(fù)用器106B標(biāo)識為流ID 144的所有者。所有者檢測器142A可以接收流ID 144作為輸入,并將多路復(fù)用器106B的IP地址輸出作為流ID 144的所有者。在一些實(shí)施例中,多路復(fù)用器106A使用第二散列算法以將源地址122和目的地地址123散列到第二散列值中。第二散列值表示在所有者數(shù)組中的索引位置(例如如在圖7A 和7B中所述)。所有者數(shù)組將數(shù)據(jù)流映射到對應(yīng)的所有者多路復(fù)用器,當(dāng)檢測到過渡時,所述所有者多路復(fù)用器維護(hù)被映射的數(shù)據(jù)流的狀態(tài)。這樣,多路復(fù)用器106A可以參考在所有者數(shù)組中流ID 144的索引位置以將多路復(fù)用器106B標(biāo)識為流ID 144的所有者。負(fù)載平衡管理器103可以監(jiān)視多路復(fù)用器106,并且當(dāng)將多路復(fù)用器添加多路復(fù)用器106或從多路復(fù)用器106中刪除多路復(fù)用器時調(diào)整數(shù)據(jù)流的主要所有者數(shù)組和后備所有者數(shù)組。負(fù)載平衡管理器103可以分布數(shù)據(jù)流的所有權(quán)以(在可能的程度上)平衡跨多路復(fù)用器106的主要的和后備的所有權(quán)。方法200還包括響應(yīng)于負(fù)載平衡器缺少足夠信息來標(biāo)識對應(yīng)于現(xiàn)有數(shù)據(jù)流的目的地主機(jī)的判斷,負(fù)載平衡器將對數(shù)據(jù)流狀態(tài)信息的請求發(fā)送給所有者負(fù)載平衡器的動作(動作207)。例如,多路復(fù)用器106A可以將分組121發(fā)送給多路復(fù)用器106B?;蛘撸嗦窂?fù)用器106A可以保持分組121并將對流ID 144的數(shù)據(jù)流狀態(tài)信息的明確請求發(fā)送給多路復(fù)用器106B。多路復(fù)用器106B可以從多路復(fù)用器106A接收分組121。一旦接收到分組121,ID生成器141B可以從源地址122和目的地地址123中生成流ID 144。隨后,所有者檢測器142B可以確定多路復(fù)用器106B是流ID 144的所有者。狀態(tài)管理器142B可以參考狀態(tài)146B以訪問狀態(tài)126。狀態(tài)126可以將流ID 144映射到目的地主機(jī)107B。如果沒有找到狀態(tài),多路復(fù)用器106B可以使用當(dāng)前目的地?cái)?shù)組生成新狀態(tài)126。多路復(fù)用器106B可以將分組121發(fā)送給目的地主機(jī)107B。多路復(fù)用器106B可以向多路復(fù)用器106A返回狀態(tài)126。多路復(fù)用器106B還可以將狀態(tài)126發(fā)送給對應(yīng)于該流的后備所有者?;蛘?,多路復(fù)用器106B可以從多路復(fù)用器106A接收對流ID 144的數(shù)據(jù)流狀態(tài)信息的明確請求。所有者檢測器142B可以確定多路復(fù)用器106B是流ID 144的所有者。狀態(tài)管理器142B可以參考狀態(tài)146B以訪問狀態(tài)126。多路復(fù)用器106B可以向多路復(fù)用器106A返回狀態(tài)126。方法200包括負(fù)載平衡器從所有者負(fù)載平衡器接收狀態(tài)信息的動作,所述狀態(tài)信息標(biāo)識了對應(yīng)于現(xiàn)有數(shù)據(jù)流的目的地主機(jī)(動作208)。例如,多路復(fù)用器106A可以從多路復(fù)用器106B接收狀態(tài)126。方法200包括負(fù)載平衡器高速緩存所接收的狀態(tài)信息的動作(動作209)。例如,多路復(fù)用器106A可以在狀態(tài)146A中高速緩存狀態(tài)126。當(dāng)多路復(fù)用器106A響應(yīng)于明確請求接收狀態(tài)126吋,多路復(fù)用器106A隨后可以將分組121發(fā)送給目的地主機(jī)107B。而且,當(dāng)接收到流ID 144的后續(xù)分組(即使多路復(fù)用器106B將分組121發(fā)送給目的地主機(jī)107B)時,多路復(fù)用器106A可以將目的地主機(jī)107B標(biāo)識為后續(xù)分組的適合的目的地主機(jī)。例如,多路復(fù)用器106A可以接收分組132。分組132包含源地址122和目的地地址123。ID生成器141B可以確定該分組132對應(yīng)于流ID 144。狀態(tài)管理器143B可以參考狀態(tài)146A以標(biāo)識目的地主機(jī)107B是流ID 144的適合的目的地主機(jī)。多路復(fù)用器106A隨后可以將分組132發(fā)送給目的地主機(jī)107B。其它多路復(fù)用器也可以接收流ID 144的分組。如果這些其它多路復(fù)用器已經(jīng)高速緩存了流ID 144的狀態(tài)(要么是其自身生成的,要么是從另ー多路復(fù)用器查詢出的),它 們可以將分組發(fā)送到目的地主機(jī)107B上。例如,多路復(fù)用器106C可以接收分組131。分組131包含源地址122和目的地地址123。ID生成器141C可以確定該分組132對應(yīng)于流ID144。狀態(tài)管理器143C可以參考狀態(tài)146C以標(biāo)識目的地主機(jī)107B是流ID 144的適合的目的地主機(jī)。多路復(fù)用器106C隨后可以將分組131發(fā)送給目的地主機(jī)107B。此外,當(dāng)目的地主機(jī)的安排處于過渡中吋,具有現(xiàn)有數(shù)據(jù)流的狀態(tài)的多路復(fù)用器可以將該狀態(tài)發(fā)送給該數(shù)據(jù)流的所有者多路復(fù)用器,所述現(xiàn)有數(shù)據(jù)流在舊的和新的目的地?cái)?shù)組中具有不同的目的地主機(jī)。例如,目的地主機(jī)107C的添加可能引起目的地主機(jī)107中的過渡。一旦檢測到過渡,多路復(fù)用器106C可以具有ー個或多個現(xiàn)有數(shù)據(jù)流的狀態(tài),其中其它多路復(fù)用器,例如多路復(fù)用器106A和/或多路復(fù)用器106B,是這些現(xiàn)有數(shù)據(jù)流的所有者。響應(yīng)于檢測到過渡,多路復(fù)用器106可以將在舊的和新的目的地?cái)?shù)組中具有不同的目的地主機(jī)的現(xiàn)有數(shù)據(jù)流的狀態(tài)發(fā)送給適合的所有者主機(jī)。例如,多路復(fù)用器106C可以將流ID 144的狀態(tài)發(fā)送給多路復(fù)用器106C(未示出)。在過渡期間,適合的所有者多路復(fù)用器可以從其它多路復(fù)用器接收狀態(tài)。例如,多路復(fù)用器106A可以從多路復(fù)用器106C(未示出)接收流ID 144的狀態(tài)。圖3示出了用于在負(fù)載平衡器之間共享狀態(tài)的示例方法300的流程圖。方法300將參考計(jì)算機(jī)體系結(jié)構(gòu)100的組件和數(shù)據(jù)來描述。方法300包括負(fù)載平衡器從ー個或多個其它負(fù)載平衡器中包括的另ー負(fù)載平衡器接收分組的動作,所述分組包含了標(biāo)識在廣域網(wǎng)上的源的源電子地址信息以及包括虛擬電子地址的目的地電子地址信息(動作301)。例如,多路復(fù)用器106B可以從多路復(fù)用器106A接收分組121。方法300包括負(fù)載平衡器確定所接收的分組是用于現(xiàn)有的數(shù)據(jù)流的動作(動作302)。例如,ID生成器144可以確定該分組121對應(yīng)于流ID 144。方法300包括負(fù)載平衡器確定該負(fù)載平衡器是現(xiàn)有的數(shù)據(jù)流的所有者的動作(動作302)。例如,所有者檢測器142B可以確定多路復(fù)用器106B是流ID 144的所有者。方法300包括負(fù)載平衡器確定該負(fù)載平衡器已經(jīng)高速緩存現(xiàn)有的數(shù)據(jù)流的狀態(tài)的動作,高速緩存的狀態(tài)將現(xiàn)有的數(shù)據(jù)流映射到多個目的地主機(jī)中的ー個目的地主機(jī)(動作304)。例如,狀態(tài)管理器142B可以參考狀態(tài)146B以訪問狀態(tài)126。狀態(tài)126可以指示流ID 144對應(yīng)于目的地主機(jī)107B?;蛘撸瑺顟B(tài)管理器142B可以生成狀態(tài)126。方法300包括負(fù)載平衡器將所接收的分組發(fā)送給映射到現(xiàn)有數(shù)據(jù)流的目的地主機(jī)的動作(動作305)。例如,多路復(fù)用器106B可以將分組121發(fā)送給目的地主機(jī)107B。方法300包括負(fù)載平衡器將高速緩存的狀態(tài)發(fā)送到其它負(fù)載平衡器的動作(動作306)。例如,多路復(fù)用器106B可以向多路復(fù)用器106A返回狀態(tài)126?;蛘?,多路復(fù)用器106B可以從多路復(fù)用器106A接收對將流ID 144映射到適合的目的地主機(jī)107的狀態(tài)的明確請求。作為響應(yīng),狀態(tài)管理器142B可以參考狀態(tài)146B以訪問狀態(tài)126。狀態(tài)126可以指示流ID 144對應(yīng)于目的地主機(jī)107B。多路復(fù)用器106B可以向多路復(fù)用器106A返回狀態(tài)126。多路復(fù)用器106A可以隨后基于狀態(tài)126中的映射將分組121發(fā)送給目的地主機(jī)107B。圖4A和4B說明了用于在多路復(fù)用器之間共享狀態(tài)的示例計(jì)算機(jī)體系結(jié)構(gòu)400。如所示,計(jì)算機(jī)體系結(jié)構(gòu)400包括多路復(fù)用器401A和401B以及目的地主機(jī)402A、402B和402C。在圖4A中,多路復(fù)用器401B接收分組421。多路復(fù)用器401B確定其缺少足夠信息來標(biāo)識適合的目的地主機(jī)。作為響應(yīng),多路復(fù)用器401B將分組421發(fā)送給多路復(fù)用器401A(所有者多路復(fù)用器)。多路復(fù)用器401A可以從多路復(fù)用器401B接收分組421。多路 復(fù)用器401A標(biāo)識狀態(tài)426并向多路復(fù)用器401B返回狀態(tài)426。狀態(tài)426將分組421的數(shù)據(jù)流映射給目的地主機(jī)402B。多路復(fù)用器401A還可以將分組421轉(zhuǎn)發(fā)給目的地主機(jī)402B。隨后,多路復(fù)用器40IB接收與分組421相同的數(shù)據(jù)流的分組422和423?;跔顟B(tài)426,多路復(fù)用器40IB將分組422和423發(fā)送給目的地主機(jī)402B。在圖4B中,多路復(fù)用器401A接收分組431。多路復(fù)用器401B確定其缺少足夠信息來標(biāo)識適合的目的地主機(jī)。作為響應(yīng),多路復(fù)用器401B將分組431發(fā)送給多路復(fù)用器401A(所有者多路復(fù)用器)。多路復(fù)用器401A可以從多路復(fù)用器401B接收分組431。多路復(fù)用器401A標(biāo)識狀態(tài)436并向多路復(fù)用器401B返回狀態(tài)436。狀態(tài)436將分組431的數(shù)據(jù)流映射給目的地主機(jī)402B。多路復(fù)用器401A將分組431發(fā)送給目的地主機(jī)402B。然而,在接收狀態(tài)436之前,多路復(fù)用器401B接收與分組431相同的數(shù)據(jù)流的分組432。由于多路復(fù)用器40IB還沒有接收狀態(tài)436,多路復(fù)用器40IB確定其缺少足夠信息來標(biāo)識適合的目的地主機(jī)。作為響應(yīng),多路復(fù)用器401B也將分組432發(fā)送給多路復(fù)用器401A。多路復(fù)用器401A可以從多路復(fù)用器401B接收分組432。多路復(fù)用器401A確定它已經(jīng)將狀態(tài)436發(fā)送給多路復(fù)用器401B。多路復(fù)用器401A將分組432發(fā)送給目的地主機(jī)402B。隨后,多路復(fù)用器401B接收與分組431相同的數(shù)據(jù)流的分組433。基于狀態(tài)436,多路復(fù)用器401B將分組433發(fā)送給目的地主機(jī)402B。因此,本發(fā)明的實(shí)施例可以補(bǔ)償在多路復(fù)用器之間狀態(tài)交換中的延遲。圖5A和5B說明了用于在多路復(fù)用器之間共享狀態(tài)的示例計(jì)算機(jī)體系結(jié)構(gòu)500。如所示,計(jì)算機(jī)體系結(jié)構(gòu)500包括多路復(fù)用器501A、501B和501C以及目的地主機(jī)502A、502B和 502C。在圖5A中,多路復(fù)用器50IA是包括分組521和522 (分組521和522是非SYN分組)的現(xiàn)有數(shù)據(jù)流的主要所有者。多路復(fù)用器501C是包括分組521和522的數(shù)據(jù)流的后備所有者。多路復(fù)用器501A接收分組521。多路復(fù)用器501A確定其是現(xiàn)有數(shù)據(jù)流的所有者,并且其缺少足夠信息來標(biāo)識適合的目的地主機(jī)(即多路復(fù)用器501A缺少現(xiàn)有數(shù)據(jù)流的高速緩存的狀態(tài))。作為響應(yīng),多路復(fù)用器501A參考當(dāng)前目的地?cái)?shù)組(例如新數(shù)組109)以將目的地主機(jī)502A標(biāo)識為適合的目的地主機(jī)。多路復(fù)用器501A還開始跟蹤現(xiàn)有數(shù)據(jù)流的狀態(tài)526。一旦后續(xù)的過渡且狀態(tài)526與新的數(shù)組不同的判斷,多路復(fù)用器501A就將狀態(tài)526發(fā)送給多路復(fù)用器501C。多路復(fù)用器501C從多路復(fù)用器501A接收狀態(tài)526并高速緩存狀態(tài)526。狀態(tài)526將現(xiàn)有數(shù)據(jù)流映射到目的地主機(jī)502A。因此,如果多路復(fù)用器501A失敗,多路復(fù)用器501C可以接管將狀態(tài)526提供給其它多路復(fù)用器。在圖5B中,多路復(fù)用器50IA是包括分組531和532 (分組531和532是非SYN分組)的現(xiàn)有數(shù)據(jù)流的主要所有者。多路復(fù)用器501C是包括分組531和532的數(shù)據(jù)流的后備所有者。多路復(fù)用器501B接收分組531和532。多路復(fù)用器501B具有足夠的信息以確定目的地主機(jī)502A是現(xiàn)有數(shù)據(jù)流的適合的目的地主機(jī)(即要么現(xiàn)有數(shù)據(jù)流是新的流,要么多 路復(fù)用器已經(jīng)高速緩存了有關(guān)該流的信息)。多路復(fù)用器501B還確定多路復(fù)用器501A是現(xiàn)有數(shù)據(jù)流的主要所有者。一旦在目的地?cái)?shù)組中有改變,多路復(fù)用器501B檢測過渡并將狀態(tài)536發(fā)送給多路復(fù)用器501A。多路復(fù)用器501A從多路復(fù)用器501B接收狀態(tài)536。狀態(tài)536將現(xiàn)有數(shù)據(jù)流映射到目的地主機(jī)502A。如果屬于相同的流的更多的分組到達(dá)多路復(fù)用器501B處,多路復(fù)用器501B不時地繼續(xù)不斷地將批量更新538 (包括狀態(tài)536以及多路復(fù)用器501A是所有者的其它狀態(tài))發(fā)送給所有者多路復(fù)用器501A,使得所有者多路復(fù)用器總是具有有關(guān)其是所有者的所有流的當(dāng)前信息。有吋,多路復(fù)用器501A可以將批量狀態(tài)更新發(fā)送給其它后備所有者。例如,多路復(fù)用器501A可以將狀態(tài)537發(fā)送給多路復(fù)用器501C。多路復(fù)用器501C可以從多路復(fù)用器501A接收狀態(tài)537。狀態(tài)537可以是由多路復(fù)用器501所跟蹤的活動流的批量的狀態(tài)更新(包括狀態(tài)536)。圖6A、6B、6C和6D說明了用于維護(hù)數(shù)據(jù)流到目的地主機(jī)的映射的示例計(jì)算機(jī)體系結(jié)構(gòu)600。圖6A描述了處于穩(wěn)定狀態(tài)的目的地主機(jī)A 601、目的地主機(jī)B 602和目的地主機(jī)C 603的安排。因此,舊數(shù)組608和新數(shù)組609彼此匹配。在穩(wěn)定狀態(tài)中,多路復(fù)用器可以參考數(shù)組以確定數(shù)據(jù)流的適合的目的地主機(jī)。圖6B描述了目的地主機(jī)A 601、目的地主機(jī)B 602和目的地主機(jī)C 603的安排,其中,移除了目的地主機(jī)C 603。目的地主機(jī)的移除基本上可以是瞬時的。這樣,目的地主機(jī)的移除不一定指示在目的地主機(jī)的安排中的過渡。這樣,一旦移除了一目的地主機(jī),多路復(fù)用器仍然可以參考數(shù)組以確定數(shù)據(jù)流的適合的目的地主機(jī)。圖6C描述了目的地主機(jī)A 601、目的地主機(jī)B 602和目的地主機(jī)C 603和目的地主機(jī)D 604的安排,其中,用目的地主機(jī)D 604替換了目的地主機(jī)C 603。目的地主機(jī)的替換基本上也可以是瞬時的。這樣,目的地主機(jī)的替換不一定指示在目的地主機(jī)的安排中的過渡。這樣,一旦替換了一目的地主機(jī),多路復(fù)用器仍然可以參考數(shù)組以確定數(shù)據(jù)流的適合的目的地主機(jī)。圖6D描述了目的地主機(jī)A 601、目的地主機(jī)B 602和目的地主機(jī)C 603和目的地主機(jī)D 604的安排,其中,添加了目的地主機(jī)D 603。目的地主機(jī)的添加可以包括過渡周期以及在目的地主機(jī)的安排中的這樣的過渡。在過渡周期期間,在舊數(shù)組608和新數(shù)組609之間的映射可以不同(由于某些數(shù)據(jù)流被重新分配給目的地主機(jī)D 604以平衡工作負(fù)載)。當(dāng)檢測到不同的映射時,多路復(fù)用器可以跟蹤并交換數(shù)據(jù)流的狀態(tài)。當(dāng)所有的所有者多路復(fù)用器具有足夠的信息以作出有關(guān)它們擁有的流的決定吋,目的地主機(jī)的安排返回到穩(wěn)定狀態(tài),并且舊數(shù)組608和新數(shù)組609再次匹配。圖7A和7B說明了用于維護(hù)數(shù)據(jù)流到所有者多路復(fù)用器的映射的示例計(jì)算機(jī)體系結(jié)構(gòu)700。圖7A描述了多路復(fù)用器A 701、多路復(fù)用器B 702、多路復(fù)用器C 703以及多路復(fù)用器D 704。主要所有者數(shù)組708將數(shù)據(jù)流映射到主要所有者多路復(fù)用器。后備所有者數(shù)組709將數(shù)據(jù)流映射到后備所有者多路復(fù)用器。在數(shù)組內(nèi)的位置可以對應(yīng)于數(shù)據(jù)流ID。例如,數(shù)據(jù)流ID 6的主要所有者就是多路復(fù)用器B 702。類似地,數(shù)據(jù)流ID 6的后備所有者就是多路復(fù)用器C 703。在一些實(shí)施例中,所有者檢測器(例如142A、142B、142C等)使用數(shù)據(jù)流ID作為數(shù)組中的索引位置,并將狀態(tài)更新發(fā)送給在索引位置處標(biāo)識的多路復(fù)用器。當(dāng)一多路復(fù)用器失敗時,可以重新分配該多路復(fù)用器的主要和后備所有權(quán)責(zé)任。圖7B描述了多路復(fù)用器C 703的故障。響應(yīng)于該故障,索引位置(數(shù)據(jù)流ID) 9-12的主要所有權(quán)和索引位置(數(shù)據(jù)流ID)5-8的后備所有權(quán)被重新分配給其余的多路復(fù)用器。 因此,本發(fā)明的實(shí)施例包括負(fù)載平衡器使用一致性散列算法來決定如何負(fù)載平衡新的連接。一致性散列算法的使用允許負(fù)載平衡器將需要被交換的狀態(tài)量最小化。具體地,僅有不能使用散列和目的地?cái)?shù)組來確定的流狀態(tài)需要被同歩。負(fù)載平衡器保持有關(guān)傳入分組的狀態(tài)信息(給定流的目的地地址)。當(dāng)需要其時,即例如當(dāng)檢測到目的地主機(jī)配置中的改變吋,以確定性方式將所選的狀態(tài)信息跨負(fù)載平衡器上進(jìn)行共享,以允許有權(quán)威的(例如是所有者)的負(fù)載平衡器為給定流選擇正確的目的地主機(jī)。每個負(fù)載平衡器可以與該權(quán)威的負(fù)載平衡器取得聯(lián)系以了解不能本地確定的流。本發(fā)明可具體化為其它具體形式而不背離其精神或本質(zhì)特征。所述實(shí)施例在所有方面都應(yīng)當(dāng)被認(rèn)為只是說明性的而非限制性的。因此,本發(fā)明的范圍由所附權(quán)利要求書而非上述描述指示。落入權(quán)利要求書的等效方案的含義和范圍內(nèi)的所有改變都被權(quán)利要求書的范圍所涵蓋。
權(quán)利要求
1.在包括路由器和負(fù)載平衡系統(tǒng)的計(jì)算機(jī)系統(tǒng)處,負(fù)載平衡系統(tǒng)包括負(fù)載平衡器、一個或多個其它負(fù)載平衡器以及多個目的地主機(jī),路由器連接到網(wǎng)絡(luò)并且是進(jìn)入負(fù)載平衡系統(tǒng)的入口點(diǎn),網(wǎng)絡(luò)上的組件使用虛擬電子地址與負(fù)載平衡系統(tǒng)通信,一種用于在負(fù)載平衡器之間共享狀態(tài)的方法,所述方法包括 負(fù)載平衡器從路由器接收分組的動作,所述分組包含標(biāo)識在廣域網(wǎng)上的源的源電子地址信息以及包括所述虛擬電子地址的目的地電子地址信息; 負(fù)載平衡器確定所述分組是用于現(xiàn)有的數(shù)據(jù)流的動作; 負(fù)載平衡器使用一算法來從包括分組首部的分組內(nèi)容中生成所述現(xiàn)有的數(shù)據(jù)流的數(shù)據(jù)流標(biāo)識符的動作; 負(fù)載平衡器確定所述負(fù)載平衡器缺少足夠的信息來從所述多個目的地主機(jī)中標(biāo)識出對應(yīng)于所述現(xiàn)有的數(shù)據(jù)流的目的地主機(jī)的動作; 負(fù)載平衡器確定該負(fù)載平衡器不具有任何將所述現(xiàn)有的數(shù)據(jù)流映射到所述多個目的地主機(jī)中的ー個目的地主機(jī)的高速緩存的狀態(tài)的動作; 響應(yīng)于確定所述負(fù)載平衡器缺少足夠信息以標(biāo)識對應(yīng)于所述現(xiàn)有的數(shù)據(jù)流的目的地主機(jī),進(jìn)行 負(fù)載平衡器標(biāo)識被指定為所述現(xiàn)有的數(shù)據(jù)流的所有者的所有者負(fù)載平衡器的動作,所述所有者負(fù)載平衡器是從ー個或多個其它負(fù)載平衡器中選擇出的;以及 所述負(fù)載平衡器將對數(shù)據(jù)流狀態(tài)信息的請求發(fā)送給所有者負(fù)載平衡器的動作; 所述負(fù)載平衡器從所述所有者負(fù)載平衡器接收狀態(tài)信息的動作,所述狀態(tài)信息標(biāo)識了對應(yīng)于所述現(xiàn)有的數(shù)據(jù)流的目的地主機(jī);以及 所述負(fù)載平衡器對所接收的狀態(tài)信息進(jìn)行高速緩存的動作。
2.如權(quán)利要求I所述的方法,其特征在于,還包括響應(yīng)于確定所述多個目的地主機(jī)的安排處于過渡中,進(jìn)行 所述負(fù)載平衡器標(biāo)識ー個或多個其它現(xiàn)有的數(shù)據(jù)流的高速緩存的狀態(tài)的動作,所述高速緩存的狀態(tài)將所述ー個或多個其它現(xiàn)有的數(shù)據(jù)流映射到所述多個目的地主機(jī)中的對應(yīng)的目的地主機(jī); 所述負(fù)載平衡器使用當(dāng)前目的地主機(jī)數(shù)組來標(biāo)識對其而言目的地主機(jī)不同于當(dāng)前映射的數(shù)據(jù)流的動作; 對于這些ー個或多個現(xiàn)有的更多的數(shù)據(jù)流中的每個 所述負(fù)載平衡器標(biāo)識被指定為所述現(xiàn)有的數(shù)據(jù)流的所有者的所有者負(fù)載平衡器的動作,所述所有者負(fù)載平衡器是從ー個或多個其它負(fù)載平衡器中選擇出;以及 將所述現(xiàn)有的數(shù)據(jù)流的高速緩存的狀態(tài)發(fā)送給所述現(xiàn)有的數(shù)據(jù)流的所有者負(fù)載平衡器的動作。
3.如權(quán)利要求I所述的方法,其特征在于,所述負(fù)載平衡器從所述路由器接收分組的動作包括所述負(fù)載平衡器根據(jù)下述一項(xiàng)來接收分組等價多徑(ECMP)算法或域名系統(tǒng)(DNS)循環(huán)算法。
4.如權(quán)利要求I所述的方法,其特征在于,還包括 所述負(fù)載平衡器接收所述現(xiàn)有的數(shù)據(jù)流的第二分組的動作;以及 所述負(fù)載平衡器參考高速緩存的狀態(tài)信息以將所述目的地主機(jī)標(biāo)識為對應(yīng)于所述現(xiàn)有的數(shù)據(jù)流的動作;以及 所述負(fù)載平衡器將所述第二分組發(fā)送給所述目的地主機(jī)的動作。
5.如權(quán)利要求I所述的方法,其特征在于,所述負(fù)載平衡器使用一算法來生成所述現(xiàn)有的數(shù)據(jù)流的數(shù)據(jù)流標(biāo)識符的動作包括為所述負(fù)載平衡系統(tǒng)使用散列算法來將源的源因特網(wǎng)協(xié)議地址和虛擬因特網(wǎng)協(xié)議地址散列成數(shù)據(jù)流標(biāo)識符的動作,所述數(shù)據(jù)流標(biāo)識符表示在將數(shù)據(jù)流映射到對應(yīng)的目的地主機(jī)的當(dāng)前的映射數(shù)組中的索引。
6.如權(quán)利要求5所述的方法,其特征在于,所述負(fù)載平衡器標(biāo)識被指定為所述現(xiàn)有的數(shù)據(jù)流的所有者的所有者負(fù)載平衡器的動作包括 使用第二散列算法來將源因特網(wǎng)協(xié)議地址和虛擬因特網(wǎng)協(xié)議地址散列成第二散列值的動作,所述第二散列值表示在主要所有者分區(qū)數(shù)組中的位置,所述主要所有者分區(qū)數(shù)組將數(shù)據(jù)流映射到維護(hù)所述數(shù)據(jù)流的高速緩存的狀態(tài)的對應(yīng)的負(fù)載平衡器;以及 參考所述主要所有者分區(qū)數(shù)組中的位置以標(biāo)識被映射為所述現(xiàn)有的數(shù)據(jù)流的所有者的負(fù)載平衡器的動作。
7.在包括路由器和負(fù)載平衡系統(tǒng)的計(jì)算機(jī)系統(tǒng)處,負(fù)載平衡系統(tǒng)包括負(fù)載平衡器、一個或多個其它負(fù)載平衡器以及多個目的地主機(jī),路由器連接到網(wǎng)絡(luò)并且是從廣域網(wǎng)進(jìn)入所述負(fù)載平衡系統(tǒng)的入口點(diǎn),網(wǎng)絡(luò)上的組件使用虛擬電子地址與所述負(fù)載平衡系統(tǒng)通信,一種用于在負(fù)載平衡器之間共享狀態(tài)的方法,所述方法包括 所述負(fù)載平衡器從另一負(fù)載平衡器接收封裝的分組的動作,所述分組包含標(biāo)識在網(wǎng)絡(luò)上的源的源電子地址信息以及包括所述虛擬電子地址的目的地電子地址信息; 所述負(fù)載平衡器確定所接收的分組是用于現(xiàn)有的數(shù)據(jù)流的動作; 所述負(fù)載平衡器確定所述負(fù)載平衡器是所述現(xiàn)有的數(shù)據(jù)流的所有者的動作; 所述負(fù)載平衡器確定所述負(fù)載平衡器已經(jīng)高速緩存所述現(xiàn)有的數(shù)據(jù)流的狀態(tài)的動作,高速緩存的狀態(tài)將所述現(xiàn)有的數(shù)據(jù)流映射到所述多個目的地主機(jī)中的一個目的地主機(jī);所述負(fù)載平衡器將所接收的分組發(fā)送到被映射至所述現(xiàn)有數(shù)據(jù)流的目的地主機(jī)的動作;以及 所述負(fù)載平衡器將所述高速緩存的狀態(tài)發(fā)送給所述其它負(fù)載平衡器以用于將所述現(xiàn)有的數(shù)據(jù)流中的后續(xù)分組適當(dāng)?shù)剞D(zhuǎn)發(fā)給所述目的地主機(jī)之一的動作。
8.如權(quán)利要求7所述的方法,其特征在于,還包括所述負(fù)載平衡器從所述一個或多個其它負(fù)載平衡器接收所述一個或多個其它現(xiàn)有的數(shù)據(jù)流的高速緩存的狀態(tài)的動作,所述一個或多個其它負(fù)載平衡器已經(jīng)確定所述負(fù)載平衡器是所述一個或多個其它現(xiàn)有的數(shù)據(jù)流的主要所有者負(fù)載平衡器。
9.如權(quán)利要求7所述的方法,其特征在于,還包括所述負(fù)載平衡器將另一現(xiàn)有的數(shù)據(jù)流的狀態(tài)發(fā)送給另一負(fù)載平衡器的動作,所述負(fù)載平衡器已經(jīng)確定所述數(shù)據(jù)流的狀態(tài)在當(dāng)前目的地?cái)?shù)組中不同;以及 所述負(fù)載平衡器確定所述其它負(fù)載平衡器是所述其它現(xiàn)有的數(shù)據(jù)流的主要所有者的動作。
10.一種負(fù)載平衡系統(tǒng),包括 一個或多個處理器; 系統(tǒng)存儲器;路由器; 其上存儲計(jì)算機(jī)可執(zhí)行指令的一個或多個計(jì)算機(jī)存儲設(shè)備,所述計(jì)算機(jī)可執(zhí)行指令表示負(fù)載平衡管理器、多個多路復(fù)用器以及多個目的地主機(jī),其中,其中所述負(fù)載平衡器被配置為 對所述多個目的地主機(jī)監(jiān)視所述多個目的地主機(jī)的安排中的改變; 維護(hù)將流ID映射到目的地主機(jī)的目的地主機(jī)數(shù)組; 以周期性間隔來更新所述目的地主機(jī)數(shù)組; 在每個數(shù)組更新之前,將目的地主機(jī)數(shù)組復(fù)制到目的地主機(jī)數(shù)組的舊版本; 將目的地主機(jī)數(shù)組和目的地主機(jī)數(shù)組的舊版本提供給所述多個多路復(fù)用器; 對所述多個多路復(fù)用器監(jiān)視改變; 維護(hù)將流ID映射到主要所有者多路復(fù)用器的主要所有權(quán)數(shù)組; 維護(hù)將流ID映射到后備所有者多路復(fù)用器的后備所有權(quán)數(shù)組; 將主要所有權(quán)數(shù)組和后備所有權(quán)數(shù)組提供給所述多個多路復(fù)用器;以及 其中,所述多個多路復(fù)用器中的每個被配置為 從所述路由器接收分組; 基于在所述分組中包含的信息以制定每個所接收的分組的流ID ; 從所述多個目的地主機(jī)中為所述分組標(biāo)識適合的目的地主機(jī),包括 確定所述數(shù)據(jù)流是否是新的數(shù)據(jù)流; 當(dāng)所述數(shù)據(jù)流被確定為是現(xiàn)有的數(shù)據(jù)流時,使用數(shù)據(jù)流ID作為在目的地主機(jī)數(shù)組中的索引以標(biāo)識所述分組的適合的目的地主機(jī); 當(dāng)所述目的地主機(jī)數(shù)組的內(nèi)容和目的地主機(jī)的舊版本不匹配時,參考高速緩存的狀態(tài)以標(biāo)識所述分組的適合的目的地主機(jī),包括 參考在多路復(fù)用器處的高速緩存的狀態(tài)以確定所述多路復(fù)用器先前是否高速緩存了流ID的適合的目的地主機(jī)的指示,包括 當(dāng)在多路復(fù)用器處的高速緩存的狀態(tài)包含用于流ID的適合的目的地主機(jī)的指示時,訪問在多路復(fù)用器處的高速緩存的狀態(tài);以及 當(dāng)在多路復(fù)用器處的高速緩存的狀態(tài)不包含用于流ID的適合的目的地主機(jī)的指示時, 參考所有者數(shù)組以便為所述流ID標(biāo)識所有者多路復(fù)用器; 向所標(biāo)識的所有者多路復(fù)用器查詢高速緩存的狀態(tài);以及 從所標(biāo)識的所有者多路復(fù)用器接收高速緩存的狀態(tài),所述狀態(tài)指示了用于所述流ID的適合的目的地主機(jī);以及 將所述分組發(fā)送給所標(biāo)識的適合的目的地主機(jī)。
全文摘要
本發(fā)明涉及用于同步負(fù)載平衡器組件間的狀態(tài)的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。本發(fā)明的實(shí)施例包括負(fù)載平衡器使用一致性散列算法來決定如何負(fù)載平衡新的連接。一致性散列算法的使用允許負(fù)載平衡器以無縫方式在穩(wěn)定狀態(tài)中工作。在需要流狀態(tài)信息時,即例如當(dāng)檢測到目的地主機(jī)配置中的改變時,負(fù)載平衡器開始保持有關(guān)傳入分組的流狀態(tài)信息(用于給定流的目的地地址)。以確定性方式跨負(fù)載平衡器來共享狀態(tài)信息,這允許了解哪個負(fù)載平衡器對于給定流是權(quán)威的(即是其所有者)。每個負(fù)載平衡器可以與該權(quán)威的負(fù)載平衡器取得聯(lián)系以了解不能本地確定的流。
文檔編號H04L12/803GK102857438SQ20111044432
公開日2013年1月2日 申請日期2011年12月16日 優(yōu)先權(quán)日2010年12月17日
發(fā)明者P·帕特爾, V·伊萬諾夫, M·齊科斯, V·彼得, V·庫茲涅佐夫, D·A·戴恩 申請人:微軟公司