亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

在可伸縮存儲中的有效范圍分區(qū)拆分的制作方法

文檔序號:12141927閱讀:189來源:國知局
在可伸縮存儲中的有效范圍分區(qū)拆分的制作方法與工藝

包括服務(wù)器農(nóng)場、web服務(wù)等的分布式系統(tǒng)對于提供諸如計算和存儲資源等資源已變得日益常見。資源可由作為結(jié)構(gòu)化系統(tǒng)的一部分的服務(wù)器網(wǎng)絡(luò)提供,以便對遍及該網(wǎng)絡(luò)的數(shù)據(jù)進行更高效的存儲、檢索和查詢??赡芷谕麑⒐ぷ髫撦d跨各服務(wù)器分布,以便優(yōu)化資源使用、最大化吞吐、最小化響應(yīng)時間、避免這些服務(wù)器之一的過載、和/或?qū)崿F(xiàn)其它負載平衡目標(biāo)。然而,由于現(xiàn)代分布式系統(tǒng)的復(fù)雜性,有效且高效地確定負載平衡決策可能是充滿挑戰(zhàn)的。

概述

本公開部分涉及在可伸縮存儲中的有效范圍分區(qū)拆分,基本上如在至少一個附圖中所示和/或結(jié)合至少一個附圖所描述的,并且如在權(quán)利要求書中更完整地闡述的。在本公開的某些方面,跨分區(qū)的分區(qū)鍵范圍的通信量被跟蹤,并且基于所跟蹤的通信量該分區(qū)可被拆分成多個分區(qū)或以其他方式被修改。具體而言,跟蹤的通信量和對應(yīng)的工作負載可以是將來的通信量和對應(yīng)的將來的工作負載的預(yù)測,并因此可以形成用于各種負載平衡決策的基礎(chǔ)。

在一些方面中,本公開涉及基于所跟蹤的跨分區(qū)鍵范圍的通信量確定一個或多個參考鍵。參考鍵劃分所跟蹤的跨分區(qū)鍵范圍的通信量并且可以可選地對應(yīng)于一個拆分點,藉此基于所述參考鍵分區(qū)可以被拆分到多個分區(qū)中。例如,所述分區(qū)可以在參考鍵處被拆分或基本上在參考鍵處被拆分。

利用通信量值可以跟蹤所述通信量,其中每個通信量值可以對應(yīng)于分區(qū)鍵范圍的子范圍內(nèi)的通信量的一部分。而且,可以基于附加通信量來將通信量值更新到分區(qū)鍵范圍以在所跟蹤的通信量中包括所述附加通信量。以此方式,通信量值可以隨時間跟蹤通信量的分布。由于參考鍵可以從通信量值中被確定,所以,參考鍵可以基于所跟蹤的通信量的分布。

在某些方面中,本公開涉及確定與所跟蹤的通信量相對于參考鍵的變化率(即所跟蹤的通信量的分布)相對應(yīng)的參考鍵速度。參考鍵速度可以從任意數(shù)目的參考鍵中計算出,其可以對應(yīng)于不同的所跟蹤的通信量分布并且可以從公共度量中被導(dǎo)出。參考鍵速度可以形成用于負載平衡決策的基礎(chǔ),例如是否拆分或以其它方式修改分區(qū)。

本公開進一步涉及桶,所述桶具有定義桶的子范圍的邊界。桶可以具有量化落入桶中的所跟蹤的通信量的各部分的對應(yīng)的通信量值。所述桶的邊界可以被調(diào)整以在桶中更加均勻地分布通信量值。這可以包括合并、拆分或移動桶的邊界,這重新定義了桶的子范圍。參考鍵和參考鍵速度可以基于桶和/或邊界被確定。

在一些方面,本公開涉及在無需大量的且復(fù)雜的通信量數(shù)據(jù)的跟蹤、維護以及分析的情況下的基于所跟蹤的通信量的負載平衡決策。具體而言,參考鍵、參考鍵速度、桶、邊界和通信量值的各種組合可以被用于有效且高效地實現(xiàn)各種負載平衡決策。

提供本概述以便以簡化的形式介紹將在以下的詳細描述中進一步描述的一些概念。本概述不旨在標(biāo)識所要求保護的主題的關(guān)鍵特征或本質(zhì)特征,也不旨在獨立地用于幫助確定所要求保護的主題的范圍。

附圖簡述

在下面參考發(fā)土詳細地描述了本公開的實現(xiàn),在附圖中:

圖1是適于在本公開的各實現(xiàn)中使用的示例性計算環(huán)境的圖示;

圖2示出其中可采用本公開的實現(xiàn)的示例性系統(tǒng);

圖3示出了根據(jù)本公開的實現(xiàn)的將可伸縮存儲的一個分區(qū)拆分成多個分區(qū)的示例性拆分;

圖4A示出根據(jù)本公開的各實現(xiàn)的示例性分區(qū)鍵范圍;

圖4B示出根據(jù)本公開的各實現(xiàn)的示例性分區(qū)鍵范圍;

圖4C示出根據(jù)本公開的各實現(xiàn)的示例性分區(qū)鍵范圍;

圖5描繪了根據(jù)本公開的實現(xiàn)的用于對可伸縮存儲進行負載平衡的示例性方法的流程圖;

圖6描繪了根據(jù)本公開的實現(xiàn)的用于對可伸縮存儲進行負載平衡的示例性方法的流程圖;以及

圖7描繪了根據(jù)本公開的實現(xiàn)的用于對可伸縮存儲進行負載平衡的示例性方法的流程圖。

詳細描述

此處用細節(jié)來描述本發(fā)明的各實施例的主題以滿足法定要求。然而,描述本身并非旨在限制本專利的范圍。相反,發(fā)明人已設(shè)想所要求保護的主題可結(jié)合其它當(dāng)前或未來技術(shù)以其它方式來實施,以包括不同的步驟或類似于本文中所描述的步驟的步驟組合。此外,盡管術(shù)語步驟摂和/或框摂可在此處用于指示所采用的方法的不同元素,但除非而且僅當(dāng)明確描述了各個步驟的順序時,術(shù)語不應(yīng)被解釋為意味著此處公開的各個步驟之中或之間的任何特定順序。

本公開部分涉及負載平衡可伸縮存儲。在一個方面,被分配給服務(wù)器的各分區(qū)以鍵空間的形式被實現(xiàn)。所述分區(qū)可以對應(yīng)于分區(qū)鍵范圍,在其中一個分區(qū)對應(yīng)于在低分區(qū)鍵和高分區(qū)鍵之間的分區(qū)鍵的范圍。分區(qū)鍵的范圍可以是鄰近的,以作為鍵空間的部分。訪問請求可以被用于訪問分區(qū)中的數(shù)據(jù)并可以對應(yīng)于在該分區(qū)的分區(qū)鍵范圍中的各分區(qū)鍵。訪問請求利用了跨分區(qū)鍵范圍的通信量,這對應(yīng)于與該分區(qū)相關(guān)聯(lián)的工作負載。

在一些方面中,至少部分通過將由服務(wù)器主存的一個分區(qū)拆分成多個分區(qū)來實現(xiàn)負載平衡。所述多個分區(qū)可以由可伸縮存儲的不同的服務(wù)器來主存,這樣在缺少拆分的情況下將在服務(wù)器上被單獨利用的將來的通信量和對應(yīng)的將來的工作負載可以代之以被分布在不同的服務(wù)器中。以此方式,將來的工作負載可以在可伸縮存儲的各服務(wù)器之間進行平衡。

