CN107430529B - 大型内存数据库的负载均衡的装置 - Google Patents

大型内存数据库的负载均衡的装置 Download PDF

Info

Publication number
CN107430529B
CN107430529B CN201680015894.9A CN201680015894A CN107430529B CN 107430529 B CN107430529 B CN 107430529B CN 201680015894 A CN201680015894 A CN 201680015894A CN 107430529 B CN107430529 B CN 107430529B
Authority
CN
China
Prior art keywords
data set
data
requests
group
exclusive execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680015894.9A
Other languages
English (en)
Other versions
CN107430529A (zh
Inventor
谢伊·高克曼
安东尼奥斯·利奥普洛斯
埃利泽·利维
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN107430529A publication Critical patent/CN107430529A/zh
Application granted granted Critical
Publication of CN107430529B publication Critical patent/CN107430529B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明提供了一种包括控制模块(100)和存储模块(110)的数据管理设备(10),其中所述存储模块(110)用于将多个数据集存储在多个数据集组中,使得所述多个数据集被分配给所述多个数据集组,这样,每个数据集组包括至少一个数据集且每个数据集仅被存储在一个数据集组中;所述控制模块(100)用于将独占执行上下文分配给每个数据集组以及估计每个数据集的数据集请求的数量。所述控制模块(100)还用于基于所述估计的数据集请求的数量确定每个数据集组的数据集以及将所述数据集重分配给所述数据集组,使得所述估计的一个数据集组中的数据集请求的数量小于或等于至少一个独占执行上下文的数据集请求的预定数量,所述至少一个独占执行上下文被分配给所述多个数据集组中的一个。这样可以避免所述数据集组和所述分配的独占执行上下文的不均衡工作负载。

Description

大型内存数据库的负载均衡的装置
技术领域
本发明涉及数据管理设备技术领域,数据管理设备包括用于存储和管理特别大量的数据和用于将这些数据提供给客户端以供读或写操作的计算机设备等。
背景技术
大型内存数据库目前正在生产基地上使用,充当键值存储、联机事务处理(onlinetransaction processing,OLTP)数据库、大规模网络应用、大型联机多人游戏、软件定义网络(software defined network,SDN)控制器网络视图、科学模拟等。建立这些应用以使用多个执行上下文,例如非一致性内存访问(non-uniform memory access,NUMA)全共享架构中的线程,来维持高事务率,由此,数据集被逻辑划分,每个分区与一个执行上下文关联,该执行上下文负责处理其分区上的事务。
分区策略强制执行分区上的执行上下文的独占性,使得事务在单线程物理访问环境中执行而不采用任何锁或插销,如2008年8月,VLDB Endowment,Kalman、Robert等人的H-store:高性能、分布式主存储器事务处理系统(H-store:A High-performance,Distributed Main Memory Transaction Processing System),所描述。该方法可描述为将分区上串行处理的高效率与跨分区使用的并行操作相结合,从而实现扩大事务处理。
然而,当即使稍许不均衡的工作负载分布施加于数据集时,静态分区策略也会引起效率问题并严重限制可扩展性,因为一些执行上下文可遇到异常高的更新率,而其它执行上下文则未充分使用,使分区呈现为无效。如一些作者所陈述,现实世界示例中不断变化的工作负载不均衡是规则而非异常,如Pinar Tozun等人:具有生理分区的可扩展动态平衡的全共享OLTP(Scalable and dynamically balanced shared-everything OLTP withphysiological partitioning),The VLDB杂志DOI 1007/s00778-012-0278-6,2012年6月所描述。
Hyeontaek Lim等人:MICA:快速内存键值存储的全局方法(A Holistic Approachto Fast In-Memory Key-Value Storage),NSDI’14,2014年4月,美国华盛顿西雅图,描述了内存键值存储,其通过利用尝试分布键在分区中的位置的特殊静态哈希函数来解决工作负载不均衡,使得一个分区上的平均负载低于Zipf分布实验上53%的误差。然而,在静态放置和分区策略的情况下,系统可能为非自适应的,因此在比如负载较低时可能效率不高。
发明内容
可以看出,本发明的目的是提供一种解决不均衡问题的数据管理设备,即,提供一种实现不同排外执行上下文之间有效的工作负载平衡的分区的数据管理设备。
该目的由独立权利要求的特征来解决。更多实施例在从属权利要求和以下描述中说明。
根据本发明的一个方面,提供一种数据管理设备。所述数据管理设备包括控制模块和存储模块,其中所述存储模块用于将多个数据集存储在多个数据集组中,使得所述多个数据集被分配给所述多个数据集组,这样,每个数据集组包括至少一个数据集且每个数据集仅被存储在一个数据集组中;所述控制模块用于将独占执行上下文分配给每个数据集组以及估计每个数据集的数据集请求的数量。所述控制模块还用于基于所述估计的数据集请求的数量确定每个数据集组的数据集以及将所述数据集重分配给所述数据集组,使得所述估计的数据集组中的数据集请求的数量小于或等于至少一个独占执行上下文下的数据集请求的预定数量,所述至少一个独占执行上下文被分配给所述多个数据集组中的一个。
特别地,本文所描述的所述数据管理设备可解决全共享架构上的分区内存数据存储中的不均衡问题。所述数据管理设备的一个方面是建立一个全局动态工作负载分布的精确瞬时统计模型以及根据感知的负载重划分所述数据集。所述数据管理设备可描述为实施应用于内存数据库或数据存储的主动方法。
独占执行上下文可以是在计算设备的处理单元上执行的线程。在下文中,当提及线程时,应理解,各个说明通常还涉及独占执行上下文。上文提到的数据集可描述为包括至少一个键值表项(最好为排序或聚集在一起的一个以上键值表项)的一个分条,而数据集组是包括多个数据集的一个分区。这些术语可分别用于互相代表。
一个数据集请求尤其涉及对数据集的一个操作(读/写),所述数据集请求由客户端发起并被转发给待在所述分区之一中的数据集上执行的所述线程之一。所述数据集请求可在所述分区(各自具有独占上下文)上处理,并且可为各种类型,例如,它们可为结构化查询语言(structured query language,SQL)或OLTP事务。当所述控制模块发起重分区时,还可考虑执行的所述请求的数量和类型两者,甚至可折叠/合并分区。
一般而言,控制单元可在其重分区决策中使用任何平台相关的应用和动态信息。
每个数据集组包括多个数据集,每个数据集仅包含在一个数据集组中。这种关系可描述为数据集对数据集组的N对1关系。
每线程的请求可描述为基于测量的请求数量的值函数,这些请求在所述数据存储上处理,所述值函数视为请求到达率的目前和/或未来分布除以所分配线程的初始数量的似然。当所述控制模块可以确定或已确定所述线程的性能并且可以决定待分配的线程的数量时,可使每线程的请求为静态,从而在如果决定这么做时减少所述线程的数量并节省功率耗损。
所述数据管理设备,特别是所述控制单元,用于确定每个数据集组的数据集。例如,确定每个数据集组的组成成分,即,确定每一单个数据集分配到哪个数据集组。
例如,所述控制模块可用于基于数据集请求在所述数据集组上的分布确定每个数据集组的数据集以及将所述数据集重分配给所述数据集组,使得所述数据集组中的所述数据集请求的预期数量小于或等于至少一个独占执行上下文的数据集请求的预定数量,所述至少一个独占执行上下文被分配给所述多个数据集组中的一个。这样,基于每个分区的请求的所述预期数量进行所述分区。
在一项实施例中,所述控制模块还可用于基于所述存储模块上的特定请求类型的累积似然函数确定每个数据集的数据集请求的似然和/或确定每个数据集组的所述数据集,以及将所述数据集重分配给所述数据集组,使得数据集组中请求数量的似然小于或等于每个独占执行上下文的请求的预定数量。例如,OLTP请求可访问若干数据存储位置进行读/写。换言之,所述OLTP请求具有覆盖子集数据存储的可能性,所述子集数据存储是具有覆盖所述数据存储中的特定位置的可能性的获得/放置(get/put)的扩展。
所述数据管理设备的一个方面是重新调整所述分区的大小,使得重分配所述数据集到所述数据集组的映射。这种重分配可基于所述数据存储上的请求分布的统计似然,因此实现纠正和预测性负载均衡,使得访问所述数据集组的过程避免在存在请求分布不均衡情况下的串行化以及实现请求处理和可扩展性的并行化。
根据本发明的一实施例,所述控制模块用于动态地适应所述至少一个独占执行上下文的数据集请求的预定数量,所述至少一个独占执行上下文在所述数据管理设备的操作期间被分配给所述多个数据集组中的一个。
因此,阈值可适应于所述数据管理设备的改变的负载条件,例如,如果数据集请求的总量增加或减少且数据集组和线程的数量保持不变。
根据本发明的又一实施例,所述控制模块用于估计每个数据集的数据集请求的似然以及基于所述存储模块上的请求的累积似然函数确定每个数据集组的所述数据集,以及将所述数据集重分配给所述数据集组,使得数据集组中请求数量的似然小于或等于至少一个独占执行上下文的数据集请求的预定数量,所述至少一个独占执行上下文被分配给所述多个数据集组中的一个。
换言之,所述控制模块可用于基于所述存储模块上的请求分布的累积似然函数确定每个数据集组的所述数据集,其中每个请求可分配有权重,即度量值,以及将所述数据集重分配给所述数据集组,使得数据集组中请求数量的似然小于或等于每个独占执行上下文的请求的预定数量。
根据本发明的又一实施例,通过测量数据集请求的数量来近似计算每数据集的数据集请求数量的所述似然,所述数据集请求应用到每个数据集,所述似然通过各个请求权重参数和累积似然分布函数,CDF,来缩放,所述累积似然分布函数根据数据集上的请求的所述似然计算。
数据集上的请求的所述似然可根据按所述存储模块中的预定顺序排序的数据集计算。重分区方法可通过按下式计算累积分布函数的反向来获取:
j=CDF-1(work-per-thread*k)
其中,1≤k≤线程数量(Num_of_threads),j是全序中数据集的索引。
因此,所述每数据集的请求按(将通过排序或一些其它方法定义的)某种顺序排列在阵列中。例如,可存在阵列pdf[i],其保存数据集i中所接受请求的数量,0<=i<=N且N为一个数据集组中的数据集的数量。然后,按如下所示的递推等式计算CDF:
CDF[0]=pdf[0]
CDF[i]=pdf[i]+CDF[i-1];其中1<=i<=N
可通过使用如下所示的定制对分搜索完成CDF-1的计算:
bin_search(CDF,work-per-thread*k)returns index j,
其中CDF[j]≤work-per-thread*k。
根据本发明的又一实施例,所述控制模块用于动态地改变一个数据集组中包含的数据集的数量和/或标识。
数据集组的大小可在所述数据管理设备的操作期间改变。改变一个数据集组中包含的数据集的标识可描述为重排数据集到数据集组的分配,例如,在数据集的重排之后,数据集1可安排到另一数据集组中。
因此,数据集组的大小和/或内容基于数据集请求的数量和/或类型调整。重新调整所述数据集组的大小可产生如下效果:包含不经常被请求的数据集的数据集组可能会更大,包含经常被请求的数据集的数据集组可能会更小(其中,频率通过诸如如上描述的似然分布函数近似计算),使得所述数据集组的整体工作负载均衡且在存在工作请求不均衡的情况下避免串行化(同时实现并行化)。
例如,如果一个数据集组获得大部分请求时,则存在工作负载不均衡。在这种情况下,仅一个线程串行处理它们。那么,所述数据管理设备的性能通常限制为一个线程的吞吐量,所述线程的延迟增长了两倍,就好像两个线程并行工作(具有两个吞吐量)一样。
根据本发明的又一实施例,所述控制模块用于反复确定至少第一数据集组的数据集,以及如果至少为第一数据集组确定的数据集的数量与所述至少第一数据集组中的数据集的当前数量之差超过预定阈值,将所述数据集重分配给所述数据集组。
换言之,重分区计算由系统事件定期重复或触发,例如每隔几秒钟。如果所述第一数据集组的新大小和所述第一数据集组的旧大小之差未超过所述阈值,则放弃分区计算。
所述控制模块可反复确定每个数据集组的数据集的数量,并可执行对每个数据集组而不仅对所述第一数据集组的步骤。
一方面,执行重分区可能消耗系统资源,因为这要求计算能力;另一方面,重分区带来所述分区和所述所分配线程的更好的工作负载均衡。因此,评估所述重分区带来的系统性能的预期增益是否高于所述重分区的所需计算能力是有利的。
在本实施例中,仅在所述重分区带来的所述系统性能的预期增益高于所述重分区的资源成本时才执行所述重分区,这通过比较当前分区大小与预期新分区大小以及确定它们之间的差来实现。
根据本发明的又一实施例,所述控制模块用于:在所述第一数据集组的数据集请求的第一数量与第二数据集组的数据集请求的第二数量之差等于或大于所述预定阈值,将所述数据集重分配给所述数据集组。
在本实施例中,重分区是在两个数据集组之差高于预定阈值时开始的。换言之,系统性能的整体增益(重分区成本-系统性能的增益)可能不仅考虑当前分区大小和预期分区大小,而且还考虑两个或更多分区的相对分区大小中的变化。
这具体涉及重排数据集组中的数据集,并且在两个现有分区之间的工作负载不均衡的情况下是有利的。
可选择所述阈值(第一和第二分区之差),使得所述重分区不会太频繁或以最小差执行,因为这消耗计算能力,以及重分区在如果所述数据集组的所述工作负载不均衡时执行,使得由于不均衡的工作负载导致的额外计算能力等于或大于重分配过程的计算能力。
根据本发明的又一实施例,所述控制模块用于按所述数据集请求数量的升序和/或所述数据集请求的类型将所述数据集分配给数据集组。
所述数据集请求的所述数量的升序意味着所述数据集以逻辑方式排列,这样所述数据集请求的所述数量增加,于是所述数据集到所述数据集组的分配按该顺序执行。例如,具有较少数据集请求的所述数据集被分配给所述第一数据集组,直到分配给所述第一数据集组的所述数据集已达到所述数据集请求的所述阈值(=所述第一数据集组中的所有数据集的所述数据集请求的和);后续数据集可类似地分配给后续数据集组,直到各个数据集组达到每数据集组的数据集请求的阈值。
所述控制模块可用于按所述存储模块中的数据集的全序分配所述数据集。
在本实施例中,创建包含数据集的数据集组,所述数据集具有类似的数据集请求数量。所述数据集组的所述请求数量(即,一个组中的所有数据集的请求的总数)调整为类似水平,并且各个数据集组中的所述数据集还可分组,使得所述数据集的所述请求数量几乎差不多。
这可克服每个线程的请求分布中的非相邻峰值。所述重分区之后,所述数据集在所述数据集组中排列,使得所述线程和相应分区根据它们的工作负载彼此相邻并且具有任何工作负载的线程均不排列在中间。在多数据集事务中涉及的数据集上缩放的适当权重可保证这些数据集在所述全序中相邻,从而能够相应地合并所述数据集组。
根据本发明的又一实施例,所述控制模块用于按所述数据集请求的数量的降序将所述数据集分配给数据集组。
在本实施例中,所述数据集以逻辑方式安排,使得所述数据集的所述数量下降,然后所述数据集到所述数据集组的分配按该顺序执行。具有的数据集请求数量较大的所述数据集被分配给所述第一数据集组,直到所述第一数据集组的已分配数据集达到所述数据集请求的所述阈值(=所述第一数据集组中的所有数据集的所述数据集请求的和)。后续数据集类似地分配给后续数据集组,直到所述数据集组达到每数据集组的数据集请求的阈值。
在本实施例中,可确定强烈请求或要求的数据集的位置。强烈请求的数据集排列在所述第一数据集组中。
或者,所述控制模块可用于按所述存储模块中的数据集的所述全序将所述数据集分配给所述数据集组。
根据本发明的又一实施例,所述存储模块是非永久性存储器。
所述非永久性存储器可为随机存取存储器(random access memory,RAM),因此,所述数据集组可建立内存数据库以实现高事务率。
根据本发明的又一实施例,所述控制模块用于创建多个独占执行上下文以及将每个独占执行上下文分配给一个数据集组。
因此,独占执行上下文可描述为分配给一个数据集组以对所述数据集组的数据集执行操作的工作线程。
具有多个独占执行上下文允许所述独占执行上下文的层级处的负载均衡以及当现有独占执行上下文过载时创建新的独占执行上下文。
因此,不同级别的负载均衡可如下所示称为:第一级负载均衡是重分区,如上所述;第二级负载均衡通过创建额外独占执行上下文(工作线程)来执行,所述独占执行上下文可处理未决请求以减少现有线程的平均工作负载。
如果系统工作负载减少,即,当整体工作负载允许时,所述控制模块将停止至少一个或一些独占执行上下文以降低功率,并将分区重分配给剩下的独占执行上下文。
根据本发明的又一实施例,所述控制模块用于至少暂时将所述多个独占执行上下文分配给一个数据集组。
所述控制模块可为一个或多个处理器或处理器的内核。所述控制模块可从事线程的工作并将工作分配给其它线程以实现μ秒时标之际的工作负载。所述分配优选地为临时分配,即,在一个独占执行上下文超载且另一独占执行上下文在其请求队列中没有未决请求的情况下。
在本实施例中,特别是当一个独占执行上下文无法利用一个数据集组的可用工作负载时,将多于一个独占执行上下文分配给一个数据集组以得到均衡的系统是有利的,即,所述独占执行上下文和所述数据集组加载到相似水平,例如,两者都在其最大大小的75%和85%之间的范围中。
根据本发明的又一实施例,所述控制模块用于确定一个独占执行上下文的平均负载以及在所述平均负载超过预定负载值时创建额外的独占执行上下文。
因此,可基于当前的整体系统负载充分确定独占执行上下文的数量。类似地,当所述负载允许时,可减少所述独占执行上下文的数量。
根据本发明的又一实施例,所述控制模块用于确定任意独占执行上下文的工作负载以及在第一独占执行上下文的工作负载为预定阈值时将所述独占执行上下文重分配给所述数据集组,所述预定阈值超过第二工作进程的工作负载。
这实现了额外水平上的负载均衡;第一负载均衡机制是重新调整数据集组的大小,第二负载均衡机制是将工作进程重分配给数据集组。因此,负载均衡的粒度得以提高,并且可在不同场景中使用不同机制。特别地,所述将工作进程重分配给所述数据集组所需的计算能力低于所述重新调整数据集组的大小所需的计算能力。
换言之,所述数据管理设备可描述如下:
可以看出,所述数据管理设备的一个方面是进一步通过考虑工作负载动态性采取数据集分区上的线程独占的概念。通过将键值存储建模为分条集合,以及通过建模应用到其分条分区的每个线程操作的成本,建立了分区上的全局负载分布的统计模型。所述模型通过平台特征增强并与应用串并联权衡推理相结合,用于计算数据集的新动态平衡分区,所述新动态平衡分区实现了感知负载下充分的吞吐量-延迟整体性能。通过利用所述全共享架构,改变分区大小可在无任何数据移动的情况下发生。
这种方法可根据感知的工作负载实现全机器资源利用的全局视图,因此其可实现将所述感知的工作负载与多个有效资源利用匹配,从而促进高效率。所述数据管理设备可为轻量级的,其可迅速对不均衡的工作负载分布和可变性作出反应,并可通过来自一个线程的工作窃取实现瞬时均衡以及将被窃取的工作分配给另一线程。本文所描述的方法可基于热/冷集群等动态捕获的信息实现高级优化。可利用静态知识和约束增强单线程性能。可利用动态信息增强多线程性能。总之,所有这些质量可有助于高效的可扩展键值存储。
附图说明
本发明的是实施例将结合以下附图进行描述,其中:
图1示意性地示出了根据本发明的示例性实施例的连接到多个请求设备的数据管理设备;
图2示意性地示出了根据本发明的示例性实施例的数据管理设备的键值存储线程模型;
图3示意性地示出了根据本发明的示例性实施例的数据管理设备的多个数据集组上的概率分布函数的直方图;
图4示意性地示出了根据本发明的示例性实施例的基于数据管理设备中排序概率分布函数上的累积分布函数的数据集组的分区;
图5示意性地示出了根据本发明的示例性实施例的数据管理设备中的数据集组的组成成分;
图6示意性地示出了根据本发明的示例性实施例的数据管理设备中的请求路由处理;
图7示意性地示出了根据本发明的示例性实施例的在数据管理设备中重分区数据集组的步骤。
具体实施方式
图1示出了具有控制模块100和存储模块110的数据管理设备10,其中数据管理设备10可通信地连接至一个或多个请求设备20,请求设备20可称为客户端。数据管理设备还可称为服务器。
存储模块110用于包含内存数据库,内存数据库包含多个数据集组,每个数据集组具有多个数据集表项。控制模块100用于调度请求客户端对存储模块110的接入以及组织内存数据库的结构(重分区、将线程重分配给分区,等等,如上参考数据管理设备所描述)。
图2示出了常见键值存储线程模型,其可由数据管理设备10使用。具体而言,图2可涉及描述内存键值存储中的分区和线程分配。存储布局抽象120指定分条122的集合,每个分条代表键值存储中定义的某个表的行的聚合。键值存储操作处理分为前端(Front End,FE)140和后端(Back End,BE)130。一组工作队列142是FE 140和BE 130之间的主接口,每个工作队列142包括一对操作请求队列和其响应队列。每个队列与一个BE工作线程相关联。
FE 140包括一组通信线程144和解复用器148。解复用器148用于确定请求加入到的特定队列。
通信线程144读取通信接口获取请求,使用解复用器确定目标队列,以及将请求发布到请求队列中。在反方向中,通信线程读取响应队列以及将响应传送给关联的接口146。
BE 130包括一组工作线程,对于每个线程,对应的一组分条122可来自不同的表,称为分区121。将所有分条分布到分区以及将线程重分配给分区确定了分区。
工作线程将请求从其请求队列中移除,在该请求的分区中的分条之一上执行该请求,并将响应发布到其响应队列上。如果分区使静态的,那么不均衡工作负载下的请求可面向仅少数分区;然后,键值存储的操作突出高延迟下的低吞吐量,因为为数不多的工作线程需要处理大部分请求,而剩下的线程空闲。
为了应对不均衡问题,每个分条在数据集中扩大,数据集具有额外的成员来存储分条的执行次数以及其在所有分条的全序枚举中的全局排序位置。最初,分条可随意排序,分区可在每个分区中包含相等数量的分条。
当应用运行时,线程将分条的执行次数增加与所执行操作的‘权重’成比例的数量。概率分布函数(probability distribution function,PDF)顺着排序维度(通过分条的全序位置确定,称为x轴)与具有沿x轴的执行次数的直方图关联。
图3描绘了620个分条上的高斯PDF的直方图。
通过从平台特征推导出的任何分条间相邻关系或任何应用定义策略沿x轴重新放置分条,从而定义沿x轴的分条的新全序。由于x轴被划分为间隔,所述新排序确定了分区之间的相邻关系。例如,分条可按它们的执行次数排序,从而按‘热度’排序分条,并因此获得渐热/冷的集群。类似地,分条上的事务执行的其它动态指标可捕获并建模为相邻关系。
PDF沿新的x轴集成,从而计算工作负载累积分布函数(cumulative distributionfunction,CDF)。通过将最右边界CDF值除以执行线程的数量来计算每线程平均工作值。或者,已获知峰值性能下的每线程最大可能工作值,可充分推导感知的工作负载所需工作线程的数量,从而进行所传递的吞吐量和延迟之间的权衡,以及将线程资源分配到别处。
之后,将y轴的CDF除以每线程工作值的增量并投射到x轴上,从而将x轴的分区获取为间隔,使得每个间隔具有CDF中相等的增量。
图4示出了CDF,其通过排序的高斯PDF集成,划分为八个间隔,即分区210、220、230、240、250、260、270以及280。最后的分区280结束于620,参见参考图3提及的分条数量。
每个间隔与某个线程所拥有的分条的分区相关联。因此,通过重新调整这些分区的大小,执行线程上的负载均衡。
通过关联,如果通信线程被分配于服务一个分区,使得到该分区的请求/响应通过该通信线程所服务的关联连接来传送,那么,在重分区之后,通信线程上的负载均衡。这要求将分区信息传送给数据存储客户端20,使得客户端20可以选择特定连接以在其上发送请求。
因此,重分区还处理通信,避免当若干通信线程想要将它们的请求从队列移出到热门分区时花费在竞争管理上的性能开销。
不均衡检测的方法可从重分区算法推导出:计算新分区并将新分区的大小与老分区的大小相比较。如果差值超过阈值,则设立新分区来替代老分区。否则,丢弃新分区计算。
不均衡检测可定期运行,或可通过某个系统事件,像表明严重不均衡情况的某个队列上的空闲请求缓冲区耗尽,来触发重分区。在工作负载变化缓慢的情况下,可较少运行不均衡检测算法。为了补偿工作线程上的负载分布中的瞬时峰值,可使用工作窃取策略。即,具有空队列的线程可探测其相邻队列并在其邻居的分区上执行请求。因此,工作窃取实现了瞬时动态负载均衡和跨相邻分区的事务。
所描述的方法能够通过全共享架构上的分区键值存储以全局的方式解决各种粒度的不均衡问题。
参考图5至7描述了一个示例性实施方式示例。
本示例涉及一种操作的基于哈希的键值存储。也就是说,存储保存它们的键以一定顺序确定的行。解复用器内的哈希表将键映射到分条和相对于分条的行。
中心数据结构是Ranges[]阵列520和Stripes[]阵列510的成分。Stripes[]元素包含对表示分条122的数据结构的引用;分条数据结构包括执行计数器540,执行计数器540反映在分条上执行的所有操作的成本。另外,分条数据结构包括整数值RasMap530,RasMap530指定分条的第一行在分条的全局全序中的位置。
Stripes[]阵列510根据该全序排序。Ranges[]阵列520保存定义Stripes[]阵列中范围的高边界的高指数。该范围的低边界通过Ranges[]阵列的先前元素的‘高’指数隐式定义。另外,Ranges[]元素包括与分条范围相关联的工作队列525。因此,Ranges[]将Stripes[]阵列划分为范围,并将范围映射到工作队列。
图5描绘了Ranges[]和Stripes[]的成分,其保存了对五个分条结构的引用,表示两个表,以及每个分条的RasMap和ExecCounter成员。Stripes[]引用按RasMap值530排序,RasMap值530根据ExecCount 540的值反映按执行次数的分条排序。还需注意,每个范围保存来自不同表的分条。
Ranges[]和Stripes[]的组成成分支持的基本操作是将请求路由到特定队列,以及重分区,即,动态地重新调整分区的大小,或者换言之,动态控制线程的分区与分条的包含关系。请求路由过程在图5的下部分示意性地描绘。图6示出了请求路由过程的控制流。
在步骤551,接收请求指示表、键和点操作操作码。访问对应的哈希表550,将表和键转化为分条和行号引用。在‘插入’操作的情况下,表中没有对键的引用。因此,调用对应表的插入方法,这命名用于插入的分条和行号,分条和行号放置在对应的哈希表中。此后,插入被视为更新。
在步骤552,保存分条引用,读取其RasMap,并将操作码“转换”为对应分条的方法调用指针。获取请求-响应缓冲区560并使用方法、行号和任何额外参数填充。
在步骤553,使用获取的RasMap对Ranges[]阵列进行对分搜索。在步骤554,将对分搜索、Stripes[]的子范围的低和高元素间接引用到它们的RasMaps并与获取的RasMaps相比较。鉴于RasMaps包含在子范围中,请求-响应缓冲区被推动到子范围的工作队列上。
换言之,如图6描绘,将请求的主键通过解复用器的哈希表550弄散以获取分条和行的行号,请求将在该行上执行,步骤610。已获取分条结构后,在步骤620中通过添加行号和分条的RasMap计算该行的RasMap。通过获取的RasMap,对发现范围和关联的工作队列的Ranges[]阵列进行对分搜索,参见步骤630。最后,请求在所发现的工作队列上排队,步骤640。
图7包含显示重分区的基本控制流的流程图,出于阐述的简洁性,在重分区中,分条被视为不可分割的。分条可根据分区细分以及合并。在本示例中,分条通过‘热度’,即请求数量,来聚集。
在定期运行的独立线程中,根据执行计数器排序临时Stripes[]阵列,临时Stripes[]阵列保持对所有分条结构的引用,步骤710。稍后将更新分条的结构RasMap以反映排序顺序。接着,使用临时阵列上的简单重现计算CDF,步骤720。在步骤730中,通过将最后的CDF元素除以工作线程的数量来计算每线程平均工作值。在步骤740中,通过按每线程平均工作值的倍数对CDF阵列进行对分搜索来计算新的临时Ranges[]阵列。最后,用临时Ranges[]和Stripes[]替换旧的Ranges[]和Stripes[]并且更新分条的RasMap,而暂停所有通信线程,步骤750。最后,将分条增量地重新绑定到对应的线程内核,步骤760,以及停止通信线程,步骤770。应注意,大部分重分区计算可在不影响键值存储的正常操作的情况下进行,从而使其相对轻量化。

Claims (18)

1.一种数据管理设备(10),其特征在于,包括:
控制模块(100);以及
存储模块(110);
其中所述存储模块(110)用于将多个数据集存储在多个数据集组中,使得所述多个数据集被分配给所述多个数据集组,这样,每个数据集组包括至少一个数据集且每个数据集仅被存储在一个数据集组中;
所述控制模块(100)用于将独占执行上下文分配给每个数据集组;
所述控制模块(100)用于估计每个数据集的数据集请求的数量;
所述控制模块(100)用于基于所述估计的数据集请求的数量确定每个数据集组的数据集以及将所述数据集重分配给所述数据集组,使得所述估计的一个数据集组中的数据集请求的数量小于或等于至少一个独占执行上下文的数据集请求的预定数量,所述至少一个独占执行上下文被分配给所述多个数据集组中的一个;
所述控制模块(100)还用于创建多个独占执行上下文以及将每个独占执行上下文分配给一个数据集组,以及用于确定一个独占执行上下文的平均负载以及在所述平均负载超过预定负载值时创建额外的独占执行上下文。
2.根据权利要求1所述的数据管理设备,其特征在于:
所述控制模块(100)用于动态地调整至少一个独占执行上下文的数据集请求的预定数量,所述至少一个独占执行上下文在所述数据管理设备的操作期间被分配给所述多个数据集组中的一个。
3.根据权利要求1或2所述的数据管理设备,其特征在于:
所述控制模块(100)用于估计每个数据集的数据集请求的似然;
所述控制模块(100)用于基于所述存储模块(110)上的请求的累积似然函数确定每个数据集组的数据集,以及将所述数据集重分配所述数据集组,使得一个数据集组中的请求数量的似然小于或等于至少一个独占执行上下文的数据集请求的预定数量,所述至少一个独占执行上下文被分配给所述多个数据集组中的一个。
4.根据权利要求3所述的数据管理设备,其特征在于:
通过测量数据集请求的数量来近似计算每数据集的数据集请求数量的所述似然,所述数据集请求应用于每个数据集,所述似然通过各个请求权重参数和累积似然分布函数,CDF,来缩放,所述累积似然分布函数根据数据集上的请求的所述似然计算。
5.根据权利要求1或2所述的数据管理设备,其特征在于:
所述控制模块(100)用于动态地改变一个数据集组中包含的数据集的数量和/或标识。
6.根据权利要求1或2所述的数据管理设备,其特征在于:
所述控制模块(100)用于反复确定至少第一数据集组的数据集,以及在所述确定的至少所述第一数据集组的数据集的数量与至少所述第一数据集组中的数据集的当前数量之差超过预定阈值时,将所述数据集重分配给所述数据集组。
7.根据权利要求6所述的数据管理设备,其特征在于:
所述控制模块(100)用于在所述第一数据集组的数据集请求的第一数量与第二数据集组的数据集请求的第二数量之差等于或大于所述预定阈值时,将所述数据集重分配给所述数据集组。
8.根据述权利要求1或2所述的数据管理设备,其特征在于:
所述控制模块(100)用于按所述数据集请求数量的升序和/或数据集请求的类型将所述数据集分配给一个数据集组。
9.根据权利要求1或2所述的数据管理设备,其特征在于:
所述控制模块(100)用于按所述数据集请求数量的降序将所述数据集分配给一个数据集组。
10.根据权利要求1或2所述的数据管理设备,其特征在于:
所述存储模块(110)是非永久性存储器。
11.根据权利要求1所述的数据管理设备,其特征在于:
所述控制模块(100)用于至少暂时将所述多个独占执行上下文分配给一个数据集组。
12.根据权利要求1或2所述的数据管理设备,其特征在于:
所述控制模块(100)用于确定任意独占执行上下文的工作负载以及在第一独占执行上下文的工作负载为预定阈值时将所述独占执行上下文重分配给所述数据集组,所述预定阈值超过第二工作进程的工作负载。
13.一种数据管理方法,其特征在于,所述方法包括:
将多个数据集存储在多个数据集组中,使得所述多个数据集被分配给所述多个数据集组,这样,每个数据集组包括至少一个数据集且每个数据集仅被存储在一个数据集组中;
将独占执行上下文分配给每个数据集组;
估计每个数据集的数据集请求的数量;
基于所述估计的数据集请求的数量确定每个数据集组的数据集以及将所述数据集重分配给所述数据集组,使得所述估计的一个数据集组中的数据集请求的数量小于或等于至少一个独占执行上下文的数据集请求的预定数量,所述至少一个独占执行上下文被分配给所述多个数据集组中的一个;
创建多个独占执行上下文以及将每个独占执行上下文分配给一个数据集组,以及确定一个独占执行上下文的平均负载以及在所述平均负载超过预定负载值时创建额外的独占执行上下文。
14.根据权利要求13所述的数据管理方法,其特征在于,所述方法还包括:
动态地调整至少一个独占执行上下文的数据集请求的预定数量,所述至少一个独占执行上下文在所述数据管理设备的操作期间被分配给所述多个数据集组中的一个。
15.根据权利要求13所述的数据管理方法,其特征在于,所述方法还包括:
估计每个数据集的数据集请求的似然;
基于存储模块(110)上的请求的累积似然函数确定每个数据集组的数据集,以及将所述数据集重分配所述数据集组,使得一个数据集组中的请求数量的似然小于或等于至少一个独占执行上下文的数据集请求的预定数量,所述至少一个独占执行上下文被分配给所述多个数据集组中的一个。
16.根据权利要求15所述的数据管理方法,其特征在于,所述方法还包括:
通过测量数据集请求的数量来近似计算每数据集的数据集请求数量的所述似然,所述数据集请求应用于每个数据集,所述似然通过各个请求权重参数和累积似然分布函数,CDF,来缩放,所述累积似然分布函数根据数据集上的请求的所述似然计算。
17.根据权利要求16所述的数据管理方法,其特征在于,所述方法还包括:
在第一数据集组的数据集请求的第一数量与第二数据集组的数据集请求的第二数量之差等于或大于预定阈值时,将所述数据集重分配给所述数据集组。
18.根据权利要求13到17中任一权利要求所述的数据管理方法,其特征在于,所述方法还包括:
确定任意独占执行上下文的工作负载以及在第一独占执行上下文的工作负载为预定阈值时将所述独占执行上下文重分配给所述数据集组,所述预定阈值超过第二工作进程的工作负载。
CN201680015894.9A 2015-04-08 2016-04-05 大型内存数据库的负载均衡的装置 Active CN107430529B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP15162700.7A EP3079060B1 (en) 2015-04-08 2015-04-08 Load balancing for large in-memory databases
EP15162700.7 2015-04-08
PCT/EP2016/057438 WO2016162338A1 (en) 2015-04-08 2016-04-05 Load balancing for large in-memory databases

Publications (2)

Publication Number Publication Date
CN107430529A CN107430529A (zh) 2017-12-01
CN107430529B true CN107430529B (zh) 2020-12-01

Family

ID=52874965

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680015894.9A Active CN107430529B (zh) 2015-04-08 2016-04-05 大型内存数据库的负载均衡的装置

Country Status (6)

Country Link
US (1) US10445344B2 (zh)
EP (1) EP3079060B1 (zh)
JP (1) JP6429262B2 (zh)
CN (1) CN107430529B (zh)
RU (1) RU2675054C2 (zh)
WO (1) WO2016162338A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3079065B1 (en) 2015-04-08 2019-06-12 Huawei Technologies Co., Ltd. Redo-logging for partitioned in-memory datasets
US20190196969A1 (en) 2017-12-22 2019-06-27 Samsung Electronics Co., Ltd. Method and apparatus for adaptive cache load balancing for ssd-based cloud computing storage system
CN109684374B (zh) * 2018-11-28 2021-05-25 海南电网有限责任公司信息通信分公司 一种时间序列数据的键值对的提取方法及装置
US10984115B2 (en) * 2018-12-04 2021-04-20 Bank Of America Corporation System for triple format preserving encryption
US11139969B2 (en) 2018-12-04 2021-10-05 Bank Of America Corporation Centralized system for a hardware security module for access to encryption keys
CN109640197B (zh) * 2018-12-04 2021-12-07 中国航空工业集团公司西安航空计算技术研究所 一种基于缓冲区共享的fc通信实现方法
CN110347482B (zh) * 2019-07-18 2021-07-23 哈尔滨汇拓投资中心(有限合伙) 基于OLTPShare的OLTP事务结合规则与队列模型改进方法
CN112835750B (zh) * 2019-11-22 2023-01-17 上海欧菲智能车联科技有限公司 数据处理方法及数据处理系统
US11340942B2 (en) 2020-03-19 2022-05-24 Raytheon Company Cooperative work-stealing scheduler
CN112286917B (zh) * 2020-10-22 2022-10-18 北京锐安科技有限公司 数据处理方法、装置、电子设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103095804A (zh) * 2011-12-13 2013-05-08 微软公司 集群存储系统中的负载平衡
US8539197B1 (en) * 2010-06-29 2013-09-17 Amazon Technologies, Inc. Load rebalancing for shared resource
CN104272386A (zh) * 2012-04-25 2015-01-07 国际商业机器公司 通过分层存储系统内的数据迁移减少功耗

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6070191A (en) * 1997-10-17 2000-05-30 Lucent Technologies Inc. Data distribution techniques for load-balanced fault-tolerant web access
US6658449B1 (en) * 2000-02-17 2003-12-02 International Business Machines Corporation Apparatus and method for periodic load balancing in a multiple run queue system
EP1903444B1 (en) * 2004-02-12 2011-05-11 Irdeto Access B.V. Method and system of external data storage
US8311663B2 (en) * 2005-08-31 2012-11-13 International Business Machines Corporation Apparatus and method to store information
US8423739B2 (en) * 2008-02-06 2013-04-16 International Business Machines Corporation Apparatus, system, and method for relocating logical array hot spots
US8806426B2 (en) * 2008-06-04 2014-08-12 Microsoft Corporation Configurable partitioning of parallel data for parallel processing
JP5412902B2 (ja) * 2009-03-17 2014-02-12 日本電気株式会社 ストレージシステム
US8972488B2 (en) * 2010-09-28 2015-03-03 Redis Labs Ltd. System, methods, and media for providing in-memory non-relational databases
JP2013171305A (ja) 2012-02-17 2013-09-02 Fujitsu Ltd ストレージ装置、ストレージシステム、ストレージ管理方法及びストレージ管理プログラム
JP2014010604A (ja) * 2012-06-29 2014-01-20 Nec Corp ストレージ装置とプログラムと方法
US10049134B2 (en) * 2014-06-12 2018-08-14 International Business Machines Corporation Method and system for processing queries over datasets stored using hierarchical data structures
EP3054384B1 (en) 2015-02-04 2018-06-27 Huawei Technologies Co., Ltd. System and method for memory synchronization of a multi-core system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8539197B1 (en) * 2010-06-29 2013-09-17 Amazon Technologies, Inc. Load rebalancing for shared resource
CN103095804A (zh) * 2011-12-13 2013-05-08 微软公司 集群存储系统中的负载平衡
CN104272386A (zh) * 2012-04-25 2015-01-07 国际商业机器公司 通过分层存储系统内的数据迁移减少功耗

Also Published As

Publication number Publication date
JP6429262B2 (ja) 2018-11-28
EP3079060A1 (en) 2016-10-12
RU2675054C2 (ru) 2018-12-14
EP3079060B1 (en) 2018-03-28
RU2017117582A (ru) 2018-11-22
JP2017533532A (ja) 2017-11-09
CN107430529A (zh) 2017-12-01
US10445344B2 (en) 2019-10-15
US20170193077A1 (en) 2017-07-06
WO2016162338A1 (en) 2016-10-13
RU2017117582A3 (zh) 2018-11-22

Similar Documents

Publication Publication Date Title
CN107430529B (zh) 大型内存数据库的负载均衡的装置
US10474501B2 (en) Serverless execution of code using cluster resources
JP2559915B2 (ja) ロードバランスシステム
EP3522500A1 (en) Method and system for multi-tenant resource distribution
US8352945B2 (en) System, method, and apparatus for scan-sharing for business intelligence queries in an in-memory database
Rahm et al. Dynamic multi-resource load balancing in parallel database systems
JP6241300B2 (ja) ジョブスケジューリング装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム
JP2007249468A (ja) Cpu割当方法、cpu割当プログラム、cpu割当装置、および、データベース管理システム
Wang et al. Actcap: Accelerating mapreduce on heterogeneous clusters with capability-aware data placement
CN110874271A (zh) 一种海量建筑图斑特征快速计算方法及系统
US20190056872A1 (en) Reallocate memory pending queue based on stall
CN104158902B (zh) 一种基于请求数的Hbase数据块分配方法及装置
US10771982B2 (en) Resource utilization of heterogeneous compute units in electronic design automation
US20220043678A1 (en) Efficient distributed scheduler for a data partitioned system
CN108132834A (zh) 多级共享高速缓冲存储器架构下的任务分配方法和系统
CN109150759B (zh) 一种渐进式非阻塞机会资源预留方法及系统
US10140021B2 (en) Adaptive data-partitioning model that responds to observed workload
CN112136114A (zh) 调谐资源设置等级用于查询执行
CN115168058B (zh) 线程负载均衡方法、装置、设备及存储介质
Chen et al. A real-time scheduling strategy based on processing framework of Hadoop
KR101639947B1 (ko) 하둡 선점 데드라인 제약 스케줄링 방법 및 그 방법을 수행하는 컴퓨터프로그램과, 그 프로그램이 기록된 매체
Al-Yatama et al. Memory allocation algorithm for cloud services
Luo et al. Towards efficiently supporting database as a service with QoS guarantees
US11966783B1 (en) Real time scheduling using expected application resource usage
Duan et al. Improving Load Balance via Resource Exchange in Large-Scale Search Engines

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant