專利名稱:分布式系統(tǒng)的反應(yīng)式負(fù)載平衡的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及負(fù)載平衡,并且更具體地涉及分布式系統(tǒng)中的反應(yīng)式負(fù)載平衡。
背景技術(shù):
常規(guī)的負(fù)載平衡系統(tǒng)可實現(xiàn)各種機制以便在機器集群上全局地分布負(fù)載。這些系統(tǒng)通常按照固定的時間表(例如每小時一次)或通過添加附加資源來為過載的機器重新分布資源。雖然這些方法對于解決長期負(fù)載模式可能是令人滿意的,但是對需要重新分布資源的分析之間的長的間隔在短期負(fù)載尖峰發(fā)生時固有地限制了系統(tǒng)的有效性。例如,如果中央負(fù)載平衡器每小時一次地分析對于重新分布資源的需要,那么持久保持少于一小時的短期負(fù)載尖峰可能導(dǎo)致集群中機器子集上的熱點,并且為其工作負(fù)載位于這些機器上的消費者帶來不令人滿意的性能。除了按照固定的時間表來操作,如今,SQL AZURE 和類似技術(shù)中使用的負(fù)載平衡器通常試圖通過將負(fù)載均勻地分散在整個機器集群來執(zhí)行全局優(yōu)化。然而,該方法的缺點是如果負(fù)載突然改變,那么集群將是不平衡的直到下一個負(fù)載平衡器運行。因此,如今, 負(fù)載平衡器沒有充分地解決具有高度動態(tài)的負(fù)載改變的集群中的平衡。此外,當(dāng)前反應(yīng)式負(fù)載平衡器通過簡單地將請求發(fā)送到另一個機器來對過載的機器作出反應(yīng)。然而,這種形式的負(fù)載平衡要求用戶請求是機器不可知的。然而,在采用 SQL AZURE 的系統(tǒng)中,這種形式的負(fù)載平衡本質(zhì)上是不可能的,因為請求被綁定到一個具體的機器。由此,對于SQL AZURE 應(yīng)用程序,負(fù)載平衡器必須物理上重新分配哪些機器可處理哪些請求,這不是機器不可知的。常規(guī)的負(fù)載平衡器的上述缺點僅旨在提供常規(guī)系統(tǒng)和技術(shù)的一些問題的概覽,并且不旨在是窮盡性的。常規(guī)系統(tǒng)和技術(shù)的其他問題以及此處描述的各個非限制性實施例的對應(yīng)益處可以在審閱以下描述后變得更顯而易見。
發(fā)明內(nèi)容
此處提供了簡化的發(fā)明內(nèi)容以幫助能夠?qū)σ韵赂敿?xì)的描述和附圖中的示例性、 非限制性實施例的各方面有基本或大體的理解。然而,本發(fā)明內(nèi)容并不旨在作為詳盡的或窮盡的概觀。相反,本發(fā)明內(nèi)容的唯一目的是以簡化的形式來提出與一些示例性非限制性實施例相關(guān)的一些概念,作為以下各實施例的更為詳細(xì)的描述的序言。在一個或多個實施例中,實現(xiàn)了反應(yīng)式負(fù)載平衡。在一個實施例中,反應(yīng)式負(fù)載平衡器可從第一數(shù)據(jù)庫節(jié)點接收反饋,并且至少基于該反饋向第一數(shù)據(jù)庫節(jié)點分配資源。反饋是動態(tài)的并且包括指示第一數(shù)據(jù)庫節(jié)點的負(fù)載水平的信息。在某些實施例中,該反饋包括指示負(fù)載不足的第二數(shù)據(jù)庫節(jié)點的負(fù)載水平的信息。在其他實施例中,負(fù)載平衡由輪詢其上資源可用的一組設(shè)備(例如,蜂窩電話、個人計算機、PDA)的過載節(jié)點來執(zhí)行。具體而言,方法包括向設(shè)備輪詢關(guān)于該設(shè)備上的資源可用性,并且接收關(guān)于至少一個設(shè)備所提供的資源的價格信息。響應(yīng)于提供對價格的支付, 過載的節(jié)點利用資源??梢圆捎门馁u模型或者出價/還價方法。在一個或多個實施例中,以第一粒度(例如每小時一次)為一組設(shè)備執(zhí)行反應(yīng)式負(fù)載平衡器。隨后,從設(shè)備中的一個接收指示資源稀缺性的幫助信號。以比第一粒度小得多的第二粒度(例如以分鐘的規(guī)模)接收幫助信號。隨后為從其接收幫助信號的設(shè)備執(zhí)行反應(yīng)式負(fù)載平衡。在某些情形中,反應(yīng)式負(fù)載平衡包括將資源從其他設(shè)備分配給從其接收幫助信號的設(shè)備。在一個或多個其他實施例中,另一個反應(yīng)式負(fù)載平衡方法包括基于節(jié)點處的過載狀態(tài)從節(jié)點接收幫助消息。該節(jié)點確定在發(fā)送幫助消息之前其具有過載狀態(tài)。在接收幫助消息之后,反應(yīng)式負(fù)載平衡器確定是否可為該節(jié)點執(zhí)行負(fù)載平衡。在這期間,通過負(fù)載平衡器不允許預(yù)定義時間期間的附加幫助消息來壓制這種附加消息。例如,否定確定(NACK)可被發(fā)送到節(jié)點以壓制可由該節(jié)點發(fā)送的任何附加消息。在該實施例中,沒有ACK消息被發(fā)送,而流控制是通過按需使用重復(fù)的NACK和/或重復(fù)的幫助消息來執(zhí)行的。這些和其他實施例在下面將更詳細(xì)地描述。
各非限制性實施例參考附圖來進(jìn)一步描述,附圖中圖1是分布式數(shù)據(jù)庫系統(tǒng)中反應(yīng)式負(fù)載平衡的示例性系統(tǒng)體系結(jié)構(gòu)的說明性概覽;圖2是示例性反應(yīng)式幫助消息處理的說明性概覽;圖3、4、5和6是示出根據(jù)此處描述的實施例便于反應(yīng)式負(fù)載平衡的示例性非限制性方法的流程圖;圖7是示出本地數(shù)據(jù)庫節(jié)點上輪詢線程的狀態(tài)的框圖;圖8是示出全局負(fù)載平衡器上反應(yīng)式負(fù)載平衡線程的狀態(tài)的框圖;圖9是示出反應(yīng)式負(fù)載平衡狀態(tài)中數(shù)據(jù)庫節(jié)點的狀態(tài)的框圖;圖10是表示其中可實現(xiàn)此處所描述的各實施例的示例性、非限制性聯(lián)網(wǎng)環(huán)境的框圖;以及圖11是表示其中可實現(xiàn)此處所描述的各實施例的一個或多個方面的示例性、非限制性計算系統(tǒng)或操作環(huán)境的框圖。
具體實施例方式此處在以下描述及附圖中描述了某些說明性實施例。這些實施例僅是示例性、非限制性并且非窮盡性的。由此,此處設(shè)想并旨在覆蓋在各實施例精神內(nèi)的全部修改、更改和變型。如在本申請中所使用的,術(shù)語“組件”、“組件”、“系統(tǒng)”、“接口 ”等一般旨在表示硬件和/或軟件、或者執(zhí)行中的軟件。例如,組件可以是但不限于在處理器上運行的進(jìn)程、處理器、對象、可執(zhí)行代碼、執(zhí)行的線程、程序和/或計算機。作為說明,運行在控制器上的應(yīng)用程序和控制器都可以是組件。一個或多個組件可以駐留在進(jìn)程和/或執(zhí)行的線程內(nèi),且組件可以位于一臺計算機上和/或分布在兩臺或更多的計算機之間。作為另一示例,接口可包括輸入/輸出(I/O)組件以及相關(guān)聯(lián)的處理器、應(yīng)用程序、和/或應(yīng)用編程接口(API) 組件,并且可以像命令行那樣簡單,或者像集成開發(fā)環(huán)境(IDE)那樣復(fù)雜。還有,這些組件可以從各種計算機可讀介質(zhì)和/或具有其上存儲的各種數(shù)據(jù)結(jié)構(gòu)的計算機可讀存儲介質(zhì)來執(zhí)行。反應(yīng)式負(fù)載平衡雖然描述了反應(yīng)式負(fù)載平衡的具體實施例,但此處描述的解決方案可被推廣到其中接收用于數(shù)據(jù)的事務(wù)以及定義了工作負(fù)載的任意分布式系統(tǒng)。如果系統(tǒng)正在過于細(xì)粒度 (例如每小時)地進(jìn)行負(fù)載平衡,則此處描述的解決方案可以補充這種負(fù)載平衡以處理負(fù)載中的短期尖峰。由此,這些實施例可以解決常規(guī)的負(fù)載平衡的缺點,提供允許節(jié)點執(zhí)行對負(fù)載尖峰的快速檢測的解決方案,提供協(xié)議以將該消息從單獨節(jié)點傳達(dá)給負(fù)載平衡器,和/ 或提供快速的本地化負(fù)載平衡。此處描述了對節(jié)點上的過度扼流(throttle)作出反應(yīng)并且從全局負(fù)載平衡器請求幫助以將負(fù)載重新分配遠(yuǎn)離該節(jié)點的反應(yīng)式負(fù)載平衡。此處描述的反應(yīng)式負(fù)載平衡系統(tǒng)和方法還對諸如丟失幫助或NACK消息或節(jié)點變?yōu)椴豢刹僮鞯裙收暇哂袕椥?。如此處所使用的,反?yīng)式負(fù)載平衡是指對由本地數(shù)據(jù)庫節(jié)點生成的幫助請求/消息/信號作出反應(yīng)的負(fù)載平衡。作為接下來的內(nèi)容的向?qū)?,更詳?xì)地描述反應(yīng)式負(fù)載平衡的各種示例性、非限制性實施例和特征。然后,為了附加說明給出一些非限制行的實現(xiàn)和示例,接著是可在其中實現(xiàn)這樣的實施例和/或特征的代表性網(wǎng)絡(luò)和計算環(huán)境。作為關(guān)于執(zhí)行負(fù)載平衡的一個或多個非限制性方式的描述,圖1 一般地考慮并示出用于平衡數(shù)據(jù)庫節(jié)點(DN) 102的工作負(fù)載的示例負(fù)載平衡系統(tǒng)。盡管圖1示出了單個主節(jié)點(MN) 114和單個DN 102,但是可以理解的是,DW02是為其執(zhí)行負(fù)載平衡的節(jié)點集群或機器集群的一部分。在任意給定的時間,節(jié)點集群或機器集群可以是在為其執(zhí)行負(fù)載平衡的特定的網(wǎng)絡(luò)中活躍的那些節(jié)點集群或機器集群。DN 102的本地節(jié)點引擎104處理與DN 102相關(guān)聯(lián)的任務(wù)。工作負(fù)載活動組件 106,也被稱為引擎扼流組件,監(jiān)控本地節(jié)點引擎104的工作負(fù)載活動水平,并且生成指示所檢測到的工作負(fù)載活動水平的統(tǒng)計數(shù)據(jù)。在某些實施例中,工作負(fù)載活動組件106執(zhí)行扼流(例如,由于DN 102上有限資源的過載,提高處理速度或者抑制無法被處理的用戶請求)。扼流的速率、頻率或出現(xiàn)可以與DN 102的工作負(fù)載相對應(yīng)。工作負(fù)載增加或增加超過預(yù)定義的閾值時,扼流可以增加。工作負(fù)載活動統(tǒng)計數(shù)據(jù)可存儲在數(shù)據(jù)庫108的本地分區(qū)管理器(LPM)/動態(tài)管理視圖(DMV)中。在某些實施例中,工作負(fù)載活動統(tǒng)計數(shù)據(jù)是指示DN 102所執(zhí)行的扼流的出現(xiàn)、速率和/或量的統(tǒng)計數(shù)據(jù)??梢詧?zhí)行兩個不同的協(xié)議。在某些情形中,DN 102的本地平衡代理(LB代理)110 確定DN 102何時正在執(zhí)行過度扼流,并且隨后使DN 102向全局負(fù)載平衡器(全局LB)發(fā)出DN 102需要(以資源分配的形式的)幫助的信號。全局LB隨后可試圖執(zhí)行資源分配, 諸如從過載節(jié)點交換分區(qū)到負(fù)載不足的節(jié)點。該協(xié)議利用了來自DN 102的本地知識。在其他情形中,DN 102向全局LB請求幫助,以便全局LB用資源分配進(jìn)行響應(yīng)。隨后由于集中式系統(tǒng)提供的全局知識作出關(guān)于集中式位置的負(fù)載平衡決定,該集中式系統(tǒng)允許作出更多最優(yōu)的決定。參考以上描述的其中利用了本地知識的第一協(xié)議,DN 102的負(fù)載平衡代理(LB代理)110讀取工作負(fù)載活動統(tǒng)計數(shù)據(jù),或者基于該工作負(fù)載活動統(tǒng)計數(shù)據(jù)在數(shù)據(jù)庫108中推斷并存儲的事件。當(dāng)工作負(fù)載活動統(tǒng)計數(shù)據(jù)或事件指示DN 102正變得過載(或者已經(jīng)變得過載), 則DN 102生成并輸出幫助消息。輪詢線程112可用于執(zhí)行這種任務(wù)。麗114可包括分區(qū)管理器(PM) 116,該分區(qū)管理器116包括反應(yīng)式負(fù)載平衡器 (反應(yīng)式LB) 118。反應(yīng)式LB118可以執(zhí)行此處描述的負(fù)載平衡任務(wù)中的一個或多個。例如,在一個實施例中,反應(yīng)式LB 118的消息接收器120接收幫助消息并且將該幫助消息過濾到消息隊列122中。LB IM從消息隊列讀取幫助消息,并且執(zhí)行用于資源分配的負(fù)載平衡協(xié)議。LB IM可以使用重新分配的資源消息來更新MN 114的全局分區(qū)管理器(GPM)126ο在某些實施例中,MN 114處理幫助消息并且執(zhí)行關(guān)于資源分配的決策制定,大約幾秒鐘。由此,在某些實施例中采用使用快速輪詢間隔的快速消息處理和決策制定流水線, 以及“足夠好的最優(yōu)”解決方案。此外,在某些實施例中,確定DN 102是否過載和/或在MN 114被特定的DN 102重新激活以重新執(zhí)行資源分配之前的延遲是否可被再一次激活的最佳等待時間是可調(diào)的。例如,這種因子被調(diào)至用于不同的集群配置的不同值。圖2是示例性反應(yīng)式幫助消息處理的說明性概覽。如參考圖1所描述的,DN 202 檢測過多的工作負(fù)載活動,并向MN 204傳送幫助消息。MN 204處理該幫助消息并為DN 202 重新分配資源。在某些實施例中,MN 204的LB (未示出)確定LB未被配備來處理來自DN 202的請求。在這些實施例中,MN 204可向DN 202傳送NACK或者簡單地?zé)o法向DN 202傳送響應(yīng)。一般而言,當(dāng)DN 202檢測到它已經(jīng)變得過載時,它將隨后經(jīng)由協(xié)議將幫助消息發(fā)送到MN 204。萬一 MN 204的負(fù)載平衡器不可用、DN 202最近得到過幫助、或者未找到用于 DN 202的修復(fù),則該協(xié)議包括用于使MN 204壓制節(jié)點在預(yù)定義的時間發(fā)送更多的幫助消息的工具。一旦MN 204接收并接受該幫助消息,就以本地化方式執(zhí)行負(fù)載平衡算法以確定能否找到平衡負(fù)載的解決方案。機器集群中的各個機器(例如DN 102)經(jīng)由幫助消息報告短期尖峰。向反應(yīng)式LB 118報告幫助消息。反應(yīng)式LB 118分析通常在常規(guī)的負(fù)載平衡系統(tǒng)中提供的負(fù)載統(tǒng)計數(shù)據(jù)的一部分。例如,在典型的系統(tǒng)中,反應(yīng)式LB 118分析集群級數(shù)據(jù)以有效地解決短期尖峰。 在此處描述的某些實施例中,僅將時間敏感的本地數(shù)據(jù)提供給全局組件以便于短期本地優(yōu)化。報告這種本地數(shù)據(jù)的新標(biāo)準(zhǔn)可被容易地擴展到適合具體的云數(shù)據(jù)庫實現(xiàn)以及負(fù)載平衡目標(biāo)。參考回到圖1,ΜΝ 114處的反應(yīng)式LB 118可被定義為以比常規(guī)的負(fù)載平衡器更小的時間標(biāo)尺來操作。例如,反應(yīng)式LB 118可以以分鐘而非小時的時間標(biāo)尺來操作。
以下描述專用于其中工作負(fù)載活動統(tǒng)計數(shù)據(jù)或事件被MN 114用來確定過載水平和/或DN 102是否實際上過載的實現(xiàn)。在此處還設(shè)想的其他實施例中,其他機制可用來確定過載水平和/或DN 102是否過載。此外,在其中結(jié)合全局視圖使用重新配置和PM 116 來幫助重新分配負(fù)載的實施例中,此處還設(shè)想的其他實施例可使用其他方法和組件來重新分配負(fù)載并且監(jiān)控各種負(fù)載的位置。為了執(zhí)行對過載節(jié)點的快速檢測,可以執(zhí)行以下方法。諸如DN 102的過載節(jié)點確定其是否過載并直接聯(lián)系MN 114。該方法代替等待中央負(fù)載平衡器從其他源接收統(tǒng)計數(shù)據(jù)并確定DN 102是否過載。由此,與常規(guī)系統(tǒng)不同,不存在依賴其來確定DN 102是否過載的中央機構(gòu)。在某些實施例中,DN 102是否過載可以根據(jù)DN 102是否經(jīng)歷由過多的工作負(fù)載帶來的扼流所導(dǎo)致的性能降級來定義??梢曰陬A(yù)定義的資源來確定性能降級,該預(yù)定義的資源包括但不限于中央處理單元(CPU)利用率和盤等待時間,由于某些資源是與機器無關(guān)的(例如消費者空間使用),并且在這些資源被移至不同的機器的情況下也不會改善。在某些實施例中,檢測過度扼流以確定性能降級的一個替換是創(chuàng)建監(jiān)控節(jié)點是否正在應(yīng)用過多的負(fù)載的新的服務(wù)/進(jìn)程。在某些實施例中,基于窗口時間的采樣被用于確定DN 102是否過載。對基于窗口時間的采樣的使用可以減少由其中扼流被稀疏地調(diào)用的情形所導(dǎo)致的在過載和非過載狀態(tài)之間震蕩的問題。網(wǎng)絡(luò)協(xié)議可以如下便于負(fù)載平衡。幫助消息和NACK消息在網(wǎng)絡(luò)協(xié)議中被定義。幫助消息包含從DN 102收集的最新的統(tǒng)計數(shù)據(jù),DN 102正在請求幫助以及可被用于通知反應(yīng)式LB 118它應(yīng)采取什么動作的輔助數(shù)據(jù)。NACK消息可用于使反應(yīng)式LB 118通知DN 102在短的時間量內(nèi)停止發(fā)送幫助消息;簡言之,它是流控制設(shè)備。由于過載節(jié)點持續(xù)地重新發(fā)送幫助消息——除非通過接收NACK消息而被顯式地壓制,故障容忍被內(nèi)置到協(xié)議中,并且該協(xié)議可使得為重新發(fā)送功能發(fā)送ACK消息的需要居先。由此,如果丟失了幫助消息,那么只要DN 102保持過載并且尚未接收NACK消息,它就繼續(xù)發(fā)送新的幫助消息。如果MN 114從DN 102接收另一個幫助消息,那么反應(yīng)式LB 118 重新發(fā)送另一個NACK消息。由此,盡管NACK可能丟失,但協(xié)議維持流控制操作。在各種實施例中,NACK消息可包括NACK為有效的時間跨度。NACK消息還可包括指示將NACK消息發(fā)送到DN 102的原因的信息。故障模型處理在DN 102和麗114之間丟失的網(wǎng)絡(luò)消息。在某些實施例中,對于從DN 102發(fā)送到麗114的消息,麗114不會顯式地發(fā)送對所接收的消息的確認(rèn)(ACK)。 相反,將從麗114發(fā)送顯式壓制消息(例如NACK消息)。在DN 102接收壓制消息之后,壓制消息將不允許或臨時地阻止DN 102發(fā)送附加消息。類似的原則應(yīng)用于從MN 114發(fā)送到 DN 102的消息,因為DN102不會顯式地發(fā)送對所接收的消息的ACK。僅有的差別是DN節(jié)點不會向麗114發(fā)送壓制消息。以下是不同的故障模式。如果從DN發(fā)送到麗的幫助消息在成功到達(dá)MN之前被丟棄,若DN在過度扼流輪詢間隔(在該期間DN確定在DN處過度扼流是否持續(xù))之后仍然需要幫助,那么DN向MN重新發(fā)送幫助消息。
8
如果NACK消息在成功到達(dá)DN之前被丟棄,則DN下一次發(fā)送由MN接收的幫助消息時,麗將以適當(dāng)?shù)腘ACK超時間隔重新發(fā)送NACK。如果MN未能正確地操作,則待決幫助消息的存儲器內(nèi)的隊列將丟失。然而,由于相關(guān)聯(lián)的DN尚未接收到NACK,因此DN將在下一次運行過度扼流輪詢線程時重新發(fā)送其幫助消息,并且存儲器內(nèi)的隊列將被重建。如果DN未能正確地操作,則DN丟失其記錄引擎扼流及其靜止?fàn)顟B(tài)的本地狀態(tài)。將重建帶有時間的引擎扼流歷史,并且如果DN開始發(fā)送幫助消息而又不允許DN發(fā)送幫助消息,則麗將向DN發(fā)送NACK,并通知DN不允許發(fā)送幫助消息的時間有多長。使用所描述的協(xié)議來執(zhí)行負(fù)載平衡器算法中的流控制。如果無法幫助節(jié)點(可在集群執(zhí)行更關(guān)鍵的任務(wù)時發(fā)生),如果最近已經(jīng)幫助過該節(jié)點,或者如果該節(jié)點以前已經(jīng)請求過幫助并且未找到解決方案,那么該節(jié)點將被標(biāo)記為受壓制的。如果該節(jié)點再一次要求幫助,則將使用上述協(xié)議發(fā)送回NACK消息。壓制時間已經(jīng)過期時,將再一次允許幫助消息??蓪⒂糜诒镜鼗?fù)載平衡的方法與常規(guī)方法相區(qū)分,常規(guī)方法運行整個負(fù)載平衡套件而同時要求負(fù)載平衡器具有整個集群的最新視圖(并且因此在計算上是昂貴的,并可生成不適當(dāng)?shù)膭幼?,和/或試圖平衡整個集群而不是僅響應(yīng)于節(jié)點集群中過載節(jié)點的需求。相反,此處描述的實施例不需要整個節(jié)點集群的已更新的視圖,從而僅為過載節(jié)點執(zhí)行本地化負(fù)載平衡,來自該過載節(jié)點的幫助消息已被接收并處理。在某些實施例中,通過指派現(xiàn)有的負(fù)載平衡算法來實現(xiàn)負(fù)載平衡,現(xiàn)有的負(fù)載平衡算法被限于僅將負(fù)載從使用之前描述的協(xié)議來請求幫助的節(jié)點移走,并且僅執(zhí)行在短的時間量內(nèi)完成的操作的某個子集。由此,不執(zhí)行諸如移動數(shù)據(jù)庫的操作,因為這些操作是耗時的。在一個實施例中,每段用戶數(shù)據(jù)都被存儲在多臺機器上(例如3臺機器)。機器的數(shù)目可被限于諸如3或4的小數(shù)目以便快速地執(zhí)行資源分配。由此,對于每個數(shù)據(jù)庫節(jié)點, 存在兩個其他候選機器,反應(yīng)式LB 118可以分析該候選機器以確定該候選者是否可被提供來作為與過載DN 102的交換。當(dāng)候選者被標(biāo)識時,臨時地停止DN 102的用戶處理,并且該用戶處理隨后被重新路由到新機器。作為又一示例,如果一臺機器遇到問題,若存在100 位消費者,則存在200個候選選擇(采用存在可發(fā)生交換的兩個候選者的以上模型)。反應(yīng)式負(fù)載平衡器118可以基于過去的信息來執(zhí)行負(fù)載平衡。例如,在某些實施例中,反應(yīng)式負(fù)載平衡器118可以基于前30分鐘的信息來執(zhí)行負(fù)載平衡。雖然圖1和2中未示出,在某些實施例中,反應(yīng)式LB 118可從負(fù)載不足的節(jié)點接收消息,該消息向LB 118通知該負(fù)載不足的節(jié)點具有可供過載節(jié)點使用的資源(和/或該負(fù)載不足的節(jié)點不可用,和/或該負(fù)載不足的節(jié)點不再是可用的)。由此,可以通過減少反應(yīng)式LB 118考慮用于重新分配資源的節(jié)點的數(shù)量來進(jìn)一步增強此處描述的實施例,因為反應(yīng)式LB 118可以考慮該反應(yīng)式LB 118在過去指定量的時間內(nèi)從其接收到適當(dāng)消息的負(fù)載不足的節(jié)點。雖然在麗114的中央反應(yīng)式LB 118的上下文中討論圖1和2的實施例,但在某些實施例中,多個節(jié)點(未示出)可以通過分布式的方式來便于負(fù)載平衡。在此實施例中, 執(zhí)行非集中式的負(fù)載平衡。例如,網(wǎng)絡(luò)中的設(shè)備可以執(zhí)行資源的對等共享。設(shè)備可以是具有可由節(jié)點利用的處理能力的任何設(shè)備,包括但不限于蜂窩電話、個人計算機(PC)、膝上型計算機、個人數(shù)字助理(PDA)、膝上型計算機等。具體而言,已經(jīng)檢測到其工作負(fù)載活動水平為過度的節(jié)點輪詢與其相關(guān)聯(lián)的網(wǎng)絡(luò)中的一個或多個設(shè)備。具有該節(jié)點可用的資源的所輪詢的設(shè)備可以以根據(jù)記賬模型設(shè)置的價格向節(jié)點提供資源。價格可以基于所使用的資源的量、所執(zhí)行的處理的類型、資源被使用的時間等。記賬模型可包括節(jié)點對設(shè)備提出的價格進(jìn)行還價以得到更低的價格,使用條款的協(xié)商,和/或設(shè)備通過從節(jié)點獲得報價并將資源提供給最高出價者來向請求幫助的一個或多個節(jié)點拍賣資源的拍賣模型。另外,盡管上述系統(tǒng)和技術(shù)中的大多數(shù)是在分布式數(shù)據(jù)庫系統(tǒng)的上下文中提供的,但是此處描述的實施例可適用于其中資源利用變化并且可以進(jìn)行動態(tài)的資源分配的任何系統(tǒng)。例如,在本發(fā)明的范圍內(nèi)所設(shè)想并包括的實施例是具有多個虛擬機(VM)的系統(tǒng)。 如果資源分配是動態(tài)的而不是靜態(tài)的,則各個VM可將幫助消息發(fā)送到主機,因為VM正接近或達(dá)到容量,并且該主機可以實現(xiàn)此處描述的協(xié)議以確定替換資源是否可用,并且執(zhí)行對這種替換資源的分配。在相關(guān)的實施例中,如果很多不同的應(yīng)用程序共享單個VM(代替單個VM-單個應(yīng)用程序模型),那么可在諸如WINDOWS AZURE或類似平臺的云平臺上執(zhí)行負(fù)載平衡。如果 VM變?yōu)檫^載,則應(yīng)用程序可以提供對附加資源的請求,并且可在另一臺VM上重新設(shè)置。作為另一個實施例,資源被過量預(yù)訂/過量預(yù)定時,可以使用此處描述的負(fù)載平衡。具體而言,當(dāng)消費者請求所承諾的服務(wù)質(zhì)量(QoQ并且資源已被過量預(yù)訂時,可以執(zhí)行負(fù)載平衡以重新分配資源并在快速反應(yīng)性下滿足消費者的QoS需求。作為另一個實施例,協(xié)議可用于任何分布式環(huán)境中,包括分布SQL高速緩存使用的環(huán)境、或其他類似的環(huán)境。在各種實施例中,用于反應(yīng)式負(fù)載平衡的協(xié)議可被一般地構(gòu)建在存儲器高速緩存系統(tǒng)之上。在各種實施例中,此處描述的實施例可用于采用SQL 服務(wù)器、SQL AZURE⑧平臺、XST0R 框架等的系統(tǒng)。圖3是示出根據(jù)此處描述的實施例便于反應(yīng)式負(fù)載平衡的示例性、非限制性方法的流程圖。在310,方法300包括以適用于對多個設(shè)備進(jìn)行負(fù)載平衡的第一時間粒度來對跨多個設(shè)備的多個負(fù)載進(jìn)行負(fù)載平衡。在320,方法300包括從多個設(shè)備的子集中的一個設(shè)備接收幫助信號,該幫助信號指示該多個設(shè)備的子集處的資源稀缺性,該多個設(shè)備適合于比第一粒度小得多的第二時間粒度。在330,方法300包括對該多個設(shè)備的子集進(jìn)行反應(yīng)性地負(fù)載平衡,包括分配來自該多個設(shè)備的子集以外的設(shè)備的資源以滿足資源稀缺性。在340,方法300包括從多個設(shè)備的子集以外的設(shè)備中的一個設(shè)備接收信息,該信息指示提供該設(shè)備的可用資源的成本。在某些實施例中,該信息基于拍賣模型。在某些實施例中,該信息基于來自對多個設(shè)備進(jìn)行輪詢的設(shè)備的還價。在350,方法300包括基于確認(rèn)該成本而接收對可用資源的使用。在某些實施例中,接收對可用資源的使用包括基于為提供可用資源的成本支付費用來接收使用。如下是便于反應(yīng)式負(fù)載平衡的另一個實施例。當(dāng)節(jié)點檢測到它已變?yōu)檫^載時,該節(jié)點經(jīng)由協(xié)議向中央負(fù)載平衡器發(fā)送幫助消息,該協(xié)議包含用于使中央負(fù)載平衡器的中央代理壓制該節(jié)點使其在指定時間內(nèi)不能發(fā)送更多幫助消息的工具。在其中負(fù)載平衡器不可用、節(jié)點最近剛被幫助過和/或未找到修復(fù)的情形中,壓制該節(jié)點是有用的。—旦中央代理接收并接受該幫助消息,則中央代理以本地化方式(而不是集中式方式)運行負(fù)載平衡算法以確定能否找到平衡掉請求幫助的節(jié)點的負(fù)載的解決方案,并且應(yīng)用所找到的任何修復(fù)。在某些實施例中,負(fù)載平衡的集中式方式包括在要求負(fù)載平衡器具有整個集群的最新視圖的同時進(jìn)行負(fù)載平衡。這種方法在計算上可能是昂貴的,并且可能生成不適當(dāng)?shù)膭幼?。例如,諸如移動的某些負(fù)載平衡操作無法在可接受的短的時間量內(nèi)完成。此外,反應(yīng)式負(fù)載平衡的意圖是響應(yīng)于已經(jīng)過載的節(jié)點,而執(zhí)行集中式負(fù)載平衡的現(xiàn)有負(fù)載平衡算法試圖平衡整個集群。在某些實施例中,在負(fù)載平衡器算法中可以執(zhí)行流控制。如果無法幫助節(jié)點(其可在集群執(zhí)行更關(guān)鍵的任務(wù)時發(fā)生),如果最近已經(jīng)幫助過該節(jié)點,或者如果該節(jié)點以前已經(jīng)請求過幫助并且未能找到解決方案,那么該節(jié)點將被標(biāo)記為受壓制的。如果該節(jié)點再一次要求幫助,則將使用所描述的NACK/幫助消息協(xié)議來發(fā)送回NACK消息。壓制時間已經(jīng)期滿時,將再一次允許幫助消息。在這些情形的某些中,雖然不是全部,如果集群的全局知識是已知的,那么可以執(zhí)行用于流控制的以上協(xié)議。在此處描述的實施例中,發(fā)送幫助消息的節(jié)點能夠確定其是否正在經(jīng)歷過多的負(fù)載,而不是等待將統(tǒng)計數(shù)據(jù)發(fā)送到中央負(fù)載平衡器并且隨后由中央負(fù)載平衡器確定節(jié)點是否是過載的。在某些實施例中,如果節(jié)點正在經(jīng)歷性能降級,則該節(jié)點確定其是過載的。性能降低可以是由該節(jié)點的引擎的扼流導(dǎo)致的。例如,節(jié)點的引擎被配置為扼制與該節(jié)點相關(guān)聯(lián)的機器由于有限的資源而無法處理的用戶請求。對請求進(jìn)行扼制的處理比要求中央機構(gòu)確定該節(jié)點是否過載的方法更快。代替這種方法,節(jié)點本身通過檢測其活動(例如扼流) 并且響應(yīng)于這種檢測而對請求進(jìn)行扼制來確定其是否過載。在某些實施例中,基于窗口時間的采樣被用于確定該節(jié)點實際上是否過載。在該節(jié)點已經(jīng)確定其是過載的時間段期間采用基于窗口時間的采樣?;诖翱跁r間的采樣被用于避免由其中節(jié)點的引擎的扼流被稀疏地調(diào)用的情形所導(dǎo)致的在過載和非過載狀態(tài)之間的快速擺動。可以基于預(yù)定義的資源來確定性能降級,該預(yù)定義的資源包括但不限于中央處理單元(CPU)利用率和盤等待時間,由于某些資源是與機器無關(guān)的(例如消費者空間使用), 并且這些資源在被移至不同的機器的情況下也不會改善。如下是上述NACK/幫助消息協(xié)議。在協(xié)議期間采用幫助消息和NACK消息。幫助消息包含從正在請求幫助的節(jié)點收集的最新的統(tǒng)計數(shù)據(jù)。在某些實施例中,輔助數(shù)據(jù)也可被包括并用于通知負(fù)載平衡器其應(yīng)采取什么動作。NACK消息是從負(fù)載平衡器發(fā)出的,并且是使負(fù)載平衡器通知節(jié)點在預(yù)定義的時間量內(nèi)停止發(fā)送幫助消息的消息。由此,NACK消息被用作一種形式的流控制以控制來自請求幫助的節(jié)點的幫助消息通信量。無論中央負(fù)載平衡器何時從節(jié)點接收幫助消息,NACK消息都被發(fā)送到該節(jié)點,中央負(fù)載平衡器不期望從該節(jié)點接收任何附加幫助消息。故障容忍通過使過載節(jié)點持續(xù)地發(fā)送幫助消息——除非它們被來自該節(jié)點的 NACK消息顯式地壓制——而在該協(xié)議中產(chǎn)生。由于該協(xié)議已經(jīng)重新發(fā)送幫助消息,因此該故障容忍允許該協(xié)議使重發(fā)功能的ACK消息居先。如果丟失了幫助消息,那么只要節(jié)點保持過載并且該節(jié)點沒有接收到NACK消息,則該節(jié)點將繼續(xù)地發(fā)送新的幫助消息。如果NACK消息丟失了(并因此未被該節(jié)點接收),若該節(jié)點繼續(xù)向中央負(fù)載平衡器發(fā)送幫助消息,則中央負(fù)載平衡器將簡單地重新發(fā)送另一個NACK消息,參見圖2。圖4、5和6是示出根據(jù)此處描述的實施例便于反應(yīng)式負(fù)載平衡的示例性、非限制性方法的流程圖。首先轉(zhuǎn)向圖4,在410,方法400包括從節(jié)點集群內(nèi)的一個節(jié)點接收幫助消息。該幫助消息由節(jié)點基于該節(jié)點標(biāo)識了該節(jié)點處的過載狀態(tài)而生成。幫助消息包括由該節(jié)點收集的統(tǒng)計數(shù)據(jù),并且在某些情形中,還包括指示該節(jié)點所需的動作的信息。在420,方法400包括響應(yīng)于接收幫助消息確定能否為該節(jié)點執(zhí)行負(fù)載平衡。在430,方法400包括不允許預(yù)定義時間內(nèi)來自該節(jié)點的附加幫助消息。在某些實施例中,預(yù)定義時間為300秒,盡管可以采用任何合適的秒鐘數(shù)。可以響應(yīng)于確定以下之一而采用不允許無法為該節(jié)點執(zhí)行負(fù)載平衡,在第一預(yù)定義過去時間間隔期間為該節(jié)點執(zhí)行負(fù)載平衡,在第二預(yù)定義過去時間間隔期間為該節(jié)點嘗試負(fù)載平衡但沒有負(fù)載平衡可被執(zhí)行,或者幫助消息已被接收并且處理尚未完成。在440,方法400包括在預(yù)定義時間已經(jīng)過去之后允許來自該節(jié)點的附加幫助消息。在450,方法400包括向節(jié)點發(fā)送否定確認(rèn)信號以在預(yù)定義時間內(nèi)壓制來自該節(jié)點的不允許的附加幫助消息?,F(xiàn)在轉(zhuǎn)向圖5,方法500包括如上所描述的方法400的410-440。在510,方法500 包括執(zhí)行基于窗口時間的采樣以確定節(jié)點是否已經(jīng)正確地將其自身標(biāo)識為具有過載狀態(tài)。 在某些情形中,在節(jié)點基于性能降級標(biāo)識過載狀態(tài)的時間間隔期間執(zhí)行基于窗口時間的采樣,該性能降級由該節(jié)點在該節(jié)點標(biāo)識。以多種不同的方式來標(biāo)識性能降級,包括但不限于,標(biāo)識由于節(jié)點處的有限資源該節(jié)點正在對在該節(jié)點接收的請求進(jìn)行扼制?,F(xiàn)在轉(zhuǎn)向圖6,方法600包括如上所描述的方法400的410-440。在610,方法600 包括響應(yīng)于接收到幫助消息而拒絕將確認(rèn)信號傳輸?shù)焦?jié)點。由此,在該方法中不采用確認(rèn)信號。
參照圖7和8,所示的是示出用于幫助消息協(xié)議的狀態(tài)的兩個狀態(tài)機。圖7是示出本地數(shù)據(jù)庫節(jié)點上輪詢線程的狀態(tài)的框圖。輪詢線程的目的是使DN的LB代理響應(yīng)于DN 的過度扼流并向反應(yīng)式負(fù)載平衡器請求幫助。輪詢線程響應(yīng)于來自MN的NACK消息并將幫助消息的字段填充為MN。字段包括關(guān)于DN的負(fù)載度量、節(jié)點處的每個分區(qū)的事務(wù)日志大小的信息(以幫助MN確定執(zhí)行交換并中止全部待決事務(wù)是否過于昂貴)。如圖7所示,一個狀態(tài)機運行在本地DN上以處理將幫助消息發(fā)送到中央負(fù)載平衡器。首先轉(zhuǎn)向圖7,在710,DN處于睡眠狀態(tài)。在720處,幫助消息協(xié)議開始。狀態(tài)機可在睡眠模式和協(xié)議的開始之間震蕩,如圖7所示。例如,如果DN的負(fù)載平衡代理未在DN 標(biāo)識過度扼流,則狀態(tài)機可移回到睡眠狀態(tài)。在730,DN移至被標(biāo)識出扼流的狀態(tài)。在740,如果DN最近沒有接收過NACK消息, 則DN移至幫助消息被從DN發(fā)送到中央負(fù)載平衡器的狀態(tài)740。在發(fā)送幫助消息之后,DN 可以移回到位于710的睡眠狀態(tài)。如果DN最近已經(jīng)接收到NACK消息,并且該NACK消息尚未期滿,則DN移回到位于 710的睡眠狀態(tài)。輪詢線程包括輪詢間隔(以秒鐘來表示),該輪詢間隔標(biāo)識輪詢線程調(diào)用之間的時間量。在某些實施例中,這是30秒。在某些實施例中,這還可以是與引擎扼流相關(guān)聯(lián)的
12時間段的倍數(shù)(例如10秒),而不是以秒計的具體時間。輪詢線程還包括統(tǒng)計數(shù)據(jù)窗口(以秒來表示)。統(tǒng)計數(shù)據(jù)窗口確定要評估過去多久遠(yuǎn)以確定請求被DN扼制的時間的百分比。該值可以是扼流運行之間的時間間隔的倍數(shù) (例如10秒)。然而,輪詢線程可以接受任意值(例如300秒、或5分鐘)。在某些實施例中,這可以是扼流間隔的計數(shù)或數(shù)目,而不是秒鐘數(shù)。輪詢線程還結(jié)合了扼流時間閾值(表達(dá)為比率)。如果統(tǒng)計數(shù)據(jù)窗口中花費在扼流上的時間百分比大于扼流時間閾值,則DN可以經(jīng)由此處描述的幫助消息協(xié)議向全局負(fù)載平衡器請求幫助。在某些實施例中,扼流時間閾值是0. 80或80%。在某些實施例中,如果扼流事件的比率大于過去的統(tǒng)計數(shù)據(jù)窗口的扼流時間閾值,并且如果扼流的原因純粹是預(yù)期的瞬時過載,則輪詢線程將發(fā)出幫助消息。在發(fā)出幫助消息之后,輪詢線程隨后進(jìn)入睡眠直到它被調(diào)度以再一次運行(如圖7所示)。輪詢線程不會等待ACK/NACK,因為如果原始幫助消息丟失并且如果過度扼流仍在發(fā)生,那么輪詢線程的下一次運行將發(fā)送另一個幫助消息。由此,在負(fù)載平衡器不發(fā)送ACK消息來確認(rèn)對幫助消息的接收的情況下設(shè)計協(xié)議。圖8是示出全局負(fù)載平衡器上反應(yīng)式負(fù)載平衡線程的狀態(tài)的框圖。如圖8所示, 另一個狀態(tài)機在中央負(fù)載平衡器上運行并控制幫助消息處理。現(xiàn)在轉(zhuǎn)向圖8,示出并描述了全局負(fù)載平衡器上反應(yīng)式負(fù)載平衡線程的狀態(tài)。在810,在全局負(fù)載平衡器處接收幫助消息。在820,如果幫助消息將要被丟棄并且不會由全局負(fù)載平衡器處理,則全局負(fù)載平衡器可移至狀態(tài)820,在該狀態(tài)820下,該全局負(fù)載平衡器向DN發(fā)送NACK消息的。在發(fā)送NACK 消息之前,全局負(fù)載平衡器將NACK的超時值設(shè)置為預(yù)定義時間。在該預(yù)定義時間期間,不允許或壓制DN發(fā)送附加幫助消息。如果來自發(fā)送的DN的幫助消息正被處理,則全局負(fù)載平衡器移至狀態(tài)830,在該狀態(tài)830下,全局負(fù)載平衡器的狀態(tài)被保持直到對幫助消息的處理和/或?qū)τ贒N的資源分配完成。如果幫助消息未被處理并且該幫助消息不會被丟棄,則全局負(fù)載平衡器將幫助消息置于待決請求隊列中并移至狀態(tài)830??稍谪?fù)載平衡器配置多個參數(shù)以便于此處的處理。例如,可為分區(qū)的日志的最大日志大小設(shè)置閾值(例如1MB(1048576字節(jié))),該分區(qū)可以作為反應(yīng)式負(fù)載平衡的一部分被重新定位。作為另一個示例,可以為DN在為該DN于其最近的分配后可請求反應(yīng)式負(fù)載平衡分配之前必須等待的時間量設(shè)置參數(shù)(例如300秒)。作為另一個示例,可以為DN在該DN于最近的請求未產(chǎn)生解決方案后可請求反應(yīng)式負(fù)載平衡分配之前必須等待的時間量設(shè)置參數(shù)(例如DN 300秒)。這是為了避免在未出現(xiàn)合適的分配時來自DN的過多的請求。作為另一個示例,可以為DN在該DN于其已經(jīng)達(dá)到過度幫助請求計數(shù)閾值后可請求反應(yīng)式負(fù)載平衡分配之前必須等待多久設(shè)置參數(shù)(例如3600秒)。作為另一個示例,可以為用于對給定DN上的成功的負(fù)載平衡操作的數(shù)目進(jìn)行計數(shù)的窗口長度有多長設(shè)置參數(shù)(例如3600秒)。作為另一個示例,可以為DN節(jié)點被負(fù)載平衡器列入黑名單之前所允許的時間間隔內(nèi)有多少成功的負(fù)載平衡操作來設(shè)置參數(shù)(例如3)。
現(xiàn)在轉(zhuǎn)向圖9,所示的是用于DN反應(yīng)式負(fù)載平衡狀態(tài)的狀態(tài)機。如所示的,在910, DN處于安靜狀態(tài)。在安靜狀態(tài)中,幫助消息已被接收供在中央負(fù)載平衡器處理。如果幫助消息已被中央負(fù)載平衡器接收并丟棄,則DN可被從安靜狀態(tài)移至計時拒絕狀態(tài)。計時拒絕狀態(tài)是從DN 202接收的任何幫助消息將從MN 204接收NACK直到預(yù)定義指定時間的狀態(tài)。在920,如果所接收的幫助消息被傳遞到中央負(fù)載平衡器處的隊列,則DN移至進(jìn)行中狀態(tài)。進(jìn)行中狀態(tài)是幫助消息已被接收,或者位于已過濾幫助消息隊列中,或者目前正被麗204處理的狀態(tài)。接收之后未被丟棄的幫助消息經(jīng)由生產(chǎn)者-消費者隊列被轉(zhuǎn)發(fā)給反應(yīng)式負(fù)載平衡器線程。如果隊列已滿,則接收消息線程將簡單地丟棄幫助消息。這是允許的,因為如果 DN仍然需要幫助,DN隨后將在下一次輪詢間隔重新發(fā)送幫助消息。在某些實施例中,如果幫助消息是從已經(jīng)處于進(jìn)行中狀態(tài)的DN接收的,則負(fù)載平衡器的接收線程將試圖在消息隊列中尋找來自該DN的先前的消息,并更新該消息以保持隊列中的消息是最新的。如果未發(fā)現(xiàn)消息,則第二幫助消息被丟棄。在930,如果已處理的幫助消息被拒絕(雖然是預(yù)定義時間),則DN移至計時拒絕狀態(tài)。在計時拒絕狀態(tài)中,如果幫助消息已被接收并且預(yù)定義時間已經(jīng)過去,則DN可移至位于910的安靜狀態(tài)。在圖1-9此處描述的實施例中,并且為了說明性目的使用來自圖1的附圖標(biāo)記,每個DN 102負(fù)責(zé)檢測各個DN 102的過度扼流,并且向麗114上的負(fù)載平衡器通知DN 102處正被應(yīng)用過度扼流。MN 114隨后負(fù)責(zé)通過試圖重新分配資源以解決過度扼流,隨后通過將資源分配發(fā)送給適合的DN 102,或者如果MN 114未標(biāo)識合適的資源分配則拒絕從DN 102 接收的對幫助的請求來響應(yīng)于幫助請求。此外,功能可基于在DN 102執(zhí)行的過度扼流檢測來分布,而MN 114執(zhí)行大量的計算以確定資源分配(例如確定應(yīng)當(dāng)如何移動分區(qū)負(fù)載)。雖然此處描述的實施例利用了用于負(fù)載平衡的集中式?jīng)Q策制定(例如,集中式負(fù)載平衡器執(zhí)行資源分配),但決策制定組件可以是分布式而非集中式以改善系統(tǒng)的可縮放性,并降低中央決策制定者導(dǎo)致的瓶頸的可能性。在實施例中,其中決策制定是分布式的, 負(fù)載平衡隨后變?yōu)榉羌惺?。在某些實施例中,并非所接收的全部幫助消息實際上都由反應(yīng)式負(fù)載平衡器來處理。由于負(fù)載平衡機制目前正忙于重新配置,節(jié)點最近被授予資源分配,或者處于各種原因節(jié)點被列入黑名單,某些幫助消息被丟棄。示例性聯(lián)網(wǎng)和分布式環(huán)境本領(lǐng)域普通技術(shù)人員可以理解,此處所描述的分布式事務(wù)管理系統(tǒng)與方法的各實施例可以結(jié)合任何計算機或其它客戶機或服務(wù)器設(shè)備來實現(xiàn),該任何計算機或其它客戶機或服務(wù)器設(shè)備可作為計算機網(wǎng)絡(luò)的一部分來部署或者被部署在分布式計算環(huán)境中,并且可以連接到可進(jìn)行快照的任何種類的數(shù)據(jù)存儲。就此,此處所描述的各實施例可以在具有任意數(shù)量的存儲器或存儲單元以及出現(xiàn)在任意數(shù)量的存儲單元上的任意數(shù)量的應(yīng)用程序和進(jìn)程的任何計算機系統(tǒng)和環(huán)境中實現(xiàn)。這包括但不限于具有部署在具有遠(yuǎn)程或本地存儲的網(wǎng)絡(luò)環(huán)境或分布式計算環(huán)境中的服務(wù)器計算機和客戶計算機的環(huán)境。分布式計算通過計算設(shè)備和系統(tǒng)之間的通信交換提供了計算機資源和服務(wù)的共享。這些資源和服務(wù)包括信息的交換、對于諸如文件等對象的高速緩存存儲和盤存儲。這些資源和服務(wù)還包括多個處理單元之間的處理能力共享以便進(jìn)行負(fù)載平衡、資源擴展、處理專門化,等等。分布式計算利用網(wǎng)絡(luò)連接,從而允許客戶機利用它們的集體力量來使整個企業(yè)受益。就此,各種設(shè)備可具有可如參考本發(fā)明的各實施例描述地參與并發(fā)控制機制的應(yīng)用程序、對象或資源。圖10提供了示例性的聯(lián)網(wǎng)或分布式計算環(huán)境的示意圖。該分布式計算環(huán)境包括計算對象1010、1012等以及計算對象或設(shè)備1020、1022、1024、1026,1028等,這些計算對象或設(shè)備可包括如由應(yīng)用程序1030、1032、1034、1036、1038表示的程序、方法、數(shù)據(jù)存儲、可編程邏輯等。可以理解的是,計算對象1010、1012等以及計算對象或設(shè)備1020、1022、10M、 1026,1028等可包括不同的設(shè)備,諸如PDA、音頻/視頻設(shè)備、移動電話、MP3播放器、個人計算機、膝上型計算機等。每一個計算對象1010、1012等以及計算對象或設(shè)備1020、1022、ΙΟΜ、1026、10 等可經(jīng)由通信網(wǎng)絡(luò)1040或直接或間接地與一個或多個其他計算對象1010、1012等以及計算對象或設(shè)備1020、1022、1024、1026,1028等通信。盡管在圖10中被示為單個元件,但通信網(wǎng)絡(luò)1040可包括向圖10的系統(tǒng)提供服務(wù)的其他計算對象或計算設(shè)備,和/或可表示未示出的多個互連網(wǎng)絡(luò)。每個計算對象1010、1012等或計算對象或設(shè)備1020、1022、1024、1026、 1028等還可以包含應(yīng)用程序,諸如可以利用API或其他對象、軟件、固件和/或硬件的、適于實現(xiàn)根據(jù)本發(fā)明的各實施例所提供的并發(fā)控制或與其進(jìn)行通信的應(yīng)用程序1030、1032、 1034、1036、1038。存在支持分布式計算環(huán)境的各種系統(tǒng)、組件和網(wǎng)絡(luò)配置。例如,計算系統(tǒng)可以由有線或無線系統(tǒng)、本地網(wǎng)絡(luò)或廣泛分布的網(wǎng)絡(luò)連接在一起。當(dāng)前,許多網(wǎng)絡(luò)被耦合至因特網(wǎng), 后者為廣泛分布的計算提供了基礎(chǔ)結(jié)構(gòu)并包含許多不同的網(wǎng)絡(luò),但任何網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)可用于變得與如各實施例中所描述的可串行化快照隔離系統(tǒng)相關(guān)聯(lián)的示例性通信。因此,可以利用諸如客戶機/服務(wù)器、對等、或混合體系結(jié)構(gòu)等網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)的主機。“客戶機”是使用與它無關(guān)的另一類或組的服務(wù)的一個類或組中的成員??蛻魴C可以是進(jìn)程,即大致上是請求由另一程序或進(jìn)程提供的服務(wù)的一組指令或任務(wù)。 客戶機進(jìn)程利用所請求的服務(wù),而不必“知道”有關(guān)其他程序或服務(wù)本身的任何工作細(xì)節(jié)。在客戶機/服務(wù)器體系結(jié)構(gòu)中,尤其在聯(lián)網(wǎng)系統(tǒng)中,客戶機通常是訪問由例如服務(wù)器等另一計算機提供的共享的網(wǎng)絡(luò)資源的計算機。在附圖10的圖示中,作為非限制性示例,計算對象或設(shè)備1020、1022、ΙΟΜ、1026、10 等可被認(rèn)為是客戶機而計算對象1010、 1012等可被認(rèn)為是服務(wù)器,其中計算對象1010、1012等作為提供數(shù)據(jù)服務(wù)的服務(wù)器,諸如從客戶機計算對象或設(shè)備1020、1022、10M、1026、1(^8等處接收數(shù)據(jù)、存儲數(shù)據(jù)、處理數(shù)據(jù)、向客戶機計算對象或設(shè)備1020、1022、10M、1026、10 等發(fā)送數(shù)據(jù),但任何計算機都可取決于環(huán)境而被認(rèn)為是客戶機、服務(wù)器或兩者。這些計算設(shè)備中的任一個都可以處理數(shù)據(jù), 或請求可包含此處一個或多個實施例所描述的用于快照隔離系統(tǒng)的并發(fā)控制技術(shù)的事務(wù)服務(wù)或任務(wù)。服務(wù)器通常是可通過諸如因特網(wǎng)或無線網(wǎng)絡(luò)基礎(chǔ)架構(gòu)等遠(yuǎn)程網(wǎng)絡(luò)或本地網(wǎng)絡(luò)訪問的遠(yuǎn)程計算機系統(tǒng)??蛻魴C進(jìn)程可以在第一計算機系統(tǒng)中活動,而服務(wù)器進(jìn)程可以在第二計算機系統(tǒng)中活動,它們通過通信介質(zhì)彼此通信,從而提供分布式功能并允許多個客戶機利用服務(wù)器的信息收集能力。按照用于執(zhí)行讀設(shè)置驗證或幻影檢查的技術(shù)來利用的任何軟件對象可以單獨提供或分布在多個計算設(shè)備或?qū)ο笊稀T谄渲型ㄐ啪W(wǎng)絡(luò)1040或總線是因特網(wǎng)的網(wǎng)絡(luò)環(huán)境中,例如,計算對象1010、1012 等可以是其他計算對象或設(shè)備1020、1022、10M、1026、10 等經(jīng)由諸如超文本傳輸協(xié)議 (HTTP)等多種已知協(xié)議中的任一種與其通信的web服務(wù)器。計算對象1010、1012等作為服務(wù)器還可用作諸如計算對象或設(shè)備1020、1022、1024、1026,1028等的客戶機,這可以是如分布式計算環(huán)境的特性。示例性計算設(shè)備如上所述,有利的是,此處所描述的技術(shù)可適用于期望執(zhí)行分布式事務(wù)管理的任何設(shè)備。因此,應(yīng)當(dāng)理解的是,構(gòu)想了所有種類的手持式、便攜式和其他計算設(shè)備和計算對象來用于各實施例,即,在設(shè)備可能期望從數(shù)據(jù)存儲讀事務(wù)或向數(shù)據(jù)存儲寫事務(wù)的任何地方。因此,以下在圖10中描述的通用遠(yuǎn)程計算機只是計算設(shè)備的一個示例。此外,數(shù)據(jù)庫服務(wù)器可包括以下諸如并發(fā)控制組件或事務(wù)管理器的通用計算機或其他數(shù)據(jù)庫管理服務(wù)器組件的一個或多個方面。盡管并非所需,但各實施例可以部分地經(jīng)由操作系統(tǒng)來實現(xiàn),以供設(shè)備或?qū)ο蟮姆?wù)開發(fā)者使用,和/或被包括在用于執(zhí)行此處所描述的各實施例的一個或多個功能方面的應(yīng)用軟件中。軟件可以在由諸如客戶機工作站、服務(wù)器或其他設(shè)備等一個或多個計算機執(zhí)行的諸如程序模塊等計算機可執(zhí)行指令的通用上下文中描述。本領(lǐng)域的技術(shù)人員可以理解,計算機系統(tǒng)具有可用于傳遞數(shù)據(jù)的各種配置和協(xié)議,并因此沒有特定配置或協(xié)議應(yīng)被認(rèn)為是限制性的。因此,圖11示出了其中可實現(xiàn)此處描述的各實施例的一個或多個方面的合適的計算系統(tǒng)環(huán)境1100的一個示例,盡管如上所述,計算系統(tǒng)環(huán)境1100僅為合適的計算環(huán)境的一個示例,并非對使用范圍或功能提出任何限制。也不應(yīng)將計算系統(tǒng)環(huán)境1100解釋為對在示例性計算系統(tǒng)環(huán)境1100中示出的組件中的任何一個或其組合有任何依賴或要求。參考圖11,用于實現(xiàn)一個或多個實施例的示例性遠(yuǎn)程設(shè)備包括計算機1110形式的通用計算設(shè)備。計算機1110的組件可以包括,但不僅限于,處理單元1120、系統(tǒng)存儲器 1130,以及將包括系統(tǒng)存儲器的各種系統(tǒng)組件耦合到處理單元1120的系統(tǒng)總線1122。計算機1110通常包括各種計算機可讀介質(zhì),并可以是可由計算機1110訪問的任何可用介質(zhì)。系統(tǒng)存儲器1130可以包括諸如只讀存儲器(ROM)和/或隨機存取存儲器 (RAM)等易失性和/或非易失性存儲器形式的計算機存儲介質(zhì)。作為示例而非限制,系統(tǒng)存儲器1130還可包括操作系統(tǒng)、應(yīng)用程序、其他程序模塊、和程序數(shù)據(jù)。用戶可以通過輸入設(shè)備1140向計算機1110輸入命令和信息。監(jiān)視器或其他類型的顯示設(shè)備也經(jīng)由接口,諸如輸出接口 1150連接至系統(tǒng)總線1122。除監(jiān)視器之外,計算機還可以包括其他外圍輸出設(shè)備,如揚聲器和打印機,它們可以通過輸出接口 1150連接。計算機1110可使用至一個或多個遠(yuǎn)程計算機,諸如遠(yuǎn)程計算機1170的邏輯連接在網(wǎng)絡(luò)化或分布式環(huán)境中操作。遠(yuǎn)程計算機1170可以是個人計算機、服務(wù)器、路由器、網(wǎng)絡(luò) PC、對等設(shè)備或其他常見網(wǎng)絡(luò)節(jié)點、或任何其他遠(yuǎn)程媒體消費或傳輸設(shè)備,并且可以包括上面關(guān)于計算機1110所描述的任何或全部元件。圖11所示的邏輯連接包括諸如局域網(wǎng)(LAN) 或廣域網(wǎng)(WAN)等的網(wǎng)絡(luò)1172,但也可以包括其他網(wǎng)絡(luò)/總線。這樣的聯(lián)網(wǎng)環(huán)境在家庭、辦公室、企業(yè)范圍計算機網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見的。如上所述,盡管結(jié)合各種計算設(shè)備和網(wǎng)絡(luò)體系結(jié)構(gòu)描述了各示例性實施例,但基本概念可被應(yīng)用于其中期望高可靠性且處于高容量或高并發(fā)性的可能條件下的讀和/或?qū)懯聞?wù)的任何網(wǎng)絡(luò)系統(tǒng)和任何計算設(shè)備或系統(tǒng)。而且,存在實現(xiàn)相同或相似功能的多種方法,例如適當(dāng)?shù)腁PI、工具箱、驅(qū)動程序代碼、操作系統(tǒng)、控件、獨立或可下載軟件對象等,它們使得應(yīng)用和服務(wù)能夠使用事務(wù)并發(fā)控制技術(shù)。由此,從API (或其他軟件對象)的觀點以及從實現(xiàn)包括此處描述的確認(rèn)測試的并發(fā)控制的一個或多個方面的軟件或硬件對象構(gòu)想此處的各實施例。因此,此處描述的各實施例可以具有完全采用硬件、部分采用硬件并且部分采用軟件、以及采用軟件的方面。在本文中使用的詞語“示例性”意味著用作示例、范例或說明。為避免疑惑,本文公開的主題不受限于這樣的示例。此外,本文描述為“示例性”的任何方面或設(shè)計不必解釋成優(yōu)于其他方面或設(shè)計或比其他方面或設(shè)計有利,它也不旨在排除本領(lǐng)域的普通技術(shù)人員所知的等效示例性結(jié)構(gòu)和技術(shù)。而且,就術(shù)語“包括”、“具有”、“包含”和其他類似的詞語的使用而言,為避免疑惑,這樣的術(shù)語旨在以類似于術(shù)語“包括”作為開放的過渡詞的方式解釋而不排除任何附加或其他元素。如上所述,此處所述的各種技術(shù)可結(jié)合硬件或軟件,或在適當(dāng)時以兩者的組合來實現(xiàn)。如在此所使用的,術(shù)語“組件”、“系統(tǒng)”等同樣指的是計算機相關(guān)實體,或者是硬件、 硬件和軟件的組合、軟件或執(zhí)行中的軟件。例如,組件可以是,但不限于是,在處理器上運行的進(jìn)程、處理器、對象、可執(zhí)行碼、執(zhí)行的線程、程序和/或計算機。作為說明,運行在計算機上的應(yīng)用程序和計算機本身都可以是計算機組件。一個或多個組件可以駐留在進(jìn)程和/或執(zhí)行線程中,并且組件可以位于一個計算機內(nèi)和/或分布在兩個或更多的計算機之間。如前所述的系統(tǒng)是利用多個組件之間的交互來描述的??梢粤私猓@樣的系統(tǒng)和組件可以包括這些組件或其中指定的子組件,某些指定的組件或子組件,和/或附加的組件,并根據(jù)前述的內(nèi)容的各種置換和組合。子組件也可以作為可通信地耦合到其他組件的組件來實現(xiàn),而不是包括在父組件內(nèi)(層次性)。另外,應(yīng)注意到一個或多個組件可被組合成提供聚集功能的單個組件,或被分成若干單獨的子組件,且諸如管理層等任何一個或多個中間層可被設(shè)置成通信耦合到這樣的子組件以便提供集成功能。此處所描述的任何組件也可以與一個或多個此處沒有專門描述的但本領(lǐng)域技術(shù)人員廣泛地知道的其他組件進(jìn)行交互??紤]到以上描述的示例性系統(tǒng),參考各附圖的流程圖將也可以理解依照所描述的主題實現(xiàn)的方法。盡管為了說明簡潔起見,作為一系列框示出和描述了方法,但是,應(yīng)該理解,各實施例不僅限于所描述框的順序,一些框可以按與此處所描繪和描述的不同的順序進(jìn)行和/或與其他框并發(fā)地進(jìn)行。盡管經(jīng)由流程圖示出了非順序或分支的流程,但可以理解,可實現(xiàn)達(dá)成相同或類似結(jié)果的各種其他分支、流程路徑和框次序。此外,并非全部所示出的框都是實現(xiàn)下面所描述的方法所必需的。除了此處所描述的各實施例之外,可以理解,可以使用其他相似的實施例或者可對所述實施例作出修改和添加以便執(zhí)行對應(yīng)的實施例的相同或等效的功能而不背離這些實施例。此外,多個處理芯片或多個設(shè)備可共享此處所描述的一個或多個功能的執(zhí)行,并且類似地,存儲可以跨多個設(shè)備實現(xiàn)。因此,本發(fā)明不應(yīng)限于任何單個實施例,而是應(yīng)該根據(jù)
17所附權(quán)利要求書的廣度和范圍來解釋。
權(quán)利要求
1.一種計算機實現(xiàn)的方法,包括從節(jié)點集群內(nèi)的一個節(jié)點接收幫助消息410,其中所述幫助消息由所述節(jié)點基于所述節(jié)點標(biāo)識所述節(jié)點處的過載狀態(tài)而生成;響應(yīng)于接收所述幫助消息確定能否為所述節(jié)點執(zhí)行負(fù)載平衡420 ;在預(yù)定義時間內(nèi)不允許來自所述節(jié)點的附加幫助消息430 ;以及在所述預(yù)定義時間已經(jīng)流逝之后允許來自所述節(jié)點的所述附加幫助消息440。
2.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其特征在于,還包括向所述節(jié)點傳送否定確認(rèn)信號以在所述預(yù)定義時間內(nèi)壓制來自所述節(jié)點的附加幫助消息450。
3.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其特征在于,響應(yīng)于確定以下之一來執(zhí)行所述不允許所述附加幫助消息430 無法為所述節(jié)點執(zhí)行負(fù)載平衡,在第一預(yù)定義過去時間間隔期間為所述節(jié)點執(zhí)行負(fù)載平衡,在第二預(yù)定義過去時間間隔期間為所述節(jié)點嘗試負(fù)載平衡但沒有可執(zhí)行的負(fù)載平衡,或者所述幫助消息已被接收并且處理尚未完成。
4.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其特征在于,還包括執(zhí)行基于窗口時間的采樣以確定對所述過載狀態(tài)的標(biāo)識的準(zhǔn)確性510。
5.如權(quán)利要求4所述的計算機實現(xiàn)的方法,其特征在于,所述執(zhí)行基于窗口時間的采樣510包括響應(yīng)于基于由所述節(jié)點在所述節(jié)點處標(biāo)識的性能降級所標(biāo)識的所述過載狀態(tài), 執(zhí)行所述基于窗口時間的采樣。
6.如權(quán)利要求5所述的計算機實現(xiàn)的方法,其特征在于,如果所述節(jié)點標(biāo)識了扼制在所述節(jié)點處接收到的請求,則標(biāo)識所述性能降級。
7.如權(quán)利要求6所述的計算機實現(xiàn)方法,其特征在于,所述幫助消息包括由所述節(jié)點收集的統(tǒng)計數(shù)據(jù)。
8.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其特征在于,還包括響應(yīng)于接收所述幫助消息,拒絕將確認(rèn)信號傳輸?shù)剿龉?jié)點610。
9.一種計算機實現(xiàn)的方法,包括以適合于對多個設(shè)備進(jìn)行負(fù)載平衡的第一時間粒度來對跨所述多個設(shè)備的多個負(fù)載進(jìn)行負(fù)載平衡310;檢測來自所述多個設(shè)備中的設(shè)備的幫助信號320,所述幫助信號指示所述設(shè)備處的資源稀缺性,其中所述資源稀缺性適合于比所述第一粒度小得多的第二時間粒度;以及對所述設(shè)備進(jìn)行反應(yīng)性地負(fù)載平衡330以滿足所述資源缺陷性,包括分配來自其他設(shè)備的資源。
10.如權(quán)利要求9所述的計算機實現(xiàn)的方法,其特征在于,還包括從所述其他設(shè)備中的一個接收指示向所述設(shè)備提供可用資源的成本的信息340 ;以及基于對所述成本的確認(rèn)來接收對所述可用資源的使用350。
11.如權(quán)利要求10所述的計算機實現(xiàn)的方法,其特征在于,所述接收對所述可用資源的使用350包括基于支付所述成本的價格來接收使用。
12.如權(quán)利要求10所述的計算機實現(xiàn)的方法,其特征在于,所述信息是基于拍賣模型。
13.如權(quán)利要求10所述的計算機實現(xiàn)的方法,其特征在于,所述信息是基于來自對所述多個設(shè)備進(jìn)行輪詢的所述其他設(shè)備中的一個的還價。
14.如權(quán)利要求9所述的計算機實現(xiàn)方法,其特征在于,所述幫助信號包括由所述多個設(shè)備中的所述設(shè)備收集的統(tǒng)計數(shù)據(jù)。
15.如權(quán)利要求14所述的計算機實現(xiàn)方法,其特征在于,所述統(tǒng)計數(shù)據(jù)包括所述多個設(shè)備中的所述設(shè)備的工作負(fù)載活動水平。
全文摘要
本發(fā)明涉及負(fù)載平衡系統(tǒng)和方法。在一個實施例中,反應(yīng)式負(fù)載平衡器可從第一數(shù)據(jù)庫節(jié)點接收反饋,并且至少基于該反饋向第一數(shù)據(jù)庫節(jié)點分配資源。反饋是動態(tài)的并且包括指示第一數(shù)據(jù)庫節(jié)點的負(fù)載水平的信息。在某些實施例中,該反饋包括指示負(fù)載不足的第二數(shù)據(jù)庫節(jié)點的負(fù)載水平的信息。在其他實施例中,負(fù)載平衡由輪詢其上資源可用的一組設(shè)備(例如,蜂窩電話、個人計算機、PDA)的過載節(jié)點來執(zhí)行。具體而言,方法包括向設(shè)備輪詢關(guān)于該設(shè)備上的資源可用性,并且接收關(guān)于至少一個設(shè)備所提供的資源的價格信息。響應(yīng)于提供對價格的支付,過載的節(jié)點利用資源??梢圆捎门馁u模型或者出價/還價方法。
文檔編號G06F9/50GK102426545SQ201110354959
公開日2012年4月25日 申請日期2011年10月26日 優(yōu)先權(quán)日2010年10月27日
發(fā)明者D·洛, M·本范諾托, S·林加姆, 張侃敏 申請人:微軟公司