在本公開的某些方面,跨分區(qū)的分區(qū)鍵范圍的通信量被跟蹤,并且基于所跟蹤的通信量該分區(qū)可被拆分成多個分區(qū)。具體而言,所跟蹤的通信量和對應(yīng)的工作負載是將來的通信量和對應(yīng)的將來的工作負載的預(yù)測,并因此可以形成用于確定是否要拆分該分區(qū)和/或在分區(qū)的分區(qū)鍵范圍中的哪里拆分該分區(qū)的基礎(chǔ)。

參考圖1,圖1是適于在本公開的各實現(xiàn)中使用的示例性計算環(huán)境的圖示。具體而言,示例性計算機環(huán)境被概括地示為并描繪為計算設(shè)備100。計算設(shè)備100只是合適的計算環(huán)境的一個示例,并且不旨在對本發(fā)明的使用范圍或功能提出任何限制。也不應(yīng)該將計算設(shè)備100解釋為對所示出的任一組件或其組合有任何依賴性或要求。

本公開的各實現(xiàn)可以在由計算機或諸如個人數(shù)據(jù)助理或其它手持式設(shè)備之類的其它機器執(zhí)行的計算機代碼或機器可使用指令的一般上下文中描述,該機器可使用指令包括諸如程序組件之類的計算機可執(zhí)行指令。一般而言,包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等的程序組件指的是執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的代碼。本公開的各實現(xiàn)可以在各種系統(tǒng)配置中實施,這些系統(tǒng)配置包括手持式設(shè)備、消費電子產(chǎn)品、通用計算機、專用計算設(shè)備等等。本公開的各實現(xiàn)也可以在其中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠程處理設(shè)備執(zhí)行的分布式計算環(huán)境中實施。

繼續(xù)參考圖1,計算設(shè)備100包括直接或間接耦合以下設(shè)備的總線102:存儲器104、一個或多個處理器106、一個或多個呈現(xiàn)組件108、輸入/輸出(I/O)端口110、I/O組件112、和電源114??偩€102表示可以是一條或多條總線(諸如地址總線、數(shù)據(jù)總線、或其組合)。雖然為了清楚起見利用線條示出了圖1的各設(shè)備,但是實際上,各組件的輪廓并不是那樣清楚,并且比喻性地來說,線條更精確地將是灰色的和模糊的。例如,可以將諸如顯示設(shè)備的呈現(xiàn)組件認為是I/O組件112之一。同樣,諸如一個或多個處理器106等處理器具有存儲器。本公開在此認識到這是本領(lǐng)域的特性,并重申,圖1僅僅說明了可以結(jié)合本公開的一個或多個實現(xiàn)來使用的示例性計算環(huán)境。諸如“工作站”、“服務(wù)器”、“膝上型計算機”、“手持式設(shè)備”等分類之間沒有區(qū)別,它們?nèi)慷急徽J為是在圖1的范圍之內(nèi)并且被稱為“計算機”或“計算設(shè)備”。

計算設(shè)備100通常包括各種計算機可讀介質(zhì)。計算機可讀介質(zhì)可以是可由計算設(shè)備100訪問的任何可用介質(zhì),而且包含易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)。作為示例而非限制,計算機可讀介質(zhì)可包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)包括以用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)的信息的任何方法和技術(shù)實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。

計算機存儲介質(zhì)包括RAM、ROM、EEPROM、閃存或其他存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其他光盤存儲、磁帶盒、磁帶、磁盤存儲或其他磁存儲設(shè)備。計算機存儲介質(zhì)不包括被傳播的數(shù)據(jù)信號。

通信介質(zhì)通常以諸如載波或其他傳輸機制之類的已調(diào)制數(shù)據(jù)信號來體現(xiàn)計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù),并且包括任何信息傳送介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”是指使得以在信號中編碼信息的方式來設(shè)定或改變其一個或多個特征的信號。作為示例而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接線連接之類的有線介質(zhì),以及諸如聲學(xué)、RF、紅外及其他無線介質(zhì)之類的無線介質(zhì)。上述的任意組合也應(yīng)包含在計算機可讀介質(zhì)的范圍內(nèi)。

存儲器104包括易失性和/或非易失性存儲器形式的計算機存儲介質(zhì)。存儲器104可以是可移動的、不可移動的、或其組合。示例性存儲器包括非瞬態(tài)、固態(tài)存儲器、硬盤驅(qū)動器、光盤驅(qū)動器等。計算設(shè)備100包括從諸如總線102、存儲器104或I/O組件112等各種實體讀取數(shù)據(jù)的一個或多個處理器106。一個或多個呈現(xiàn)組件108向人或其他設(shè)備呈現(xiàn)數(shù)據(jù)指示。示例性的一個或多個呈現(xiàn)組件108包括顯示設(shè)備、揚聲器、打印組件、振動組件等等。I/O端口110允許計算設(shè)備100在邏輯上耦合至包括I/O組件112的其他設(shè)備,其中某些設(shè)備可以內(nèi)置于計算設(shè)備100中。說明性I/O組件112包括話筒、操縱桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀、打印機、無線設(shè)備等等。

現(xiàn)在參考圖2,圖2示出了在其中本公開的實現(xiàn)可被采用的示例性系統(tǒng)。具體而言,圖2示出了根據(jù)本公開的實現(xiàn)的可伸縮存儲200的高等級架構(gòu)(在本文中也被稱為“分布式系統(tǒng)200”)。應(yīng)當(dāng)理解,此處所描述的這一和其他安排僅作為示例來闡明。作為所示的安排和元素的補充或替換,可使用其他安排和元素(例如機器、接口、功能、次序、以及功能聚集等),并且可完全省略某些元素。此外,本文所描述的許多元素是可以實現(xiàn)為分立或分布式組件或結(jié)合其他組件的、以及以任何合適的組合和在任何合適的位置的功能實體。此處被描述為由一個或多個實體執(zhí)行的各種功能可由硬件、固件和/或軟件來執(zhí)行。例如,各種功能可由執(zhí)行存儲在存儲器中的指令的處理器來執(zhí)行。

除了未示出的其它組件之外,分布式系統(tǒng)200還包括主機202(例如,分區(qū)主機202)、服務(wù)器204、206、208和210(例如,分區(qū)服務(wù)器204、206、208和210)、以及客戶端212(例如,分區(qū)客戶端212)。每個客戶端可駐留在任一類型的計算設(shè)備上,其可對應(yīng)于例如參考圖1描述的計算設(shè)備100。分布式系統(tǒng)200的組件可以通過網(wǎng)絡(luò)彼此通信,網(wǎng)絡(luò)包括但不限于一個或多個局域網(wǎng)(LAN)和/或廣域網(wǎng)(WAN)。盡管單個主機、四個服務(wù)器、以及單個客戶端在圖2中被示出,然而任何數(shù)量的主機、服務(wù)器和客戶端可在本公開的實現(xiàn)的范圍內(nèi)的分布式系統(tǒng)200內(nèi)被采用。

在分布式系統(tǒng)200中,諸如服務(wù)器204、206、208和210等服務(wù)器可被用來存儲和提供對存儲系統(tǒng)(例如結(jié)構(gòu)化存儲系統(tǒng))的訪問。主機202被配置成管理服務(wù)器。而且,客戶端212被配置成向應(yīng)用(諸如應(yīng)用216)提供對存儲系統(tǒng)的訪問。

可伸縮存儲200的被存儲數(shù)據(jù)在多個分區(qū)之間被拆分,這可以利用范圍拆分來實現(xiàn)。可伸縮存儲200可包括在多個分區(qū)之間劃分的鍵空間。每個分區(qū)可以具有對應(yīng)于鍵空間的子部分的分區(qū)鍵范圍。主機202被配置成將分區(qū)指派給服務(wù)器204、206、208和210,和/或分布式系統(tǒng)200的未示出的其它服務(wù)器。主機202還可被配置成確定這些分區(qū)中的一分區(qū)何時由于故障而不被任何服務(wù)器主存并將該分區(qū)重新指派給一不同服務(wù)器。主機202被進一步配置控制服務(wù)器204、206、208、210、和/或分布式系統(tǒng)200的未示出的其它服務(wù)器上的分區(qū)的負載平衡。此外,主機202被配置成關(guān)于任何分區(qū)和/或服務(wù)器204、206、208和210、和/或分布式系統(tǒng)200的未示出的其它服務(wù)器監(jiān)視資源利用。

分布式系統(tǒng)200的每個服務(wù)器(諸如服務(wù)器204、206、208和210)可負責(zé)提供到被指派給該服務(wù)器的0個到許多個分區(qū)的讀取和寫入訪問。而且,每個分區(qū)可被指派到這些服務(wù)器中的單個服務(wù)器。在圖2中示出的示例中,服務(wù)器204正在主存分區(qū)P1和P4,服務(wù)器206正在主存分區(qū)P2和P7、服務(wù)器208正在主存分區(qū)P3,而服務(wù)器210正在主存分區(qū)P5和P6。

客戶端212被鏈接到應(yīng)用(諸如應(yīng)用216)中。在一些實現(xiàn)中,客戶端212被配置成向被服務(wù)器204、206、208和210和/或分布式系統(tǒng)200的其它服務(wù)器所主存的一些分區(qū)(例如,分區(qū)P1、P2、P3、P4、P5、P6和P7)發(fā)出命令(例如訪問請求)。同樣在一些實現(xiàn)中,客戶端212可例如通過將通信請求定向到前端的虛擬IP和軟件負載平衡器或其它裝置來間接地與該應(yīng)用通信。前端可利用分區(qū)圖,諸如分區(qū)圖218,來確定哪個服務(wù)器正在主存(被映射到)哪些分區(qū)并可向那些服務(wù)器發(fā)送命令。命令的結(jié)果可從服務(wù)器接收回并可被傳遞至應(yīng)用。分區(qū)圖可存儲所述分區(qū)和所述分區(qū)被指派到的服務(wù)器之間的映射,并通??捎芍鳈C(諸如主機202)維護。

已經(jīng)描述了分布式系統(tǒng)200的各方面,要注意,任意數(shù)量的組件可被采用來實現(xiàn)本發(fā)明的范圍內(nèi)的理想功能。盡管為了清楚起見用線條示出了圖2的各組件,但是在實際上,各組件的描繪并不是那樣清楚,并且按比喻的說法,線條更精確地將是灰色的或模糊的。此外,雖然圖2的某些組件被描述成各單獨的組件,但是該描繪在性質(zhì)上和數(shù)量上是示例性的,且不應(yīng)該解釋為對本發(fā)明的所有實現(xiàn)的限制。

如同上面指示的,分布式系統(tǒng)200的服務(wù)器是被配置的主機分區(qū),由此為分區(qū)提供各種資源,所述資源可包括計算和存儲資源。分區(qū)進而可與一個或多個應(yīng)用的工作負載相關(guān)聯(lián),這可由服務(wù)器來適應(yīng)??赡芷谕{(diào)整工作負載跨各服務(wù)器的分布,以便優(yōu)化資源使用、最大化吞吐、最小化響應(yīng)時間、避免這些服務(wù)器之一的過載、和/或?qū)崿F(xiàn)其它負載平衡目標(biāo)。為了實現(xiàn)這些和其它負載平衡目標(biāo),一個或多個主機(諸如主機202)可被配置成在被指派給分布式系統(tǒng)200的服務(wù)器的分區(qū)上執(zhí)行各種負載平衡操作中的任何負載平衡操作。在各實現(xiàn)中,潛在工作負載平衡操作與被指派給可伸縮存儲的服務(wù)器的分區(qū)相關(guān)聯(lián)。下面描述一些示例性的負載平衡操作。然而,本公開不限于這些負載平衡操作。

注意,分區(qū)上的負載平衡操作不要求在存儲級別的數(shù)據(jù)的物理移動。例如,在各實現(xiàn)中,通過(例如,在分區(qū)圖中)將一分區(qū)的分區(qū)范圍指派(分區(qū)鍵范圍)重新指派或重新映射到新的服務(wù)器,該分區(qū)可被移動至另一服務(wù)器。具體而言,可伸縮存儲的各分區(qū)可各自對應(yīng)于正被存儲的數(shù)據(jù)對象的分區(qū)索引中的鍵空間的分區(qū)鍵范圍。示例性數(shù)據(jù)對象包括團塊(blob)、表和隊列。將分區(qū)指派給分區(qū)服務(wù)器可不四處移動分區(qū)所存儲的任何數(shù)據(jù)。而是,指派分區(qū)可將關(guān)于服務(wù)器負責(zé)該索引的哪(一個或多個)鍵范圍告知服務(wù)器。

可由主機202執(zhí)行的一種類型的負載平衡操作包括將所述分區(qū)之一移動至分布式系統(tǒng)200的各服務(wù)器中的一不同服務(wù)器(移動操作)。例如,假定服務(wù)器204具有過度的CPU利用率而服務(wù)器206具有低CPU利用率。分區(qū)P1可被從服務(wù)器204移動至服務(wù)器206,以便歸屬于分區(qū)P1的CPU利用率可轉(zhuǎn)而由服務(wù)器206適應(yīng)。這可釋放服務(wù)器204的過度的CPU利用率,由此關(guān)于CPU利用率改善負載平衡。例如,主機202可通過將分區(qū)從一個服務(wù)器卸載、將該分區(qū)指派給另一服務(wù)器、并且更新分區(qū)圖來反映該分區(qū)被指派給了新服務(wù)器來執(zhí)行移動。

可由主機202執(zhí)行的另一種類型的負載平衡操作包括將所述分區(qū)中的多個分區(qū)合并為要被指派給分布式系統(tǒng)200的各服務(wù)器中的一個服務(wù)器的一共享分區(qū)(合并操作)。例如,假定服務(wù)器204和206每個均具有太多分區(qū)。分區(qū)P1和P2可被合并為指派給服務(wù)器204或服務(wù)器206的單個分區(qū)。以此方式,服務(wù)器204和206中的至少一者可主存減少數(shù)量的分區(qū)。同樣,分區(qū)的合并不要求在存儲級別的數(shù)據(jù)的物理移動。而是,在各實現(xiàn)中,可通過更新分區(qū)圖來將各分區(qū)表示為被指派到所述服務(wù)器之一的單個分區(qū)來合并各分區(qū)。

作為另一個示例,可由主機202執(zhí)行的一種類型的負載平衡操作包括將所述分區(qū)之一拆分為要被指派給分布式系統(tǒng)200的各服務(wù)器中的多個服務(wù)器的多個分區(qū)(拆分操作)。例如,假定服務(wù)器204具有過度的CPU利用率而服務(wù)器206具有低CPU利用率。分區(qū)P1可在負載平衡操作中被拆分為多個分區(qū)。所述多個分區(qū)中的一者或兩者可被指派給與服務(wù)器204不同的服務(wù)器,諸如服務(wù)器206。以此方式,歸屬于分區(qū)P1的CPU利用率可通過所述服務(wù)器中的多個服務(wù)器來適應(yīng),由此減少服務(wù)器204上的總CPU利用率。同樣,分區(qū)的拆分不要求在存儲級別的數(shù)據(jù)的物理移動。而是,在各實現(xiàn)中,可通過更新分區(qū)圖來將一分區(qū)表示為被指派到服務(wù)器的多個分區(qū)來拆分該分區(qū)。

轉(zhuǎn)向圖3,圖3示出了根據(jù)本公開的實現(xiàn)的將可伸縮存儲的一個分區(qū)拆分成多個分區(qū)的示例性拆分。圖3包括分區(qū)層330,其可以由分區(qū)服務(wù)器和/或其它服務(wù)器(例如主服務(wù)器)組成,并可以管理在分布式系統(tǒng)中的數(shù)據(jù)抽象,例如圖2的可伸縮存儲200。數(shù)據(jù)抽象可以包括數(shù)據(jù)對象,其示例包括團塊、表和隊列。分區(qū)層330還可以管理數(shù)據(jù)對象的名字空間以及數(shù)據(jù)對象的分區(qū)。在所示的示例中,分區(qū)層330被配置成控制各分區(qū)(圖2中的分區(qū)P1、P2、P3、P4、P5、P6和P7中的任意分區(qū))到服務(wù)器336和338的指派,所述服務(wù)器可以對應(yīng)于在圖2中的服務(wù)器204、206、208和210中的任意服務(wù)器。

分區(qū)層330還可以控制在服務(wù)器之間分布工作負載的負載平衡,所述工作負載對應(yīng)于對由服務(wù)器主存的各分區(qū)的訪問請求(例如讀、寫和刪除請求)。例如,在一些實現(xiàn)中,負載平衡服務(wù)器包括將分區(qū)拆分成多個分區(qū),其中所述多個分區(qū)被指派給不同的服務(wù)器,以便由此在這些服務(wù)器之間分布所述工作負載。

圖3示出了將分區(qū)340拆分成子分區(qū)340a和340b的分區(qū)層330,所述子分區(qū)被分別指派給服務(wù)器336和338。所述拆分可以包括將對應(yīng)于分區(qū)340的分區(qū)鍵范圍劃分成子分區(qū)340a和340b。在所示的實現(xiàn)中,分區(qū)340是經(jīng)修改的主分區(qū)并且子分區(qū)340a對應(yīng)于分區(qū)340的經(jīng)減少的分區(qū)鍵范圍。子分區(qū)340b是新形成的,并且被放置在與主存子分區(qū)340a的服務(wù)器336不同的服務(wù)器338上。子分區(qū)340b對應(yīng)于分區(qū)340的分區(qū)鍵范圍的沒有被分區(qū)340a所包括的剩余部分。這樣,服務(wù)器336和338可以拆分否則將由服務(wù)器336主存的工作負載。

如上所述,在本公開的某些方面中,跨分區(qū)的分區(qū)鍵范圍的通信量被跟蹤,并且基于所跟蹤的通信量可以做出負載平衡決策。例如,分區(qū)可以基于所跟蹤的通信量被拆分成多個分區(qū)。所跟蹤的通信量和對應(yīng)的工作負載通常是將來的通信量和對應(yīng)的將來的工作負載的預(yù)測,并因此可以形成用于確定諸如是否要拆分該分區(qū)和/或在分區(qū)的分區(qū)鍵范圍中的哪里拆分該分區(qū)之類的負載平衡決策的基礎(chǔ)。根據(jù)本公開的各實現(xiàn),負載平衡決策可以在不利用可伸縮存儲的顯著開銷的情況下被有效且高效地做出。

現(xiàn)在可以參考圖4A,圖4A示出根據(jù)本公開的各實現(xiàn)的示例性分區(qū)鍵范圍。具體而言,圖4A描述了分區(qū)鍵范圍400,其可以對應(yīng)于在將分區(qū)拆分成多個分區(qū)之前的圖3的分區(qū)340的分區(qū)鍵范圍。

分區(qū)鍵范圍400包括在低分區(qū)鍵0和高分區(qū)鍵80之間的分區(qū)鍵的范圍。所示的分區(qū)鍵可以對應(yīng)于標(biāo)準(zhǔn)化鍵。具體而言,圖4A示出的分區(qū)鍵0、10、20、30、40、50、60、70和80的值可以不指示這些分區(qū)鍵之間的相對距離。換句話說,在任意給定的這些分區(qū)鍵對之間可以存在或創(chuàng)建任意數(shù)目的分區(qū)鍵。例如,在分區(qū)鍵0和10之間可以存在150個分區(qū)鍵,因為分區(qū)鍵并不需要被局限為整數(shù)值。然而,分區(qū)鍵的值指示了跨分區(qū)鍵范圍400的分區(qū)鍵的相對順序。具體而言,每個分區(qū)鍵可以被順序安排在分區(qū)鍵0和分區(qū)鍵80之間。

根據(jù)本公開的各實現(xiàn),跟蹤跨分區(qū)鍵范圍400的通信量。而且,可伸縮存儲(例如可伸縮存儲200)可以基于所跟蹤的通信量進行負載平衡。通信量可以包括對應(yīng)于分區(qū)鍵范圍400的分區(qū)鍵的訪問請求。隨著時間推移,訪問請求可以被定向成朝著沿分區(qū)鍵范圍400的各個分區(qū)鍵。因此,隨著各種分區(qū)鍵中的任意分區(qū)鍵變成一個或多個訪問請求的主體,通信量被沿分區(qū)鍵范圍400分布。分區(qū)層330可以被配置為隨時間跟蹤跨分區(qū)鍵范圍400的通信量的分布。通信量的分布可以形成用于負載平衡決策的基礎(chǔ)。

為了跟蹤跨分區(qū)鍵范圍400的通信量可以使用各種方案。這些方案在此處是非窮盡的。在一些實現(xiàn)中,利用對應(yīng)于所跟蹤的通信量的通信量值來跟蹤通信量。從任意通信量值到所有通信量值都可以對應(yīng)于多個分區(qū)鍵。然而,在一些實現(xiàn)中,至少一個通信量值可以對應(yīng)于單個分區(qū)鍵。

在通信量值對應(yīng)于多個分區(qū)鍵時,通信量值可以對應(yīng)于分區(qū)鍵范圍400的子范圍。通信量值可以對應(yīng)于在分區(qū)鍵范圍400的各子范圍內(nèi)的通信量的各部分。不同的通信量值可以對應(yīng)于分區(qū)鍵范圍400的不同的子范圍。當(dāng)訪問請求在子范圍內(nèi)時,該子范圍的對應(yīng)通信量值可以被確定和/或被更新以跟蹤該通信量。由于子范圍可以跨分區(qū)鍵范圍400分布,通信量值可以指示所跟蹤的通信量的跨分區(qū)鍵范圍400的分布。這可以允許基于所跟蹤的通信量的分布的負載平衡,而無需大量數(shù)據(jù)來跟蹤分布。

