首页 / 专利库 / 计算机网络 / 服务器 / 在可伸缩存储中的有效范围分区拆分

在可伸缩存储中的有效范围分区拆分

阅读:774发布:2021-06-03

专利汇可以提供在可伸缩存储中的有效范围分区拆分专利检索,专利查询,专利分析的服务。并且一种用于负载平衡的方法包括确定可伸缩存储的分区的分区键范围内的参考键,所述分区键范围被划分成具有定义了分区键范围的子范围的边界的桶。基于对应于所述桶内的所 跟踪 的通信量的通信量值确定参考键。基于所述桶内的附加通信量更新通信量值,并且基于经更新的通信量值调整边界。可以确定对应于所跟踪的通信量的分布相对于参考键的变化率的参考键速度。可以针对各参考键确定参考键急降时间。参考键可以被用于确定在哪拆分所述分区,并且参考键速度和参考键急降时间可以被用于确定是否要拆分所述分区。,下面是在可伸缩存储中的有效范围分区拆分专利的具体信息内容。

1.一种用于对可伸缩存储进行负载平衡的计算机实现的方法,所述方法包括:
确定所述可伸缩存储的分区的分区键范围内的参考键,所述分区键范围被划分成具有定义所述分区键范围的子范围的边界的桶,其中所述参考键基于与所述桶中所跟踪的通信量相对应的通信量值被确定;
基于所述桶内的附加通信量更新所述通信量值;
基于经更新的通信量值调整所述桶的边界;
确定与所跟踪的通信量的分布相对于所述参考键的变化率相对应的参考键速度,所述参考键速度对应于随时间的距离,所述距离对应于参考键的桶或边界之间的差异;
基于所述参考键速度将所述分区拆分成多个分区,其中将所述分区拆分成多个分区是响应于确定所述参考键速度不超过阈值
2.如权利要求1所述的计算机实现的方法,其特征在于,调整所述桶的边界更加均匀地将经更新的通信量值分布在所述桶中。
3.如权利要求1所述的计算机实现的方法,其特征在于,确定所述参考键是基于标识所述桶中的在所述通信量值的更新之前最接近所述通信量值的中点的一个桶。
4.如权利要求1所述的计算机实现的方法,其特征在于,调整所述边界包括将至少一些所述桶合并成单个桶。
5.如权利要求1所述的计算机实现的方法,其特征在于,调整所述边界包括将至少一个所述桶拆分成多个桶。
6.如权利要求1所述的计算机实现的方法,其特征在于,调整所述边界包括移动相邻桶之间的公共边界。
7.如权利要求1所述的计算机实现的方法,其特征在于,所述通信量值是基于对所述分区的访问请求的请求等待时间。
8.如权利要求1所述的计算机实现的方法,其特征在于,将所述分区拆分成多个分区是进一步基于参考键急降时间。
9.一种用于负载平衡可伸缩存储的计算机实现的方法,所述方法包括:
确定所述可伸缩存储的分区的分区键范围内的参考键,所述分区键范围被划分成具有定义所述分区键范围的子范围的边界的桶,所述参考键跨所述分区键范围划分所跟踪的通信量;
基于跨所述分区键范围的附加通信量更新跨所述分区键范围所跟踪的通信量;
确定对应于所跟踪的通信量的分布相对于所述参考键的变化率的参考键速度,所述参考键速度对应于随时间的距离,所述距离对应于参考键的桶或边界之间的差异;以及基于所述参考键速度将所述分区拆分成多个分区,其中将所述分区拆分成多个分区是响应于确定所述参考键速度不超过阈值。
10.如权利要求9所述的计算机实现的方法,其特征在于,所跟踪的通信量的分布的变化率是基于在所跟踪的通信量和经更新的所跟踪的通信量之间的变化。
11.如权利要求9所述的计算机实现的方法,其特征在于,其中所述参考键速度是基于运行的采样的窗口。
12.如权利要求9所述的计算机实现的方法,其特征在于,其中所述拆分所述分区导致所述多个分区中的一个被指派给所述可伸缩存储的第一服务器,而所述多个分区中的另一个被指派给所述可伸缩存储的第二服务器。
13.如权利要求9所述的计算机实现的方法,其特征在于,其中所述参考键速度是基于所述参考键的第一采样的第一时间戳和所述参考键的第二采样的第二时间戳。
14.一个或多个存储计算机可使用指令的计算机存储介质,当所述计算机可使用指令由计算设备执行时执行一种用于对可伸缩存储进行负载平衡的方法,所述方法包括:
跟踪定义所述可伸缩存储的分区的分区键范围的子范围的边界内的通信量,所述分区键范围被划分成具有定义所述分区键范围的子范围的边界的桶;
调整所述边界以更均匀地将所跟踪的通信量分布在所述边界中;
基于所调整的边界确定参考键;
基于所述参考键将所述分区拆分成多个分区,包括:
确定对应于所跟踪的通信量的分布相对于所述参考键的变化率的参考键速度,所述参考键速度对应于随时间的距离,所述距离对应于参考键的桶或边界之间的差异;以及基于所述参考键速度将所述分区拆分成多个分区,其中将所述分区拆分成多个分区是响应于确定所述参考键速度不超过阈值。
15.如权利要求14所述的一个或多个计算机存储介质,其特征在于,将所述分区拆分成多个分区是在基于所述参考键的拆分点处。
16.如权利要求14所述的一个或多个计算机存储介质,其特征在于,基于所调整的边界确定参考键包括标识所述子范围中最接近所跟踪的通信量的中点的一个子范围。
17.如权利要求14所述的一个或多个计算机存储介质,其特征在于,调整所述边界包括将所述子范围中的相邻子范围合并入由经调整的边界所定义的合成的子范围中。
18.如权利要求14所述的一个或多个计算机存储介质,其特征在于,将所述分区拆分成多个分区是进一步基于确定其针对参考键所花费的在通信量的窗口之外的时间。
19.如权利要求14所述的一个或多个计算机存储介质,其特征在于,包括维护所述子范围内的采样键,其中在调整所述边界时,至少一个所述边界被调整为所述采样键中的一个采样键。

说明书全文

在可伸缩存储中的有效范围分区拆分