在一些實現(xiàn)中,從任意子范圍到所有子范圍都通過邊界描繪。邊界可以是用于確定哪個通信量值對應(yīng)于給定訪問請求的參考點。在這方面,邊界可以是分區(qū)鍵范圍400中的子范圍的參考點??梢詫?yīng)于訪問請求的分區(qū)鍵與所述邊界進行比較以確定該分區(qū)鍵對應(yīng)于哪個通信量值,這可以包括確定所述分區(qū)鍵位于哪對邊界之間。例如,在分區(qū)鍵位于第一邊界和第二邊界(例如相鄰的邊界)之間時,所述分區(qū)鍵可以被確定為落入在第一和第二邊界之間的子范圍內(nèi)。分區(qū)層330可以跟蹤并存儲邊界并且每個邊界可以對應(yīng)于分區(qū)鍵。跟蹤子范圍的邊界可以允許在無需大量數(shù)據(jù)來描繪該子范圍的情況下就確定訪問請求對應(yīng)于哪個子范圍和/或通信量值。

通信量值可以基于對子范圍和/或分區(qū)鍵的訪問請求的請求率。例如,可以響應(yīng)于正被朝向其對應(yīng)的子范圍或分區(qū)鍵定向的訪問請求來更新通信量值。響應(yīng)于訪問請求的對通信量值的更新可以是累積的,以便反映訪問請求率。例如,可以在每當(dāng)訪問請求落入分區(qū)鍵范圍400的其對應(yīng)的子范圍內(nèi)時更新通信量值。在一些方面中,通信量值可以對應(yīng)于響應(yīng)于訪問請求被遞增的計數(shù)器。因此,無需考慮通信量值可能基于的其它因素,在給定的時間段上,具有較多被定向到其的訪問請求的子范圍可以具有比具有較少被定向到其的訪問請求的子范圍更大的通信量值,由此對應(yīng)于在該時間段上的通信量的分布。

通信量值還可以基于訪問請求的請求等待時間。例如,一旦完成被朝向其對應(yīng)的子范圍定向的訪問請求,就可以確定并更新通信量值。當(dāng)通信量值被更新時,可以基于訪問請求的請求等待時間(例如訪問時間)將其遞增或以其它方式被調(diào)整。作為一個示例,調(diào)整的量可以與請求等待時間成比例。通信量值可以基于請求等待時間和請求率。通過這樣做,在一時間段上具有比其它子范圍更高請求率的子范圍可仍然具有與那些其它子范圍相比更小的通信量值。這可以由例如在該時間段上在所述子范圍中的比所述其它子范圍更高的等待時間而導(dǎo)致。

通信量值可以隨時間衰減。例如,通信量值可以具有衰減率。通信量值可以共享一個衰減率或可以以不同的速率衰減。在某個實現(xiàn)中,衰減率是指數(shù)的。隨時間衰減通信量值是一種跨分區(qū)鍵范圍使所跟蹤的通信量同時發(fā)生的方案。從前述描述中,應(yīng)該清楚通信量值可以基于請求率、請求等待時間、隨時間的衰減和/或其它因素的任意組合。

在一些實現(xiàn)中,通信量值可以對應(yīng)于桶。所述桶可以由分區(qū)層330,例如,利用對應(yīng)的桶索引值,來跟蹤,所述桶索引值可以被存儲以用于負載平衡。所述桶可以由上述邊界定義,并且每個桶可以表示對應(yīng)于所述通信量值之一的分區(qū)鍵。在一些實現(xiàn)中,每個桶可以由一對邊界定義。桶可以與一個或多個桶(例如相鄰的桶)共享一個或多個邊界,或所述邊界的任意邊界可以是桶獨占的。

在所示的示例中,分區(qū)鍵范圍400被劃分成各個桶,每個桶對應(yīng)于分區(qū)鍵的子范圍。圖4A以示例方式示出桶442、444、446、448、450、452、454和456。例如,圖4A示出了每個桶的對應(yīng)的分區(qū)鍵的子范圍。桶442具有從分區(qū)鍵0到分區(qū)鍵10的子范圍,桶444具有從分區(qū)鍵10到分區(qū)鍵20的子范圍,以此類推。

圖4A中的桶每個由一對邊界定義。該對邊界定義了對應(yīng)于一個桶的子范圍。描述了描繪各桶的邊界460a、460b、460、460d、460e、460f、460g、460以及460i。分區(qū)鍵值被示出在它們對應(yīng)的邊界之下。桶442具有定義分區(qū)鍵的對應(yīng)于桶442的子范圍的邊界460a和460b,桶444具有定義分區(qū)鍵的對應(yīng)于桶444的子范圍的邊界460b和460c。

在所示的實現(xiàn)中,借助于通信量值462a、462b、462c、462d、462e、462f、462g和462h跟蹤跨分區(qū)鍵范圍400的通信量468。各通信量值對應(yīng)于不同的子范圍以及分區(qū)鍵范圍400的各桶。例如,通信量值462a對應(yīng)于桶442,通信量值462b對應(yīng)于桶444,以此類推。通信量值可以對應(yīng)于通信量468的在其對應(yīng)的桶內(nèi)的一部分(由箭頭所示)。例如,對應(yīng)于在定義所述桶的該對邊界之間的分區(qū)鍵的訪問請求可以在通信量值中被考慮。

在圖4A,在圖4A中所示的各通信量值的各自高度可以對應(yīng)于隨時間的被朝著相應(yīng)桶定向的通信量468的量因此,圖4A指示了相對于桶和/或子范圍的跨分區(qū)鍵范圍400的通信量468的基本均勻的分布。然而,通信量值的高度可以依據(jù)通信量的分布而不同。例如,如果附加通信量被朝著桶442定向,通信量值462a可以更高以用填充桶442的比喻來描述附加通信量。

圖3的分區(qū)層330可以基于所跟蹤的分區(qū)鍵范圍的分布來做出負載平衡決策。例如,對應(yīng)于分區(qū)鍵范圍400的分區(qū)可以被拆分成多個分區(qū)以更加均勻地跨可伸縮存儲的服務(wù)器來分布負載。在一些實現(xiàn)中,負載平衡決策可以基于確定分區(qū)鍵范圍400中的一個或多個參考鍵。參考鍵可以可選地對應(yīng)于分區(qū)鍵范圍400中的拆分點,藉此基于一個或多個參考鍵,分區(qū)鍵范圍400的對應(yīng)的分區(qū)可以被拆分成多個分區(qū)。例如,一分區(qū)可以在參考鍵處被拆分或基本上在參考鍵處被拆分。

確定一個或多個參考鍵可以基于所跟蹤的跨分區(qū)鍵范圍400的通信量(例如基于所跟蹤的跨分區(qū)鍵范圍400的通信量分布)??梢曰谕ㄟ^一個或多個參考鍵跨分區(qū)鍵范圍400劃分所跟蹤的通信量來確定一個或多個參考鍵。在一些實現(xiàn)中,一個或多個參考鍵是基于通信量值的。例如,一個或多個參考鍵可以從通信量值中被計算出或以其他方式從通信量值中導(dǎo)出。

在又一些實現(xiàn)中,通過基于通信量值確定一個或多個子范圍或桶并選擇對應(yīng)于所述一個或多個子范圍或桶的分區(qū)鍵來確定所述一個或多個參考鍵。例如,分區(qū)層330可以基于通信量值確定參考鍵的子范圍(例如桶)并選擇對應(yīng)于該子范圍(例如桶)的分區(qū)鍵作為參考鍵。作為一個示例,參考鍵可以從在子范圍內(nèi)維持的經(jīng)采樣的鍵中選擇出。在一些實現(xiàn)中,可以基于定義子范圍的一個或多個邊界選擇參考鍵。例如,使用通信量值可以確定桶,并且參考鍵可以被選擇作為該桶的邊界之一。

在又一些實現(xiàn)中,可以從(如由通信量值所確定的)所跟蹤的通信量的中點計算參考鍵。分區(qū)層330可以確定并標(biāo)識與中點最接近的桶和/或邊界并基于該桶和/或邊界選擇參考鍵。例如,參考鍵可以被選擇作為在該桶內(nèi)的采樣鍵或作為該桶的邊界。

在所示的示例中,分區(qū)層330已經(jīng)選擇單個參考鍵466(但是在其它實現(xiàn)中,可以選擇多個參考鍵)。已經(jīng)基于通信量值462a、462b、462c、462d、462e、462f、462g和462h選擇參考鍵466。具體而言,參考鍵466已經(jīng)被選擇為桶450中的采樣鍵,該桶將最均勻地跨分區(qū)鍵范圍400劃分通信量值(例如最接近所跟蹤的通信量的中點的桶)。上面已經(jīng)描述了各種確定一個或多個參考鍵的方案。然而,可以使用許多不同的方案。

如上所示,所跟蹤的跨分區(qū)鍵范圍400的通信量分布可以隨時間改變?,F(xiàn)在可以參考圖4B,圖4B描述了根據(jù)本公開的各實現(xiàn)的示例性分區(qū)鍵范圍。具體而言,在圖4B中的描述可以對應(yīng)于正被跨分區(qū)鍵范圍400跟蹤的附加通信量472。在圖4A中的描述的時間,可以基于跨分區(qū)鍵范圍400的附加通信量472來更新所跟蹤的通信量。具體而言,可以基于附加通信量472的分布來更新通信量值462a、462b、462c、462d、462e、462f、462g和462h。如在圖4B中所示,通信量值462a是最大的,其指示附加通信量472已經(jīng)被集中在桶442中,而桶462g和462h具有所接收的比其它桶更低的通信量??梢允褂萌绫挥糜谶x擇參考鍵466的公共度量(即公共選擇標(biāo)準(zhǔn))來選擇參考鍵470。與參考鍵466不同的是,由于不同的所跟蹤的通信量分布,參考鍵470在桶448中。分區(qū)鍵范圍400可以可選地在參考鍵470處被拆分。

確定參考鍵是一種確定如何基于所跟蹤的通信量來修改用于負載平衡的分區(qū)(即在哪拆分該分區(qū))的示例性方案。除了確定如何修改用于負載平衡的分區(qū)之外或替代確定如何修改用于負載平衡的分區(qū),本公開的各實現(xiàn)涉及確定是否要修改(即拆分)用于負載平衡的分區(qū)。

在一些實現(xiàn)中,確定是否要修改用于負載平衡的分區(qū)是基于一個或多個參考鍵,其可以與上述的參考鍵相同或不同。在這方面,參考鍵可以被用于隨時間跟蹤跨分區(qū)鍵范圍400的通信量(例如通信量468和附加通信量472)的分布。例如,可以基于在時間t1的第一所跟蹤的通信量分布(例如通信量值、邊界和/或桶的第一安排)來確定一個或多個參考鍵。在時間t1之后的時間t2處,分區(qū)鍵范圍可以具有第二所跟蹤的通信量分布(例如通信量值、邊界和/或桶的第二安排)。所述一個或多個參考鍵可以被用作參考點以檢測第一和第二所跟蹤的通信量分布之間的差異或改變,并且可以相應(yīng)地做出負載平衡決策。

在一些實現(xiàn)中,所跟蹤的通信量分布中的差異或改變可以利用參考鍵速度來捕捉。參考鍵速度可以對應(yīng)于在所跟蹤的通信量的分布中相對于一個或多個參考鍵(例如參考鍵466和/或參考鍵470)的變化率。參考鍵速度可以從任意數(shù)目的參考鍵中計算出,其可以對應(yīng)于不同的所跟蹤的通信量分布并且可以從公共度量中被導(dǎo)出。出于公開簡明的目的,參考鍵速度被描述為藉此單個參考鍵在給定時間從給定所跟蹤的通信量分布中被采樣。然而,可采用任何數(shù)目的參考鍵。

如上所示,所跟蹤的跨分區(qū)鍵范圍400的通信量分布可以隨時間改變。例如,基于對分區(qū)鍵范圍400的分區(qū)鍵的訪問請求模式可以遞增通信量值。在一些實現(xiàn)中,周期性地(例如每隔N個毫秒)或隨時間在各個點處調(diào)整邊界,所述點可以具有不同的所跟蹤的通信量分布。邊界可以被調(diào)整以在所述邊界和由邊界所定義的桶中重新分布所跟蹤的通信量(例如通信量值)。具體而言,一個或多個邊界可以被改變以便對應(yīng)于所述邊界的一個或多個子范圍且進而桶也被改變。

在一些實現(xiàn)中,邊界被調(diào)整以便更加均勻地在跨分區(qū)鍵范圍400的邊界內(nèi)分布所跟蹤的通信量(例如通信量值)。調(diào)整邊界可以包括將不同的子范圍(例如桶)合并到合成的子范圍(例如單個桶)中。例如,相鄰的桶可以被合并入合成的或單個桶中,由此,所述合成的或單個桶可以由相鄰的桶的外邊界來定義。隨后,對應(yīng)于合成的子范圍(或合成的或單個桶)的通信量值可以接著是原始的各子范圍(或原始的各桶)的通信量值的總和。

調(diào)整邊界也可以包括將子范圍拆分成多個子范圍(例如桶)。例如,一個桶可以被拆分成多個桶,藉此邊界將對應(yīng)于該桶的子范圍拆分成多個子范圍,每個子范圍對應(yīng)于所述多個桶中的一個。隨后,對應(yīng)于所述多個子范圍(或桶)中的一個的通信量值可以是原始的子范圍(或原始的桶)的通信量值的一部分。

由于在一些實現(xiàn)中,給定的子范圍(例如桶)可以包括任意數(shù)目的分區(qū)鍵,拆分子范圍包括基于所采樣的該子范圍的鍵來選擇邊界的分區(qū)鍵。例如,每個子范圍可以具有對應(yīng)的所采樣的鍵。所采樣的鍵可以被存儲并隨時間被維護。例如,所采樣的鍵可以在調(diào)整邊界中被更新,以便當(dāng)桶的子范圍改變時所采樣的鍵對應(yīng)于它們正確的桶??梢砸匀我夂线m的方式選擇所采樣的鍵,并且所采樣的鍵可以對應(yīng)于先前的邊界或其它先前確定的分區(qū)鍵。在一些實現(xiàn)從中,拆分子范圍包括選擇一個桶的采樣鍵中最接近該桶的平均采樣鍵的一個采樣鍵。例如,所述桶的采樣鍵可以被存儲,并且中間鍵可以被選擇??梢园雌渌线m的方式來選擇采樣鍵。隨后,所述桶可以在所選的采樣鍵處被拆分。

調(diào)整所述邊界還可以包括在相鄰的桶之間移動邊界。例如,共享公共邊界的相鄰?fù)翱梢允沟迷摴策吔绫灰苿右员阍谶@些桶之間更加均勻分布通信量。調(diào)整公共邊界改變了對應(yīng)于每個桶的子范圍。例如,可以針對一個桶擴展子范圍以包括其它桶的子范圍的一部分。其它桶進而可以使得其對應(yīng)的子范圍消失。在一些實現(xiàn)中,可以基于各桶內(nèi)的采樣的鍵來調(diào)整所述公共邊界。例如,所述公共邊界可以被移動到采樣鍵的一個,該采樣鍵位于使其子范圍消失的桶內(nèi)。