[0001] 背景
[0002] 包括服务器农场、web服务等的分布式系统对于提供诸如计算和存储资源等资源已变得日益常见。资源可由作为结构化系统的一部分的服务器网络提供,以便对遍及该网络的数据进行更高效的存储、检索和查询。可能期望将工作负载跨各服务器分布,以便优化资源使用、最大化吞吐、最小化响应时间、避免这些服务器之一的过载、和/或实现其它负载平衡目标。然而,由于现代分布式系统的复杂性,有效且高效地确定负载平衡决策可能是充满挑战的。
[0003] 概述
[0004] 本公开部分涉及在可伸缩存储中的有效范围分区拆分,基本上如在至少一个附图中所示和/或结合至少一个附图所描述的,并且如在权利要求书中更完整地阐述的。在本公开的某些方面,跨分区的分区键范围的通信量被跟踪,并且基于所跟踪的通信量该分区可被拆分成多个分区或以其他方式被修改。具体而言,跟踪的通信量和对应的工作负载可以是将来的通信量和对应的将来的工作负载的预测,并因此可以形成用于各种负载平衡决策的基础
[0005] 在一些方面中,本公开涉及基于所跟踪的跨分区键范围的通信量确定一个或多个参考键。参考键划分所跟踪的跨分区键范围的通信量并且可以可选地对应于一个拆分点,藉此基于所述参考键分区可以被拆分到多个分区中。例如,所述分区可以在参考键处被拆分或基本上在参考键处被拆分。
[0006] 利用通信量值可以跟踪所述通信量,其中每个通信量值可以对应于分区键范围的子范围内的通信量的一部分。而且,可以基于附加通信量来将通信量值更新到分区键范围以在所跟踪的通信量中包括所述附加通信量。以此方式,通信量值可以随时间跟踪通信量的分布。由于参考键可以从通信量值中被确定,所以,参考键可以基于所跟踪的通信量的分布。
[0007] 在某些方面中,本公开涉及确定与所跟踪的通信量相对于参考键的变化率(即所跟踪的通信量的分布)相对应的参考键速度。参考键速度可以从任意数目的参考键中计算出,其可以对应于不同的所跟踪的通信量分布并且可以从公共度量中被导出。参考键速度可以形成用于负载平衡决策的基础,例如是否拆分或以其它方式修改分区。
[0008] 本公开进一步涉及桶,所述桶具有定义桶的子范围的边界。桶可以具有量化落入桶中的所跟踪的通信量的各部分的对应的通信量值。所述桶的边界可以被调整以在桶中更加均匀地分布通信量值。这可以包括合并、拆分或移动桶的边界,这重新定义了桶的子范围。参考键和参考键速度可以基于桶和/或边界被确定。
[0009] 在一些方面,本公开涉及在无需大量的且复杂的通信量数据的跟踪、维护以及分析的情况下的基于所跟踪的通信量的负载平衡决策。具体而言,参考键、参考键速度、桶、边界和通信量值的各种组合可以被用于有效且高效地实现各种负载平衡决策。
[0010] 提供本概述以便以简化的形式介绍将在以下的详细描述中进一步描述的一些概念。本概述不旨在标识所要求保护的主题的关键特征或本质特征,也不旨在独立地用于帮助确定所要求保护的主题的范围。
[0011] 附图简述
[0012] 在下面参考发土详细地描述了本公开的实现,在附图中:
[0013] 图1是适于在本公开的各实现中使用的示例性计算环境的图示;
[0014] 图2示出其中可采用本公开的实现的示例性系统;
[0015] 图3示出了根据本公开的实现的将可伸缩存储的一个分区拆分成多个分区的示例性拆分;
[0016] 图4A示出根据本公开的各实现的示例性分区键范围;
[0017] 图4B示出根据本公开的各实现的示例性分区键范围;
[0018] 图4C示出根据本公开的各实现的示例性分区键范围;
[0019] 图5描绘了根据本公开的实现的用于对可伸缩存储进行负载平衡的示例性方法的流程图
[0020] 图6描绘了根据本公开的实现的用于对可伸缩存储进行负载平衡的示例性方法的流程图;以及
[0021] 图7描绘了根据本公开的实现的用于对可伸缩存储进行负载平衡的示例性方法的流程图。
[0022] 详细描述
[0023] 此处用细节来描述本发明的各实施例的主题以满足法定要求。然而,描述本身并非旨在限制本专利的范围。相反,发明人已设想所要求保护的主题可结合其它当前或未来技术以其它方式来实施,以包括不同的步骤或类似于本文中所描述的步骤的步骤组合。此外,尽管术语步骤摂和/或框摂可在此处用于指示所采用的方法的不同元素,但除非而且仅当明确描述了各个步骤的顺序时,术语不应被解释为意味着此处公开的各个步骤之中或之间的任何特定顺序。
[0024] 本公开部分涉及负载平衡可伸缩存储。在一个方面,被分配给服务器的各分区以键空间的形式被实现。所述分区可以对应于分区键范围,在其中一个分区对应于在低分区键和高分区键之间的分区键的范围。分区键的范围可以是邻近的,以作为键空间的部分。访问请求可以被用于访问分区中的数据并可以对应于在该分区的分区键范围中的各分区键。访问请求利用了跨分区键范围的通信量,这对应于与该分区相关联的工作负载。
[0025] 在一些方面中,至少部分通过将由服务器主存的一个分区拆分成多个分区来实现负载平衡。所述多个分区可以由可伸缩存储的不同的服务器来主存,这样在缺少拆分的情况下将在服务器上被单独利用的将来的通信量和对应的将来的工作负载可以代之以被分布在不同的服务器中。以此方式,将来的工作负载可以在可伸缩存储的各服务器之间进行平衡。
[0026] 在本公开的某些方面,跨分区的分区键范围的通信量被跟踪,并且基于所跟踪的通信量该分区可被拆分成多个分区。具体而言,所跟踪的通信量和对应的工作负载是将来的通信量和对应的将来的工作负载的预测,并因此可以形成用于确定是否要拆分该分区和/或在分区的分区键范围中的哪里拆分该分区的基础。
[0027] 参考图1,图1是适于在本公开的各实现中使用的示例性计算环境的图示。具体而言,示例性计算机环境被概括地示为并描绘为计算设备100。计算设备100只是合适的计算环境的一个示例,并且不旨在对本发明的使用范围或功能提出任何限制。也不应该将计算设备100解释为对所示出的任一组件或其组合有任何依赖性或要求。
[0028] 本公开的各实现可以在由计算机或诸如个人数据助理或其它手持式设备之类的其它机器执行的计算机代码或机器可使用指令的一般上下文中描述,该机器可使用指令包括诸如程序组件之类的计算机可执行指令。一般而言,包括例程、程序、对象、组件、数据结构等的程序组件指的是执行特定任务或实现特定抽象数据类型的代码。本公开的各实现可以在各种系统配置中实施,这些系统配置包括手持式设备、消费电子产品、通用计算机、专用计算设备等等。本公开的各实现也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实施。
[0029] 继续参考图1,计算设备100包括直接或间接耦合以下设备的总线102:存储器104、一个或多个处理器106、一个或多个呈现组件108、输入/输出(I/O)端口110、I/O组件112、和电源114。总线102表示可以是一条或多条总线(诸如地址总线数据总线、或其组合)。虽然为了清楚起见利用线条示出了图1的各设备,但是实际上,各组件的轮廓并不是那样清楚,并且比喻性地来说,线条更精确地将是灰色的和模糊的。例如,可以将诸如显示设备的呈现组件认为是I/O组件112之一。同样,诸如一个或多个处理器106等处理器具有存储器。本公开在此认识到这是本领域的特性,并重申,图1仅仅说明了可以结合本公开的一个或多个实现来使用的示例性计算环境。诸如“工作站”、“服务器”、“膝上型计算机”、“手持式设备”等分类之间没有区别,它们全部都被认为是在图1的范围之内并且被称为“计算机”或“计算设备”。
[0030] 计算设备100通常包括各种计算机可读介质。计算机可读介质可以是可由计算设备100访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模或其他数据的信息的任何方法和技术实现的易失性和非易失性、可移动和不可移动介质。
[0031] 计算机存储介质包括RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁存储设备。计算机存储介质不包括被传播的数据信号
[0032] 通信介质通常以诸如载波或其他传输机制之类的已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传送介质。术语“已调制数据信号”是指使得以在信号中编码信息的方式来设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述的任意组合也应包含在计算机可读介质的范围内。
[0033] 存储器104包括易失性和/或非易失性存储器形式的计算机存储介质。存储器104可以是可移动的、不可移动的、或其组合。示例性存储器包括非瞬态、固态存储器、硬盘驱动器、光盘驱动器等。计算设备100包括从诸如总线102、存储器104或I/O组件112等各种实体读取数据的一个或多个处理器106。一个或多个呈现组件108向人或其他设备呈现数据指示。示例性的一个或多个呈现组件108包括显示设备、扬声器、打印组件、振动组件等等。I/O端口110允许计算设备100在逻辑上耦合至包括I/O组件112的其他设备,其中某些设备可以内置于计算设备100中。说明性I/O组件112包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪打印机、无线设备等等。
[0034] 现在参考图2,图2示出了在其中本公开的实现可被采用的示例性系统。具体而言,图2示出了根据本公开的实现的可伸缩存储200的高等级架构(在本文中也被称为“分布式系统200”)。应当理解,此处所描述的这一和其他安排仅作为示例来阐明。作为所示的安排和元素的补充或替换,可使用其他安排和元素(例如机器、接口、功能、次序、以及功能聚集等),并且可完全省略某些元素。此外,本文所描述的许多元素是可以实现为分立或分布式组件或结合其他组件的、以及以任何合适的组合和在任何合适的位置的功能实体。此处被描述为由一个或多个实体执行的各种功能可由硬件固件和/或软件来执行。例如,各种功能可由执行存储在存储器中的指令的处理器来执行。
[0035] 除了未示出的其它组件之外,分布式系统200还包括主机202(例如,分区主机202)、服务器204、206、208和210(例如,分区服务器204、206、208和210)、以及客户端212(例如,分区客户端212)。每个客户端可驻留在任一类型的计算设备上,其可对应于例如参考图
1描述的计算设备100。分布式系统200的组件可以通过网络彼此通信,网络包括但不限于一个或多个局域网(LAN)和/或广域网(WAN)。尽管单个主机、四个服务器、以及单个客户端在图2中被示出,然而任何数量的主机、服务器和客户端可在本公开的实现的范围内的分布式系统200内被采用。
[0036] 在分布式系统200中,诸如服务器204、206、208和210等服务器可被用来存储和提供对存储系统(例如结构化存储系统)的访问。主机202被配置成管理服务器。而且,客户端212被配置成向应用(诸如应用216)提供对存储系统的访问。
[0037] 可伸缩存储200的被存储数据在多个分区之间被拆分,这可以利用范围拆分来实现。可伸缩存储200可包括在多个分区之间划分的键空间。每个分区可以具有对应于键空间的子部分的分区键范围。主机202被配置成将分区指派给服务器204、206、208和210,和/或分布式系统200的未示出的其它服务器。主机202还可被配置成确定这些分区中的一分区何时由于故障而不被任何服务器主存并将该分区重新指派给一不同服务器。主机202被进一步配置控制服务器204、206、208、210、和/或分布式系统200的未示出的其它服务器上的分区的负载平衡。此外,主机202被配置成关于任何分区和/或服务器204、206、208和210、和/或分布式系统200的未示出的其它服务器监视资源利用。
[0038] 分布式系统200的每个服务器(诸如服务器204、206、208和210)可负责提供到被指派给该服务器的0个到许多个分区的读取和写入访问。而且,每个分区可被指派到这些服务器中的单个服务器。在图2中示出的示例中,服务器204正在主存分区P1和P4,服务器206正在主存分区P2和P7、服务器208正在主存分区P3,而服务器210正在主存分区P5和P6。
[0039] 客户端212被链接到应用(诸如应用216)中。在一些实现中,客户端212被配置成向被服务器204、206、208和210和/或分布式系统200的其它服务器所主存的一些分区(例如,分区P1、P2、P3、P4、P5、P6和P7)发出命令(例如访问请求)。同样在一些实现中,客户端212可例如通过将通信请求定向到前端的虚拟IP和软件负载平衡器或其它装置来间接地与该应用通信。前端可利用分区图,诸如分区图218,来确定哪个服务器正在主存(被映射到)哪些分区并可向那些服务器发送命令。命令的结果可从服务器接收回并可被传递至应用。分区图可存储所述分区和所述分区被指派到的服务器之间的映射,并通常可由主机(诸如主机202)维护。
[0040] 已经描述了分布式系统200的各方面,要注意,任意数量的组件可被采用来实现本发明的范围内的理想功能。尽管为了清楚起见用线条示出了图2的各组件,但是在实际上,各组件的描绘并不是那样清楚,并且按比喻的说法,线条更精确地将是灰色的或模糊的。此外,虽然图2的某些组件被描述成各单独的组件,但是该描绘在性质上和数量上是示例性的,且不应该解释为对本发明的所有实现的限制。
[0041] 如同上面指示的,分布式系统200的服务器是被配置的主机分区,由此为分区提供各种资源,所述资源可包括计算和存储资源。分区进而可与一个或多个应用的工作负载相关联,这可由服务器来适应。可能期望调整工作负载跨各服务器的分布,以便优化资源使用、最大化吞吐、最小化响应时间、避免这些服务器之一的过载、和/或实现其它负载平衡目标。为了实现这些和其它负载平衡目标,一个或多个主机(诸如主机202)可被配置成在被指派给分布式系统200的服务器的分区上执行各种负载平衡操作中的任何负载平衡操作。在各实现中,潜在工作负载平衡操作与被指派给可伸缩存储的服务器的分区相关联。下面描述一些示例性的负载平衡操作。然而,本公开不限于这些负载平衡操作。
[0042] 注意,分区上的负载平衡操作不要求在存储级别的数据的物理移动。例如,在各实现中,通过(例如,在分区图中)将一分区的分区范围指派(分区键范围)重新指派或重新映射到新的服务器,该分区可被移动至另一服务器。具体而言,可伸缩存储的各分区可各自对应于正被存储的数据对象的分区索引中的键空间的分区键范围。示例性数据对象包括团块(blob)、表和队列。将分区指派给分区服务器可不四处移动分区所存储的任何数据。而是,指派分区可将关于服务器负责该索引的哪(一个或多个)键范围告知服务器。
[0043] 可由主机202执行的一种类型的负载平衡操作包括将所述分区之一移动至分布式系统200的各服务器中的一不同服务器(移动操作)。例如,假定服务器204具有过度的CPU利用率而服务器206具有低CPU利用率。分区P1可被从服务器204移动至服务器206,以便归属于分区P1的CPU利用率可转而由服务器206适应。这可释放服务器204的过度的CPU利用率,由此关于CPU利用率改善负载平衡。例如,主机202可通过将分区从一个服务器卸载、将该分区指派给另一服务器、并且更新分区图来反映该分区被指派给了新服务器来执行移动。
[0044] 可由主机202执行的另一种类型的负载平衡操作包括将所述分区中的多个分区合并为要被指派给分布式系统200的各服务器中的一个服务器的一共享分区(合并操作)。例如,假定服务器204和206每个均具有太多分区。分区P1和P2可被合并为指派给服务器204或服务器206的单个分区。以此方式,服务器204和206中的至少一者可主存减少数量的分区。同样,分区的合并不要求在存储级别的数据的物理移动。而是,在各实现中,可通过更新分区图来将各分区表示为被指派到所述服务器之一的单个分区来合并各分区。
[0045] 作为另一个示例,可由主机202执行的一种类型的负载平衡操作包括将所述分区之一拆分为要被指派给分布式系统200的各服务器中的多个服务器的多个分区(拆分操作)。例如,假定服务器204具有过度的CPU利用率而服务器206具有低CPU利用率。分区P1可在负载平衡操作中被拆分为多个分区。所述多个分区中的一者或两者可被指派给与服务器204不同的服务器,诸如服务器206。以此方式,归属于分区P1的CPU利用率可通过所述服务器中的多个服务器来适应,由此减少服务器204上的总CPU利用率。同样,分区的拆分不要求在存储级别的数据的物理移动。而是,在各实现中,可通过更新分区图来将一分区表示为被指派到服务器的多个分区来拆分该分区。
[0046] 转向图3,图3示出了根据本公开的实现的将可伸缩存储的一个分区拆分成多个分区的示例性拆分。图3包括分区层330,其可以由分区服务器和/或其它服务器(例如主服务器)组成,并可以管理在分布式系统中的数据抽象,例如图2的可伸缩存储200。数据抽象可以包括数据对象,其示例包括团块、表和队列。分区层330还可以管理数据对象的名字空间以及数据对象的分区。在所示的示例中,分区层330被配置成控制各分区(图2中的分区P1、P2、P3、P4、P5、P6和P7中的任意分区)到服务器336和338的指派,所述服务器可以对应于在图2中的服务器204、206、208和210中的任意服务器。
[0047] 分区层330还可以控制在服务器之间分布工作负载的负载平衡,所述工作负载对应于对由服务器主存的各分区的访问请求(例如读、写和删除请求)。例如,在一些实现中,负载平衡服务器包括将分区拆分成多个分区,其中所述多个分区被指派给不同的服务器,以便由此在这些服务器之间分布所述工作负载。
[0048] 图3示出了将分区340拆分成子分区340a和340b的分区层330,所述子分区被分别指派给服务器336和338。所述拆分可以包括将对应于分区340的分区键范围划分成子分区340a和340b。在所示的实现中,分区340是经修改的主分区并且子分区340a对应于分区340的经减少的分区键范围。子分区340b是新形成的,并且被放置在与主存子分区340a的服务器336不同的服务器338上。子分区340b对应于分区340的分区键范围的没有被分区340a所包括的剩余部分。这样,服务器336和338可以拆分否则将由服务器336主存的工作负载。
[0049] 如上所述,在本公开的某些方面中,跨分区的分区键范围的通信量被跟踪,并且基于所跟踪的通信量可以做出负载平衡决策。例如,分区可以基于所跟踪的通信量被拆分成多个分区。所跟踪的通信量和对应的工作负载通常是将来的通信量和对应的将来的工作负载的预测,并因此可以形成用于确定诸如是否要拆分该分区和/或在分区的分区键范围中的哪里拆分该分区之类的负载平衡决策的基础。根据本公开的各实现,负载平衡决策可以在不利用可伸缩存储的显著开销的情况下被有效且高效地做出。
[0050] 现在可以参考图4A,图4A示出根据本公开的各实现的示例性分区键范围。具体而言,图4A描述了分区键范围400,其可以对应于在将分区拆分成多个分区之前的图3的分区340的分区键范围。
[0051] 分区键范围400包括在低分区键0和高分区键80之间的分区键的范围。所示的分区键可以对应于标准化键。具体而言,图4A示出的分区键0、10、20、30、40、50、60、70和80的值可以不指示这些分区键之间的相对距离。换句话说,在任意给定的这些分区键对之间可以存在或创建任意数目的分区键。例如,在分区键0和10之间可以存在150个分区键,因为分区键并不需要被局限为整数值。然而,分区键的值指示了跨分区键范围400的分区键的相对顺序。具体而言,每个分区键可以被顺序安排在分区键0和分区键80之间。
[0052] 根据本公开的各实现,跟踪跨分区键范围400的通信量。而且,可伸缩存储(例如可伸缩存储200)可以基于所跟踪的通信量进行负载平衡。通信量可以包括对应于分区键范围400的分区键的访问请求。随着时间推移,访问请求可以被定向成朝着沿分区键范围400的各个分区键。因此,随着各种分区键中的任意分区键变成一个或多个访问请求的主体,通信量被沿分区键范围400分布。分区层330可以被配置为随时间跟踪跨分区键范围400的通信量的分布。通信量的分布可以形成用于负载平衡决策的基础。
[0053] 为了跟踪跨分区键范围400的通信量可以使用各种方案。这些方案在此处是非穷尽的。在一些实现中,利用对应于所跟踪的通信量的通信量值来跟踪通信量。从任意通信量值到所有通信量值都可以对应于多个分区键。然而,在一些实现中,至少一个通信量值可以对应于单个分区键。
[0054] 在通信量值对应于多个分区键时,通信量值可以对应于分区键范围400的子范围。通信量值可以对应于在分区键范围400的各子范围内的通信量的各部分。不同的通信量值可以对应于分区键范围400的不同的子范围。当访问请求在子范围内时,该子范围的对应通信量值可以被确定和/或被更新以跟踪该通信量。由于子范围可以跨分区键范围400分布,通信量值可以指示所跟踪的通信量的跨分区键范围400的分布。这可以允许基于所跟踪的通信量的分布的负载平衡,而无需大量数据来跟踪分布。
[0055] 在一些实现中,从任意子范围到所有子范围都通过边界描绘。边界可以是用于确定哪个通信量值对应于给定访问请求的参考点。在这方面,边界可以是分区键范围400中的子范围的参考点。可以将对应于访问请求的分区键与所述边界进行比较以确定该分区键对应于哪个通信量值,这可以包括确定所述分区键位于哪对边界之间。例如,在分区键位于第一边界和第二边界(例如相邻的边界)之间时,所述分区键可以被确定为落入在第一和第二边界之间的子范围内。分区层330可以跟踪并存储边界并且每个边界可以对应于分区键。跟踪子范围的边界可以允许在无需大量数据来描绘该子范围的情况下就确定访问请求对应于哪个子范围和/或通信量值。
[0056] 通信量值可以基于对子范围和/或分区键的访问请求的请求率。例如,可以响应于正被朝向其对应的子范围或分区键定向的访问请求来更新通信量值。响应于访问请求的对通信量值的更新可以是累积的,以便反映访问请求率。例如,可以在每当访问请求落入分区键范围400的其对应的子范围内时更新通信量值。在一些方面中,通信量值可以对应于响应于访问请求被递增的计数器。因此,无需考虑通信量值可能基于的其它因素,在给定的时间段上,具有较多被定向到其的访问请求的子范围可以具有比具有较少被定向到其的访问请求的子范围更大的通信量值,由此对应于在该时间段上的通信量的分布。
[0057] 通信量值还可以基于访问请求的请求等待时间。例如,一旦完成被朝向其对应的子范围定向的访问请求,就可以确定并更新通信量值。当通信量值被更新时,可以基于访问请求的请求等待时间(例如访问时间)将其递增或以其它方式被调整。作为一个示例,调整的量可以与请求等待时间成比例。通信量值可以基于请求等待时间和请求率。通过这样做,在一时间段上具有比其它子范围更高请求率的子范围可仍然具有与那些其它子范围相比更小的通信量值。这可以由例如在该时间段上在所述子范围中的比所述其它子范围更高的等待时间而导致。
[0058] 通信量值可以随时间衰减。例如,通信量值可以具有衰减率。通信量值可以共享一个衰减率或可以以不同的速率衰减。在某个实现中,衰减率是指数的。随时间衰减通信量值是一种跨分区键范围使所跟踪的通信量同时发生的方案。从前述描述中,应该清楚通信量值可以基于请求率、请求等待时间、随时间的衰减和/或其它因素的任意组合。
[0059] 在一些实现中,通信量值可以对应于桶。所述桶可以由分区层330,例如,利用对应的桶索引值,来跟踪,所述桶索引值可以被存储以用于负载平衡。所述桶可以由上述边界定义,并且每个桶可以表示对应于所述通信量值之一的分区键。在一些实现中,每个桶可以由一对边界定义。桶可以与一个或多个桶(例如相邻的桶)共享一个或多个边界,或所述边界的任意边界可以是桶独占的。
[0060] 在所示的示例中,分区键范围400被划分成各个桶,每个桶对应于分区键的子范围。图4A以示例方式示出桶442、444、446、448、450、452、454和456。例如,图4A示出了每个桶的对应的分区键的子范围。桶442具有从分区键0到分区键10的子范围,桶444具有从分区键10到分区键20的子范围,以此类推。
[0061] 图4A中的桶每个由一对边界定义。该对边界定义了对应于一个桶的子范围。描述了描绘各桶的边界460a、460b、460c、460d、460e、460f、460g、460h以及460i。分区键值被示出在它们对应的边界之下。桶442具有定义分区键的对应于桶442的子范围的边界460a和460b,桶444具有定义分区键的对应于桶444的子范围的边界460b和460c。
[0062] 在所示的实现中,借助于通信量值462a、462b、462c、462d、462e、462f、462g和462h跟踪跨分区键范围400的通信量468。各通信量值对应于不同的子范围以及分区键范围400的各桶。例如,通信量值462a对应于桶442,通信量值462b对应于桶444,以此类推。通信量值可以对应于通信量468的在其对应的桶内的一部分(由箭头所示)。例如,对应于在定义所述桶的该对边界之间的分区键的访问请求可以在通信量值中被考虑。
[0063] 在图4A,在图4A中所示的各通信量值的各自高度可以对应于随时间的被朝着相应桶定向的通信量468的量。因此,图4A指示了相对于桶和/或子范围的跨分区键范围400的通信量468的基本均匀的分布。然而,通信量值的高度可以依据通信量的分布而不同。例如,如果附加通信量被朝着桶442定向,通信量值462a可以更高以用填充桶442的比喻来描述附加通信量。
[0064] 图3的分区层330可以基于所跟踪的分区键范围的分布来做出负载平衡决策。例如,对应于分区键范围400的分区可以被拆分成多个分区以更加均匀地跨可伸缩存储的服务器来分布负载。在一些实现中,负载平衡决策可以基于确定分区键范围400中的一个或多个参考键。参考键可以可选地对应于分区键范围400中的拆分点,藉此基于一个或多个参考键,分区键范围400的对应的分区可以被拆分成多个分区。例如,一分区可以在参考键处被拆分或基本上在参考键处被拆分。
[0065] 确定一个或多个参考键可以基于所跟踪的跨分区键范围400的通信量(例如基于所跟踪的跨分区键范围400的通信量分布)。可以基于通过一个或多个参考键跨分区键范围400划分所跟踪的通信量来确定一个或多个参考键。在一些实现中,一个或多个参考键是基于通信量值的。例如,一个或多个参考键可以从通信量值中被计算出或以其他方式从通信量值中导出。
[0066] 在又一些实现中,通过基于通信量值确定一个或多个子范围或桶并选择对应于所述一个或多个子范围或桶的分区键来确定所述一个或多个参考键。例如,分区层330可以基于通信量值确定参考键的子范围(例如桶)并选择对应于该子范围(例如桶)的分区键作为参考键。作为一个示例,参考键可以从在子范围内维持的经采样的键中选择出。在一些实现中,可以基于定义子范围的一个或多个边界选择参考键。例如,使用通信量值可以确定桶,并且参考键可以被选择作为该桶的边界之一。
[0067] 在又一些实现中,可以从(如由通信量值所确定的)所跟踪的通信量的中点计算参考键。分区层330可以确定并标识与中点最接近的桶和/或边界并基于该桶和/或边界选择参考键。例如,参考键可以被选择作为在该桶内的采样键或作为该桶的边界。
[0068] 在所示的示例中,分区层330已经选择单个参考键466(但是在其它实现中,可以选择多个参考键)。已经基于通信量值462a、462b、462c、462d、462e、462f、462g和462h选择参考键466。具体而言,参考键466已经被选择为桶450中的采样键,该桶将最均匀地跨分区键范围400划分通信量值(例如最接近所跟踪的通信量的中点的桶)。上面已经描述了各种确定一个或多个参考键的方案。然而,可以使用许多不同的方案。
[0069] 如上所示,所跟踪的跨分区键范围400的通信量分布可以随时间改变。现在可以参考图4B,图4B描述了根据本公开的各实现的示例性分区键范围。具体而言,在图4B中的描述可以对应于正被跨分区键范围400跟踪的附加通信量472。在图4A中的描述的时间,可以基于跨分区键范围400的附加通信量472来更新所跟踪的通信量。具体而言,可以基于附加通信量472的分布来更新通信量值462a、462b、462c、462d、462e、462f、462g和462h。如在图4B中所示,通信量值462a是最大的,其指示附加通信量472已经被集中在桶442中,而桶462g和462h具有所接收的比其它桶更低的通信量。可以使用如被用于选择参考键466的公共度量(即公共选择标准)来选择参考键470。与参考键466不同的是,由于不同的所跟踪的通信量分布,参考键470在桶448中。分区键范围400可以可选地在参考键470处被拆分。
[0070] 确定参考键是一种确定如何基于所跟踪的通信量来修改用于负载平衡的分区(即在哪拆分该分区)的示例性方案。除了确定如何修改用于负载平衡的分区之外或替代确定如何修改用于负载平衡的分区,本公开的各实现涉及确定是否要修改(即拆分)用于负载平衡的分区。
[0071] 在一些实现中,确定是否要修改用于负载平衡的分区是基于一个或多个参考键,其可以与上述的参考键相同或不同。在这方面,参考键可以被用于随时间跟踪跨分区键范围400的通信量(例如通信量468和附加通信量472)的分布。例如,可以基于在时间t1的第一所跟踪的通信量分布(例如通信量值、边界和/或桶的第一安排)来确定一个或多个参考键。在时间t1之后的时间t2处,分区键范围可以具有第二所跟踪的通信量分布(例如通信量值、边界和/或桶的第二安排)。所述一个或多个参考键可以被用作参考点以检测第一和第二所跟踪的通信量分布之间的差异或改变,并且可以相应地做出负载平衡决策。
[0072] 在一些实现中,所跟踪的通信量分布中的差异或改变可以利用参考键速度来捕捉。参考键速度可以对应于在所跟踪的通信量的分布中相对于一个或多个参考键(例如参考键466和/或参考键470)的变化率。参考键速度可以从任意数目的参考键中计算出,其可以对应于不同的所跟踪的通信量分布并且可以从公共度量中被导出。出于公开简明的目的,参考键速度被描述为藉此单个参考键在给定时间从给定所跟踪的通信量分布中被采样。然而,可采用任何数目的参考键。
[0073] 如上所示,所跟踪的跨分区键范围400的通信量分布可以随时间改变。例如,基于对分区键范围400的分区键的访问请求模式可以递增通信量值。在一些实现中,周期性地(例如每隔N个毫秒)或随时间在各个点处调整边界,所述点可以具有不同的所跟踪的通信量分布。边界可以被调整以在所述边界和由边界所定义的桶中重新分布所跟踪的通信量(例如通信量值)。具体而言,一个或多个边界可以被改变以便对应于所述边界的一个或多个子范围且进而桶也被改变。
[0074] 在一些实现中,边界被调整以便更加均匀地在跨分区键范围400的边界内分布所跟踪的通信量(例如通信量值)。调整边界可以包括将不同的子范围(例如桶)合并到合成的子范围(例如单个桶)中。例如,相邻的桶可以被合并入合成的或单个桶中,由此,所述合成的或单个桶可以由相邻的桶的外边界来定义。随后,对应于合成的子范围(或合成的或单个桶)的通信量值可以接着是原始的各子范围(或原始的各桶)的通信量值的总和。
[0075] 调整边界也可以包括将子范围拆分成多个子范围(例如桶)。例如,一个桶可以被拆分成多个桶,藉此边界将对应于该桶的子范围拆分成多个子范围,每个子范围对应于所述多个桶中的一个。随后,对应于所述多个子范围(或桶)中的一个的通信量值可以是原始的子范围(或原始的桶)的通信量值的一部分。
[0076] 由于在一些实现中,给定的子范围(例如桶)可以包括任意数目的分区键,拆分子范围包括基于所采样的该子范围的键来选择边界的分区键。例如,每个子范围可以具有对应的所采样的键。所采样的键可以被存储并随时间被维护。例如,所采样的键可以在调整边界中被更新,以便当桶的子范围改变时所采样的键对应于它们正确的桶。可以以任意合适的方式选择所采样的键,并且所采样的键可以对应于先前的边界或其它先前确定的分区键。在一些实现从中,拆分子范围包括选择一个桶的采样键中最接近该桶的平均采样键的一个采样键。例如,所述桶的采样键可以被存储,并且中间键可以被选择。可以按其它合适的方式来选择采样键。随后,所述桶可以在所选的采样键处被拆分。
[0077] 调整所述边界还可以包括在相邻的桶之间移动边界。例如,共享公共边界的相邻桶可以使得该公共边界被移动以便在这些桶之间更加均匀分布通信量。调整公共边界改变了对应于每个桶的子范围。例如,可以针对一个桶扩展子范围以包括其它桶的子范围的一部分。其它桶进而可以使得其对应的子范围消失。在一些实现中,可以基于各桶内的采样的键来调整所述公共边界。例如,所述公共边界可以被移动到采样键的一个,该采样键位于使其子范围消失的桶内。
[0078] 在一些实现中,基本上随时间维护或控制许多的桶。例如,分区层330可以被配置成,封顶(cap)桶的数目,保持桶的数目在一个范围内,保持桶的数目恒定,或以其他方式在任意给定时间控制桶的数目(被动地或主动地)。在一些实现中,这可以通过将桶拆分和桶合并配对来完成,这样一个桶的添加伴随着一个桶的减去。
[0079] 在一些实现中,调整边界包括基于通信量值选择第一和第二桶。例如,分区层330可以确定多个桶中具有最大通信量值的第一桶以及所述多个桶中具有最小通信量值的第二桶。所述调整边界还可以基于将第一桶的第一通信量值与第二桶的第二通信量值相比较。例如,所述调整可以响应于所述比较被执行。在一些实现中,所述比较是基于第一和第二值之间的比率。例如,可以在所述比率超过阈值处执行所述调整。在一些实现中,在第一值(例如最大的通信量值)大约大于第二值(例如最小通信量值)两倍或更多倍处执行所述调整。
[0080] 还是在一些实现中,在所述第一和第二桶是相邻的处,调整边界可以包括在所述桶之间移动边界(例如分开所述各桶的公共边界)。在所述第一和第二桶不相邻处,调整可以包括拆分第一桶(例如具有最大的通信量值)或第二桶。可以基于具有比其它桶更大的通信量值来选择经拆分的桶(例如第一桶)。在所述第一和第二桶不相邻处,调整还可以包括将没有拆分开的桶(例如第二桶)与另一个桶(例如相邻于没有拆分开的桶的一个桶)合并。例如,所述桶可以与一个相邻的桶合并,该相邻的桶具有可以与所述桶相邻的任意桶的最小的通信量值。
[0081] 调整所述桶可以被迭代地执行,其中每次迭代可以在边界内更均匀地分布所述通信量,如果有可能的话。所述调整可以被配置使得随时间缺少附加通信量时,随着迭代累积分布可以达到平衡,这可以对应于图4A所示的作为示例的内容。
[0082] 参考图4C,图4C描述了根据本公开的各实现的示例性分区键范围。具体而言,在对图4B中示出的边界的调整之后,图4C中的描述可以对应于图4B的描述。所述边界已经被调整以在边界中更加均匀地分布所跟踪的通信量。这样,在图4C中示出的所跟踪的通信量值可以已经基于经调整的边界被更新。
[0083] 作为在图4B和4C之间的边界调整的一个示例,分区层330可以基于桶442具有图4B中的桶的最大通信量值来选择桶442,并基于桶454具有图4B中的桶的最小通信量值来选择桶454。
[0084] 基于桶442和454不是相邻的,分区层330可以将桶442拆分成桶442a和442b,如在图4C中所示。被选择来拆分桶442的分区键具有5的分区键值(作为示例),并且可以是在拆分之前在桶442中维护的采样的键。桶442a和442b具有相应的通信量值474a和474b,其可对应于通信量值462a的各部分(例如每个可以具有通信量值462a的一半)。还基于桶442和454是不相邻的,分区层330可以基于桶456具有相邻于桶454的任意桶的最小通信量值来将桶454和桶456合并。如所示,合成的桶454具有通信量值476,其可以对应于通信量值462g和
462h的总和。在桶442和454已经邻近时,分区层330可以代之以调整这些桶之间的公共边界。
[0085] 通过调整桶的边界,经更新的通信量被更加均匀地分布在所述边界和桶内。如上所述,所述边界可以被迭代地调整,这可以更加均匀地分布来自图4C中示出的内容的经更新的所跟踪的通信量。在选择哪些桶和/或边界进行调整时,每次迭代可以考虑如上所述的类似因素。通过随时间调整边界,通过利用参考键来确定桶和/或边界中随时间的变化,参考键速度可以被确定。
[0086] 参考键速度可以对应于随时间的距离。如可以在图4C的描述中发现的,参考键466位于从左侧起的第六个桶中,而在图4A中,参考键466则位于从左侧起的第五个桶中。这种对边界的调整指示了附加通信量472已经被集中在低于参考键466的分区键上。因而,可以基于已经随时间移动到图4A和4C中所描述的所跟踪的通信量分布(即时间)之间的一个桶(即距离)的参考键466来计算参考键速度。
[0087] 距离是跨分区键范围的,并且可以根据桶或边界被表示,但是其它手段也可构想。距离可以对应于参考键的桶(例如桶索引)或边界之间的差异。为了简化距离计算,可以期望分区键范围400对于在确定参考键速度中所使用的不同的所跟踪的通信量分布具有相同数目的桶和/或边界。还有,在参考键落入桶内时,距离计算可以考虑一个桶一半或桶的某个其它分数。在参考速度计算中所使用的距离可以是绝对值,这样参考键速度不依赖于改变的方向。
[0088] 在一些实现中,参考键速度是基于运行的采样窗口(例如十分钟的采样)。每个采样可以对应于参考键,并包括对应于在取得采样时的时间的时间戳,以及指示当取得采样时参考键在所跟踪的通信量分布中的位置的索引。参考键速度可以从运行的采样窗口中计算出。这可以平滑掉参考键速度中的短期波动。例如,参考键速度可以基于所跟踪的通信量分布相对于参考键的变化率的移动平均。而且,在一些实现中,参考键速度可以基于多个参考键和这些参考键的采样。
[0089] 高参考键速度可以对应正在快速改变的所跟踪的通信量的分布。在许多情况中,不期望修改在其中通信量分布改变得太过快速的分区。例如,如果分区要被拆分成多个分区,可能无法保证将来的访问请求在所述多个分区之间被充分地分布。因此,参考键速度可以形成用于确定是否要修改分区的有效基础。
[0090] 在一些实现中,所述修改分区是响应于确定参考键速度不超过阈值。基于参考键速度超过阈值可以不修改分区。在参考键速度是基于每分钟桶(BPM)时,可能合适的示例性的阈值是大约0.5BPM,但是注意可以使用其它距离和时间单位。而且,所述阈值可以(要么由分区层330自动地要么手动地)按需被调整或以其他方式被改变。
[0091] 已经发现基于参考键速度确定是否要修改分区在防止对可伸缩存储的分区的不需要或过度的修改方面是一种有效的手段。例如,基于参考键速度的负载平衡可以对于某些通信量模式是弹性的,所述模式通常可能由于它们的检测中的困难导致过度的修改。作为一个示例,基于分区键速度拆分一个分区可以是一种防止过度拆分(在其中所述分区经受跨其分区键范围的高序列性或半序列性访问模式)的有效手段,例如,如果访问请求是从分区键范围400的分区键0到分区键80顺序的,则可能不期望在访问请求期间将所述分区拆分成多个分区,因为它们可能很快就不再被定向朝着所述多个分区中的至少一个。通过适当设定参考键速度的阈值,可以避免过度拆分。
[0092] 确定是否要修改分区可以基于除了参考键速度之外的其它因素。例如,其它模式可以在参考键中被标识,所述模式可以被作为负载平衡决策中的因素。这些附加因素可以增强各种类型的访问模式的负载平衡。作为示例,在分区键范围上的访问模式包括子模式时,某些子模式可以主导参考键速度,所述子模式可以被考虑为其它因素。每个子模式可以对应于不同的用户账户或同一账户上的不同过程,如一些示例。
[0093] 作为示例,一个子模式可以是跨分区键范围的快速移动序列模式,并且另一个可以是可能仅将访问请求引导到分区键的一个到少量个分区键的慢速移动模式。这些分区键的一个到少量个分区键可以是与快速移动序列模式基本上隔离的,并且因而期望拆分到与剩余分区键分开的一个分区中。然而,在没有使用附加因素的情况下完成这种拆分可能是困难的。例如,快速移动序列模式可能引起参考键速度停留在用于修改(例如拆分)分区的阈值之上。
[0094] 根据一些实现,负载平衡决策还可以是基于参考键急降时间。参考键急降时间可以对应于其针对参考键所花费的基本上在通信量的窗口(例如所访问的分区键采样的窗口)之外的时间。基于参考键急降时间超过阈值,分区可以被修改(例如拆分)。
[0095] 通过维护在一时间窗口(例如大约三十到大约六十分钟)上访问的分区键的采样可以实现参考键急降时间。而且,如上所述,参考键可以具有在该时间窗口期间在各时间间隔(例如大约每分钟)处获取的采样。可以期望该时间间隔或采样率是高于确定参考键速度中所使用的时间间隔或采样率。
[0096] 通过分析该时间窗口上的所访问的分区键和参考键采样来确定参考键急降时间。分区层330可以标识在所访问的分区键采样之外的最新近的参考键采样,并基于所标识的参考键采样计算参考键急降时间。当所有的或基本上所有的所访问的分区键采样都在分区键范围上的参考键采样的相同侧上时,在所访问的分区键采样之外的参考键可以被考虑。
为此,所标识的参考键采样的时间戳可以被使用并与所访问的分区键的时间戳相比较。在一些实现中,在所访问的分区键采样之外的参考键还是被考虑,直到所访问的分区键采样的阈值量在参考键采样的相同侧上。在参考键急降时间超过阈值时,分区还可以被拆分(例如在所标识的参考键采样处),甚至在参考键速度超过其前述阈值时。
[0097] 其他示例
[0098] 现在参考图5,图5描绘了根据本公开的实现的用于对可伸缩存储进行负载平衡的示例性方法(例如图5中的500)的流程图。所述方法包括:跟踪定义可伸缩存储的分区的分区键范围的子范围的边界内的通信量(例如图5中的580),调整所述边界以更均匀地将所跟踪的通信量分布在所述边界中(例如图5中的582),基于所调整的边界确定参考键(例如图5中的584),以及基于参考键将所述分区拆分成多个分区(例如图5中的586)。
[0099] 现在参考图6,图6描绘了根据本公开的实现的用于对可伸缩存储进行负载平衡的示例性方法(例如图6中的600)的流程图。所述方法包括:确定所述可伸缩存储的分区的分区键范围内的参考键,所述参考键跨所述分区键范围划分所跟踪的通信量(例如图6中的680),基于跨所述分区键范围的附加通信量更新跨所述分区键范围所跟踪的通信量(例如图6中的682),确定对应于所跟踪的通信量的分布相对于参考键的变化率的参考键速度(例如图6中的684),并基于所述参考键速度将所述分区拆分成多个分区(例如图6中的686)。
[0100] 现在参考图7,图7描绘了根据本公开的实现的用于对可伸缩存储进行负载平衡的示例性方法(例如图7中的700)的流程图。所述方法包括:确定所述可伸缩存储的分区的分区键范围内的参考键,所述分区键范围被划分成具有定义所述分区键范围的子范围的边界的桶,其中所述参考键是基于对应于所述桶内的所跟踪的通信量的通信量值被确定的(例如图7中的780),基于所述桶内的附加通信量更新所述通信量值(例如图7中的782),基于所更新的通信量值调整桶的边界(例如图7中的784),确定对应于所跟踪的通信量的分布相对于参考键的变化率的参考键速度(例如图7中的786),并基于所述参考键速度将所述分区拆分成多个分区(例如图7中的788)。
[0101] 从而,根据本公开的实现,可利用参考键、参考键速度、桶、边界和通信量值的任意组合做出负载平衡决策。这些决策可以包括是否要修改分区和/或在哪里或如何修改分区。本发明的各实施例已被描述为说明性的而非限制性的。可理解的是,某些特征和子组合是有用的,并且可以加以利用而无需参考其它特征和子组合。这由权利要求所构想的,并在权利要求的范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