在一些實現(xiàn)中,基本上隨時間維護或控制許多的桶。例如,分區(qū)層330可以被配置成,封頂(cap)桶的數(shù)目,保持桶的數(shù)目在一個范圍內(nèi),保持桶的數(shù)目恒定,或以其他方式在任意給定時間控制桶的數(shù)目(被動地或主動地)。在一些實現(xiàn)中,這可以通過將桶拆分和桶合并配對來完成,這樣一個桶的添加伴隨著一個桶的減去。

在一些實現(xiàn)中,調(diào)整邊界包括基于通信量值選擇第一和第二桶。例如,分區(qū)層330可以確定多個桶中具有最大通信量值的第一桶以及所述多個桶中具有最小通信量值的第二桶。所述調(diào)整邊界還可以基于將第一桶的第一通信量值與第二桶的第二通信量值相比較。例如,所述調(diào)整可以響應(yīng)于所述比較被執(zhí)行。在一些實現(xiàn)中,所述比較是基于第一和第二值之間的比率。例如,可以在所述比率超過閾值處執(zhí)行所述調(diào)整。在一些實現(xiàn)中,在第一值(例如最大的通信量值)大約大于第二值(例如最小通信量值)兩倍或更多倍處執(zhí)行所述調(diào)整。

還是在一些實現(xiàn)中,在所述第一和第二桶是相鄰的處,調(diào)整邊界可以包括在所述桶之間移動邊界(例如分開所述各桶的公共邊界)。在所述第一和第二桶不相鄰處,調(diào)整可以包括拆分第一桶(例如具有最大的通信量值)或第二桶??梢曰诰哂斜绕渌案蟮耐ㄐ帕恐祦磉x擇經(jīng)拆分的桶(例如第一桶)。在所述第一和第二桶不相鄰處,調(diào)整還可以包括將沒有拆分開的桶(例如第二桶)與另一個桶(例如相鄰于沒有拆分開的桶的一個桶)合并。例如,所述桶可以與一個相鄰的桶合并,該相鄰的桶具有可以與所述桶相鄰的任意桶的最小的通信量值。

調(diào)整所述桶可以被迭代地執(zhí)行,其中每次迭代可以在邊界內(nèi)更均勻地分布所述通信量,如果有可能的話。所述調(diào)整可以被配置使得隨時間缺少附加通信量時,隨著迭代累積分布可以達到平衡,這可以對應(yīng)于圖4A所示的作為示例的內(nèi)容。

參考圖4C,圖4C描述了根據(jù)本公開的各實現(xiàn)的示例性分區(qū)鍵范圍。具體而言,在對圖4B中示出的邊界的調(diào)整之后,圖4C中的描述可以對應(yīng)于圖4B的描述。所述邊界已經(jīng)被調(diào)整以在邊界中更加均勻地分布所跟蹤的通信量。這樣,在圖4C中示出的所跟蹤的通信量值可以已經(jīng)基于經(jīng)調(diào)整的邊界被更新。

作為在圖4B和4C之間的邊界調(diào)整的一個示例,分區(qū)層330可以基于桶442具有圖4B中的桶的最大通信量值來選擇桶442,并基于桶454具有圖4B中的桶的最小通信量值來選擇桶454。

基于桶442和454不是相鄰的,分區(qū)層330可以將桶442拆分成桶442a和442b,如在圖4C中所示。被選擇來拆分桶442的分區(qū)鍵具有5的分區(qū)鍵值(作為示例),并且可以是在拆分之前在桶442中維護的采樣的鍵。桶442a和442b具有相應(yīng)的通信量值474a和474b,其可對應(yīng)于通信量值462a的各部分(例如每個可以具有通信量值462a的一半)。還基于桶442和454是不相鄰的,分區(qū)層330可以基于桶456具有相鄰于桶454的任意桶的最小通信量值來將桶454和桶456合并。如所示,合成的桶454具有通信量值476,其可以對應(yīng)于通信量值462g和462h的總和。在桶442和454已經(jīng)鄰近時,分區(qū)層330可以代之以調(diào)整這些桶之間的公共邊界。

通過調(diào)整桶的邊界,經(jīng)更新的通信量被更加均勻地分布在所述邊界和桶內(nèi)。如上所述,所述邊界可以被迭代地調(diào)整,這可以更加均勻地分布來自圖4C中示出的內(nèi)容的經(jīng)更新的所跟蹤的通信量。在選擇哪些桶和/或邊界進行調(diào)整時,每次迭代可以考慮如上所述的類似因素。通過隨時間調(diào)整邊界,通過利用參考鍵來確定桶和/或邊界中隨時間的變化,參考鍵速度可以被確定。

參考鍵速度可以對應(yīng)于隨時間的距離。如可以在圖4C的描述中發(fā)現(xiàn)的,參考鍵466位于從左側(cè)起的第六個桶中,而在圖4A中,參考鍵466則位于從左側(cè)起的第五個桶中。這種對邊界的調(diào)整指示了附加通信量472已經(jīng)被集中在低于參考鍵466的分區(qū)鍵上。因而,可以基于已經(jīng)隨時間移動到圖4A和4C中所描述的所跟蹤的通信量分布(即時間)之間的一個桶(即距離)的參考鍵466來計算參考鍵速度。

距離是跨分區(qū)鍵范圍的,并且可以根據(jù)桶或邊界被表示,但是其它手段也可構(gòu)想。距離可以對應(yīng)于參考鍵的桶(例如桶索引)或邊界之間的差異。為了簡化距離計算,可以期望分區(qū)鍵范圍400對于在確定參考鍵速度中所使用的不同的所跟蹤的通信量分布具有相同數(shù)目的桶和/或邊界。還有,在參考鍵落入桶內(nèi)時,距離計算可以考慮一個桶一半或桶的某個其它分?jǐn)?shù)。在參考速度計算中所使用的距離可以是絕對值,這樣參考鍵速度不依賴于改變的方向。

在一些實現(xiàn)中,參考鍵速度是基于運行的采樣窗口(例如十分鐘的采樣)。每個采樣可以對應(yīng)于參考鍵,并包括對應(yīng)于在取得采樣時的時間的時間戳,以及指示當(dāng)取得采樣時參考鍵在所跟蹤的通信量分布中的位置的索引。參考鍵速度可以從運行的采樣窗口中計算出。這可以平滑掉參考鍵速度中的短期波動。例如,參考鍵速度可以基于所跟蹤的通信量分布相對于參考鍵的變化率的移動平均。而且,在一些實現(xiàn)中,參考鍵速度可以基于多個參考鍵和這些參考鍵的采樣。

高參考鍵速度可以對應(yīng)正在快速改變的所跟蹤的通信量的分布。在許多情況中,不期望修改在其中通信量分布改變得太過快速的分區(qū)。例如,如果分區(qū)要被拆分成多個分區(qū),可能無法保證將來的訪問請求在所述多個分區(qū)之間被充分地分布。因此,參考鍵速度可以形成用于確定是否要修改分區(qū)的有效基礎(chǔ)。

在一些實現(xiàn)中,所述修改分區(qū)是響應(yīng)于確定參考鍵速度不超過閾值。基于參考鍵速度超過閾值可以不修改分區(qū)。在參考鍵速度是基于每分鐘桶(BPM)時,可能合適的示例性的閾值是大約0.5BPM,但是注意可以使用其它距離和時間單位。而且,所述閾值可以(要么由分區(qū)層330自動地要么手動地)按需被調(diào)整或以其他方式被改變。

已經(jīng)發(fā)現(xiàn)基于參考鍵速度確定是否要修改分區(qū)在防止對可伸縮存儲的分區(qū)的不需要或過度的修改方面是一種有效的手段。例如,基于參考鍵速度的負載平衡可以對于某些通信量模式是彈性的,所述模式通常可能由于它們的檢測中的困難導(dǎo)致過度的修改。作為一個示例,基于分區(qū)鍵速度拆分一個分區(qū)可以是一種防止過度拆分(在其中所述分區(qū)經(jīng)受跨其分區(qū)鍵范圍的高序列性或半序列性訪問模式)的有效手段,例如,如果訪問請求是從分區(qū)鍵范圍400的分區(qū)鍵0到分區(qū)鍵80順序的,則可能不期望在訪問請求期間將所述分區(qū)拆分成多個分區(qū),因為它們可能很快就不再被定向朝著所述多個分區(qū)中的至少一個。通過適當(dāng)設(shè)定參考鍵速度的閾值,可以避免過度拆分。

確定是否要修改分區(qū)可以基于除了參考鍵速度之外的其它因素。例如,其它模式可以在參考鍵中被標(biāo)識,所述模式可以被作為負載平衡決策中的因素。這些附加因素可以增強各種類型的訪問模式的負載平衡。作為示例,在分區(qū)鍵范圍上的訪問模式包括子模式時,某些子模式可以主導(dǎo)參考鍵速度,所述子模式可以被考慮為其它因素。每個子模式可以對應(yīng)于不同的用戶賬戶或同一賬戶上的不同過程,如一些示例。

作為示例,一個子模式可以是跨分區(qū)鍵范圍的快速移動序列模式,并且另一個可以是可能僅將訪問請求引導(dǎo)到分區(qū)鍵的一個到少量個分區(qū)鍵的慢速移動模式。這些分區(qū)鍵的一個到少量個分區(qū)鍵可以是與快速移動序列模式基本上隔離的,并且因而期望拆分到與剩余分區(qū)鍵分開的一個分區(qū)中。然而,在沒有使用附加因素的情況下完成這種拆分可能是困難的。例如,快速移動序列模式可能引起參考鍵速度停留在用于修改(例如拆分)分區(qū)的閾值之上。

根據(jù)一些實現(xiàn),負載平衡決策還可以是基于參考鍵急降時間。參考鍵急降時間可以對應(yīng)于其針對參考鍵所花費的基本上在通信量的窗口(例如所訪問的分區(qū)鍵采樣的窗口)之外的時間?;趨⒖兼I急降時間超過閾值,分區(qū)可以被修改(例如拆分)。

通過維護在一時間窗口(例如大約三十到大約六十分鐘)上訪問的分區(qū)鍵的采樣可以實現(xiàn)參考鍵急降時間。而且,如上所述,參考鍵可以具有在該時間窗口期間在各時間間隔(例如大約每分鐘)處獲取的采樣??梢云谕摃r間間隔或采樣率是高于確定參考鍵速度中所使用的時間間隔或采樣率。

通過分析該時間窗口上的所訪問的分區(qū)鍵和參考鍵采樣來確定參考鍵急降時間。分區(qū)層330可以標(biāo)識在所訪問的分區(qū)鍵采樣之外的最新近的參考鍵采樣,并基于所標(biāo)識的參考鍵采樣計算參考鍵急降時間。當(dāng)所有的或基本上所有的所訪問的分區(qū)鍵采樣都在分區(qū)鍵范圍上的參考鍵采樣的相同側(cè)上時,在所訪問的分區(qū)鍵采樣之外的參考鍵可以被考慮。為此,所標(biāo)識的參考鍵采樣的時間戳可以被使用并與所訪問的分區(qū)鍵的時間戳相比較。在一些實現(xiàn)中,在所訪問的分區(qū)鍵采樣之外的參考鍵還是被考慮,直到所訪問的分區(qū)鍵采樣的閾值量在參考鍵采樣的相同側(cè)上。在參考鍵急降時間超過閾值時,分區(qū)還可以被拆分(例如在所標(biāo)識的參考鍵采樣處),甚至在參考鍵速度超過其前述閾值時。

其他示例

現(xiàn)在參考圖5,圖5描繪了根據(jù)本公開的實現(xiàn)的用于對可伸縮存儲進行負載平衡的示例性方法(例如圖5中的500)的流程圖。所述方法包括:跟蹤定義可伸縮存儲的分區(qū)的分區(qū)鍵范圍的子范圍的邊界內(nèi)的通信量(例如圖5中的580),調(diào)整所述邊界以更均勻地將所跟蹤的通信量分布在所述邊界中(例如圖5中的582),基于所調(diào)整的邊界確定參考鍵(例如圖5中的584),以及基于參考鍵將所述分區(qū)拆分成多個分區(qū)(例如圖5中的586)。

現(xiàn)在參考圖6,圖6描繪了根據(jù)本公開的實現(xiàn)的用于對可伸縮存儲進行負載平衡的示例性方法(例如圖6中的600)的流程圖。所述方法包括:確定所述可伸縮存儲的分區(qū)的分區(qū)鍵范圍內(nèi)的參考鍵,所述參考鍵跨所述分區(qū)鍵范圍劃分所跟蹤的通信量(例如圖6中的680),基于跨所述分區(qū)鍵范圍的附加通信量更新跨所述分區(qū)鍵范圍所跟蹤的通信量(例如圖6中的682),確定對應(yīng)于所跟蹤的通信量的分布相對于參考鍵的變化率的參考鍵速度(例如圖6中的684),并基于所述參考鍵速度將所述分區(qū)拆分成多個分區(qū)(例如圖6中的686)。

現(xiàn)在參考圖7,圖7描繪了根據(jù)本公開的實現(xiàn)的用于對可伸縮存儲進行負載平衡的示例性方法(例如圖7中的700)的流程圖。所述方法包括:確定所述可伸縮存儲的分區(qū)的分區(qū)鍵范圍內(nèi)的參考鍵,所述分區(qū)鍵范圍被劃分成具有定義所述分區(qū)鍵范圍的子范圍的邊界的桶,其中所述參考鍵是基于對應(yīng)于所述桶內(nèi)的所跟蹤的通信量的通信量值被確定的(例如圖7中的780),基于所述桶內(nèi)的附加通信量更新所述通信量值(例如圖7中的782),基于所更新的通信量值調(diào)整桶的邊界(例如圖7中的784),確定對應(yīng)于所跟蹤的通信量的分布相對于參考鍵的變化率的參考鍵速度(例如圖7中的786),并基于所述參考鍵速度將所述分區(qū)拆分成多個分區(qū)(例如圖7中的788)。

從而,根據(jù)本公開的實現(xiàn),可利用參考鍵、參考鍵速度、桶、邊界和通信量值的任意組合做出負載平衡決策。這些決策可以包括是否要修改分區(qū)和/或在哪里或如何修改分區(qū)。本發(fā)明的各實施例已被描述為說明性的而非限制性的??衫斫獾氖?,某些特征和子組合是有用的,并且可以加以利用而無需參考其它特征和子組合。這由權(quán)利要求所構(gòu)想的,并在權(quán)利要求的范圍內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1