CN111444183B - 一种键值存储***中的分布式自适应用户请求调度方法 - Google Patents
一种键值存储***中的分布式自适应用户请求调度方法 Download PDFInfo
- Publication number
- CN111444183B CN111444183B CN202010217985.9A CN202010217985A CN111444183B CN 111444183 B CN111444183 B CN 111444183B CN 202010217985 A CN202010217985 A CN 202010217985A CN 111444183 B CN111444183 B CN 111444183B
- Authority
- CN
- China
- Prior art keywords
- server
- user request
- key value
- key
- keyset
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Fuzzy Systems (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本专利公开了一种键值存储***中的分布式自适应用户请求调度(Distributed Adaptive Scheduling,DAS)方法。该方法在键值存储***的客户端部署改进的二近似排序方法,在服务器端部署最短剩余处理时间优先调度方法,通过二者的优势结合,并同时引入信息反馈机制以适应服务器随时间变化的性能和负载,以及增加超时机制以缓解饥饿问题,从而合理的调度服务器上键值访问操作的服务顺序,以改善对应于大量键值访问操作的用户请求的平均完成时间。实验结果表明,相比于现有的先来先服务(First Come First Service)方法,最短剩余处理时间优先方法,Rein‑SBF方法,本发明能够更好的降低用户请求的平均完成时间。
Description
技术领域
本发明涉及键值存储***中的用户请求调度,特别涉及一种键值存储***中的分布式自适应用户请求调度方法。
背景技术
目前,在分布式应用中,例如网页搜索、社交网络以及电子商贸等,键值存储***是一个比较重要的组成部分,并已经被许多著名的公司如亚马逊,领英,脸书所采用。一般来说,一个用户请求会在键值存储***的客户端上产生成百上千个键值访问操作,这些键值访问操作会被发送到不同的服务器上,然后被并行的处理,使得整个用户请求的完成时间由最晚服务完毕的键值访问操作决定。另一方面,用户请求的完成时间与用户体验息息相关,过久的完成时间会损害用户的访问体验,降低网站流量,进而影响公司的收入。因此,如何降低用户请求的完成时间显得至关重要。
如图1所示,随着用户规模的扩大,许多前端服务器被部署到键值存储***中担任客户端的功能,它们会接收用户请求并将其解析为大量的键值访问操作,同时,许多服务器被用于存储数据并处理键值访问操作。此外,键值存储***的特点之一是全交换通信模式,这意味客户端可能会在短时间内收到许多用户请求并生成大量的键值访问操作,并且服务器需要处理由不同客户端发来的多个键值访问操作。因此,流量往往具有突发性和并发性的特点,使得服务器的负载会随着时间而变化。不仅如此,不同服务器之间的负载也并不是均衡的,部分服务器上会存在所谓的“热点”数据使得这些服务器被访问的频率较高,负载较重。此外,还会存在少数客户端生成大多数键值访问操作的情况。最后,由于服务器上也会运行其他后台进程,如共享资源争用,垃圾回收等,服务器的服务速率,即性能会随着时间而变化。以上种种因素使得不同服务器上的键值访问操作完成时间相差较大,进而使得不同用户请求的完成时间相差较大,因此,通过调度方法合理安排服务器上键值访问操作的服务顺序将是降低用户请求平均完成时间的有效手段之一。然而,每个键值访问操作是轻量级的,完成时间通常非常短,这就使得客户端与客户端之间,服务器与服务器之间的通信合作时间相较于键值访问操作时间来说开销过大,因此难以集中式的调度键值访问操作。另一方面,由于网络负载轻,网络链路速度快,使得网络延迟相较于键值访问操作的排队等待时间和服务时间来说非常小,网络延迟通常可以忽略。
当前,已经有许多研究在致力于改善键值存储***的延迟指标,但很少有研究是针对用户请求调度来开展的。在键值访问操作调度方面,有研究者认为合适的副本选择算法对于改善所有键值访问操作的尾延迟至关重要,因此开发了自适应副本选择算法C3。该算法将服务器的队列长度,服务速率等信息添加到键值访问操作的返回值中,并在客户端对这些反馈的信息进行处理利用,以指导副本选择,取得了不错的效果。此外,还有一些工作如TAP,On-Off对C3进行了改进,进一步改善了键值访问操作的尾延迟。不过这些工作都关注于单个键值访问操作和副本选择问题,并不是针对包含大量键值访问操作的用户请求进行调度方法设计。除了单个键值访问操作的副本选择外,还有研究者针对键值存储***中Multiget这一对象设计了调度方法Rein,降低了所有Multiget的平均延迟和尾延迟。Multiget通常包含多个键值访问操作,这些操作也会在不同服务器上被并行处理,类似于用户请求。Rein首先在客户端上将Multiget包含的键值访问操作依据目标服务器不同划分为多个Opset,并根据所有Opset的大小为其分配优先级,最后利用开发的SBF(最短瓶颈优先)和SDS(松弛驱动)算法在服务器端对Opset进行服务顺序调度,显著的降低了Multiget的平均延迟和尾延迟。然而,Rein并未考虑服务器随着时间变化的负载和性能,因此其做出的调度可能在某些情况下是次优的。
另一方面,降低分布式键值存储***中用户请求的平均完成时间这一问题与数据中心中的Coflow调度问题类似。关于Coflow的调度问题,发表于Sigcomm顶级会议上的论文Vary,Sincronia等都提出了自己的调度方法有效降低了Coflow的平均完成时间。然而,Varys和Sincronia均需要中心化的收集Coflow的信息以进行调度决策,这在键值存储***中会带来过大的时间开销,导致键值访问操作的完成时间增加,因此不太适用。
综上所述,在键值存储***中,需要设计一种分布式的,能够自适应服务器随时间变化的负载和性能的用户请求调度算法,以合理安排服务器端键值访问操作的服务顺序,达到降低所有用户请求平均完成时间的目标。
发明内容
本发明要解决的技术问题是:如何提供一种键值存储***中的分布式自适应用户请求调度方法,能够快速的动态的调整键值访问操作的服务顺序,从而降低用户请求整体的平均完成时间,提升键值存储***的响应速度,改善用户访问体验。
为实现上述技术目的,本发明提供了一种在键值存储***中的分布式自适应用户请求调度方法DAS(Distributed Adaptive Scheduling),所述方法由客户端和服务器端协同完成:
所述客户端的工作步骤包括:
A1:初始化,记录每个服务器的服务速率为其处理单个键值访问操作时间的倒数,消耗速率为服务速率除以客户端总数量;记录每个服务器已收到但未处理完毕的键值访问操作数量OSK为0,定义符号|M|表示能够提供服务的服务器总数量,并将服务器编号,自1开始每次加1直至|M|,定义变量flag=0;
A2:每当一个用户请求到达客户端时,客户端会将用户请求中所有的键值访问操作依据其不同的目标服务器划分为不同的操作集合,称为keySet;将该用户请求放入未发送的用户请求集合R,置flag=0,然后执行步骤A3;
A3:根据集合R中每个用户请求在客户端上的等待时间为用户请求赋予权值,初始化一个空列表σ;定义|R|表示集合R当前包含的用户请求个数;定义变量k=|R|,然后执行步骤A4;
A4:当k大于0时,客户端利用R中用户请求的数量与目标服务器信息选出负载最大的服务器b,然后选出待发往服务器b的用户请求中加权最大的一个,添加到列表σ(k)位置,并从集合R中删除用户请求σ(k),k减少1,之后利用R中其他用户请求大小与用户请求σ(k)大小之比调整R中每个用户请求的权值;此时,如果k仍大于0,则重新执行步骤A4;否则,定义变量m表示当前服务器编号,用于后续遍历操作,置m=1,执行步骤A5;
A5:判断m≤|M|;若成立,执行步骤A6;否则执行步骤A2;
A6:判断记录的服务器m的OSK是否为0;若不为0,m增加1,返回执行步骤A5;否则执行步骤A7;
A7:定义变量|σ|表示列表σ当前包含用户请求个数,置变量p=1,然后执行步骤A8;
A8:判断p≤|σ|;若成立,执行步骤A9;否则执行步骤A10;
A9:判断用户请求σ(p)中是否包含发往服务器m的keySet;若包含,则使用σ(p)中键值访问操作的数量和记录的服务器服务速率预估σ(p)的完成时间,并根据预估完成时间给发往服务器m的keySet赋予优先级,发送keySet并记录发送时刻,服务器m的OSK增加量为该keySet包含键值访问操作个数,若发送后σ(p)还有应发往其他服务器的keySet,则暂不处理并继续执行步骤A10;若没有其他keySet,则从σ中删除σ(p),然后继续执行步骤A10;若不包含,则p增加1,然后执行步骤A8;
A10:判断flag=0是否成立;若成立,则m增加1,然后执行步骤A5;否则执行步骤A11;
A11:当客户端收到键值访问操作的返回值时,发送该返回值的服务器OSK减少1,更新该服务器服务速率;若此时OSK=0,则继续更新服务器的消耗速率,并置flag=1,m为该服务器编号,然后执行步骤A12;若OSK不为0,则重新执行步骤A11;
A12:判断用户请求列表σ是否为空;若为空,执行步骤A2;否则执行步骤A7;
所述服务器端的工作步骤包括:
B1:初始化:记录当前服务器正在处理的键值访问操作的数量num为0;
B2:收到keySet时,依据优先级从高到低将其添加到服务序列S中;然后执行步骤B3;
B3:遍历S中的每个keySet,判断其是否等待超时;若所有keySet均未超时,则继续判断num是否等于0,若为0,则执行步骤B4,否则执行步骤B6;若存在超时的keySet,则执行步骤B5;
B4:从S中取出优先级最高的一个键值访问操作,num增加1,服务器处理该键值访问操作,获取其需要的数据,然后执行步骤B6;
B5:给所有超时的keySet赋予最高优先级,num增加量为这些keSet包含键值访问操作总个数,服务器依次处理这些keySet包含的键值访问操作,然后执行步骤B6;
B6:当处理完毕一个键值访问操作时,num减少1;将键值访问操作的服务时间添加到待返回的值中,之后将值返回给相应客户端,然后执行步骤B7;
B7:判断服务序列S是否为空,若为空,则继续判断num=0,成立则执行步骤B2,不成立则执行步骤B6;若序列S不为空,执行步骤B3。
所述的方法,所述步骤A3中,用户请求的权值初始化公式如下:
所述的方法,所述步骤A4中,负载最重服务器的选择公式如下:
其中,负载是发往一个服务器上的所有的键值访问操作的服务时间之和,b表示负载最重的服务器,|R|表示用户请求集合R的大小,i表示用户请求编号,M表示服务器集合,m表示单个服务器,表示编号为i的用户请求发往服务器m的keySet中包含的键值访问操作个数,Smc表示客户端上服务器m的消耗速率。
所述的方法,所述步骤A4中,加权最大的用户请求选择公式如下:
所述的方法,所述步骤A4中,用于调整请求的权值公式如下:
所述的方法,所述步骤A9中,用户请求完成时间的预估公式如下:
其中,Tc表示一个用户请求预估的完成时间,m表示单个服务器,M表示***中所有服务器构成的集合,KSm表示该用户请求发往服务器m的keySet包含的键值访问操作数个数,Sm表示服务器m的服务速率。
所述的方法,所述步骤A9中,优先级Priority公式定义如下:
Priority=1/Tc
其中,Tc为一个用户请求预估的完成时间。
所述的方法,所述步骤A11中,键值访问操作的返回值中包含如下信息:键值访问操作原本需要获取的数据,服务器处理该键值访问操作花费的时间。
所述的方法,所述步骤A11中,服务速率,消耗速率的更新均采用指数平滑方法,公式如下:
Sms_new=α*Sms_old+(1-α)*St
其中,Sms_new表示服务器m新的服务速率,Sms_old表示之前的服务速率,St表示当前服务完毕的键值访问操作的服务时间,α为指数平滑参数,为小于1的正数;Smc_new表示客户端发往服务器m的键值访问操作新的消耗速率,Smc_old表示之前的消耗速率,KSm表示发往服务器m的keySet包含的键值访问操作个数,Ts表示该keySet的发送时刻,Tn表示该keySet服务完毕的时刻,β为指数平滑参数,为小于1的正数。
所述的方法,所述步骤B3中,超时判断公式如下:
其中,Tnow表示超时判断的时刻,Ta表示用户请求到达客户端的时刻,即keySet生成的时刻,Priority表示keySet的优先级,h为大于0的常数系数。
本发明能够快速的调度用户请求,同时能适应服务器端负载和性能的变化,动态的调整键值访问操作的服务顺序,从而降低用户请求整体的平均完成时间,提升键值存储***的响应速度,改善用户访问体验。仿真实验结果表明,在降低用户请求平均完成时间方面,本发明能够达到比现有FCFS,SRPT,Rein-SBF更好的效果。
附图说明
图1是分布式键值存储***框架图。
图2是DAS方法原理图。
图3是本发明的流程图。
图4是静态场景下不同调度方法延迟对比图。
图5是动态场景下不同调度方法延迟对比图。
图6是不同利用率下三种调度方法的平均延迟对比图。
图7是服务器性能时变场景下三种方法延迟对比图。
图8是服务器异构且性能时变场景下三种方法延迟对比图。
图9是大规模场景下三种方法延迟对比图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的可用范围。
本发明所述的分布式自适应用户请求调度方法(Distributed AdaptiveScheduling,DAS)是针对键值存储***而设计的,它通过调度键值访问操作的服务顺序,达到降低用户请求整体平均延迟的目标。图1是键值存储***的框架图,如图1所示,用户请求在到达键值存储***的客户端之后,客户端会将其包含的键值访问操作根据目标服务器的不同而划分为多个集合,本发明称这些键值访问操作集合为keySet。这些keySet会被发往不同的服务器,它们包含的键值访问操作会并行的被各自服务器处理,使得整个用户请求的完成时间由最晚完成的键值访问操作决定。另一方面,一个服务器往往会收到来自不同用户请求的多个keySet。因此,设计合适的调度方法以安排服务器上键值访问操作的服务顺序是降低用户请求整体平均完成时间的一种手段。
然而,由于键值存储***自身的特点,调度方法的设计存在以下挑战。首先,键值存储***中键值访问操作服务时间很短,集中式的收集信息进行调度决策会给键值访问操作带来较大的额外延迟,进而影响用户请求的完成时间,因此对于键值存储***,一个分布式的调度方法是更好的选择。其次,键值存储***中的流量往往具有突发性和并发性,使得服务器的负载随着时间变化。不仅如此,部分服务器上的数据可能有较高的被请求频率,被多个键值访问操作访问,即存在“热点”数据,使得服务器之间的负载不均衡。此外,服务器上的后台进程运行,如资源争用,垃圾回收等,使得服务器的服务性能会随着时间而变化。综上所述,调度方法的设计需要自适应服务器时变的性能与负载,动态地调整键值访问操作的服务顺序,以达到降低用户请求完成时间的目标。
对现有的调度方法的研究发现,在单一客户端的情形下,集中式的二近似调度方法由于考虑了不同服务器上的负载,能够获得较好的调度顺序,降低用户请求的平均完成时间;在单一服务器的情形下,最短剩余处理时间优先(SRPT)调度方法能够较大程度的避免长尾阻塞现象,降低用户请求的平均完成时间,但可能存在饥饿问题。因此,针对N个客户端和M个服务器的键值存储***,本发明人将其视为N个1对M的子***,并在客户端上部署了改进的二近似调度方法,在服务器上部署了SRPT调度方法,同时引入信息反馈机制以适应服务器随时间变化的性能和负载,以及增加超时机制以缓解饥饿问题,启发式的设计了如图2所示的用户请求调度方法DAS。在图2中,R1等符号代表用户请求,K11等符号代表keySet,如K11表示用户请求R1中发往服务器1的keySet。
DAS是一种适用于键值存储***的分布式自适应用户请求调度方法,其主要由客户端和服务器端两个部分协同完成。图3是所述DAS方法的工作流程示意图。
如图3所示,客户端会记录每个服务器的服务速率为其处理单个键值访问操作时间的倒数,消耗速率为服务速率除以客户端总数量,记录每个服务器已收到但未处理完毕的键值访问操作数量OSK为0,定义符号|M|表示可提供服务的服务器总数量,并将服务器编号,自1开始每次加1直至|M|,定义变量flag=0。当客户端收到用户请求时,首先会将其包含的键值访问操作依据不同的目标服务器划分为不同的keySet,之后将该用户请求添加到未发送用户请求集合R中,置flag=0。紧接着,客户端会对集合R执行二近似排序操作,同时初始化一个空列表σ存储排序后的用户请求,定义变量k,令其等于集合R中用户请求个数。首先,在排序时,为了缓解饥饿问题,DAS会基于不同用户请求在客户端上的等待时间初始化其权值,初始化公式如下:
其中R表示用户请求集合,Wr表示用户请求r的权值,WTr表示r的等待时间,c为一大于0小于1的常数系数,表示任意。由于考虑了用户请求在客户端上的等待时间,因此排序过程中,用户请求等待时间越久,其优先发送的概率越大,从而在一定程度上缓解了饥饿问题。然后,客户端会按照如下公式计算每个服务器的负载情况,并选出负载最重的服务器:
其中,负载是发往一个服务器上的所有的键值访问操作的服务时间之和,b表示负载最重的服务器,|R|表示用户请求集合R的大小,i表示用户请求编号,M表示服务器集合,m表示单个服务器,表示编号为i的用户请求发往服务器m的keySet中包含的键值访问操作个数,Smc表示客户端上服务器m的消耗速率。在选出负载最重的服务器之后,客户端紧接着便会从所有待发往服务b的用户请求中选出加权最大的那一个,并将其添加到列表σ中,选择方法如下:
其中,σ(k)表示被放置在列表σ下标为k位置的加权最大的用户请求,R表示用户请求集合,Wr表示用户请求r的权值,表示r发往服务器b的keySet中包含键值访问操作的个数。紧接着,从集合R中删除用户请求σ(k),k减少1,并使用如下公式调整集合R中剩余用户请求的权值:
其中,为Wσ(k)表示用户请求σ(k)的权值,表示σ(k)中发往服务器b的keySet包含的键值访问操作个数。此时,如果k仍然大于0,则表示集合R中仍然存在未排序的用户请求,此时应该执行负载最重服务器选择,加权最大的用户请求选择,调整用户请求权值等操作,直至k等于0,表明所有用户请求排序完毕,排序后的结果存储在列表σ中。接下来,客户端会定义变量m表示当前服务器编号,并置其为0,同时检测服务器m的OSK是否为0。如果为0,则会依次检查列表σ中的用户请求是否有发往服务器m的keySet,若找到一个,则通过记录的服务速率和用户请求中键值访问操作个数预估其完成时间,并给发往服务器m的keySet赋予优先级,将keySet发送到服务器m,OSK增量为该keySet中键值访问操作个数。用户请求完成时间的预估公式如下:
其中,Tc表示用户请求预估的完成时间,KSm表示发往服务器m的keySet包含键值访问操作个数,Sm表示服务器m的服务速率,M表示服务器集合。优先级公式定义如下:
Priority=1/Tc
这样,预期完成时间越大的用户请求优先级会越低,从而在服务器端会更晚的被服务。在发送了keySet之和,客户端会判断flag变量是否为0,如果为0,则表明是新的用户请求到达,那么检测了服务器m的OSK之和仍需要继续检测下一个服务器的OSK,因此m会增加1,重复执行OSK检测等步骤,直至所有服务器全部检测完毕。若不为0,则说明是某个服务器上的keySet服务完毕了,仅需要向该服务器发送keySet即可。
当客户端收到键值访问操作的返回值时,首先会使用EWMA方式更新服务器的服务速率,公式为Sms_new=α*Sms_old+(1-α)*St
其中,Sms_new表示服务器m新的服务速率,Sms_old表示之前的服务速率,St表示携带在键值访问操作返回值中的服务时间,α为指数平滑参数,为小于1的正数。接着将发送返回值的服务器OSK减少1,若此时OSK等于0,表示发往该服务器的keySet已经服务完毕了,此时会按照如下公式更新服务器的消耗速率:
其中,Smc_new表示客户端发往服务器m的请求新的消耗速率,Smc_old表示之前的消耗速率,KSm表示发往服务器m的keySet的大小,Ts表示该keySet的发送时刻,Tn表示该keySet服务完毕的时刻,β为指数平滑参数,为小于1的正数。最后,置flag=1,变量m置为服务器编号,同时判断列表σ是否为空,如果为空,说明所有用户请求已经全部发送完毕,因此需要等待新的用户请求到达;若不为空,则会依次遍历列表σ中的每个请求,找到一个包含发往服务器m的keySet的用户请求,同样的,预估其完成时间,给keySet赋予优先级,发送keySet,增加OSK值。
服务器端初始化时会记录自身正在处理的键值访问操作数量为0,用变量num表示。当服务器收到由客户端发送来的keySet时,会将收到的keySet按照优先级从高到低的顺序***到自身的服务序列S中。之后,服务器会检查S中是否有超时的keySet,超时判断公式如下:
其中,Tnow表示超时判断的时刻,Ta表示请求到达客户端的时刻,即keySet生成的时刻,Priority表示keySet的优先级,h为大于0的常数系数。通过在客户端上考虑用户请求的等待时间,在服务器端进行超时判断,DAS方法能够有效的缓解饥饿问题,在降低用户请求平均完成时间的同时保证用户请求的尾延迟不会过高。如果服务序列S中没有超时的keySet,则判断服务器是否空闲,即判断num是否为0。若为0,则服务器会从S首部取出一个优先级最高的键值访问操作处理;若不为0,表明服务器仍有键值访问操作需要处理,因此不会从S中取出任何键值访问操作,直接继续处理即可;若S中存在超时的keySet,那么服务器会给所有超时的keySet赋予最高优先级,然后依次处理这些超时的keySet包含的键值访问操作,同时使得num的值增加量为所有超时keySet包含的键值访问操作个数之和。最后,每当服务器处理完毕一个键值访问操作,将请求的值返回给客户端之后,num会减少1,然后服务器会检测服务序列S是否为空,若不为空,则会重复之前的步骤,对S中的所有keySet进行超时判断并执行后续步骤。若为空,则继续检测num是否为0,为0表示服务器端已经没有键值访问操作需要被处理了,服务器端等待新的keySet到达;若不为空,则继续处理剩余的键值访问操作。
为了进一步验证所述DAS调度方法的性能,本实施例基于Python的SimPy库构建了一个离散事件模拟器。在该模拟器中,Workload节点用于生成用户请求,Client节点用于将用户请求划分为不同的keySet,并执行二近似排序,预估用户请求完成时间等多项功能,Server节点用于处理键值访问操作。为了更准确的模拟真实的键值存储***,本实施例设置用户请求的大小服从Pareto分布并指定其均值为300,即一个用户请求平均包含300个键值访问操作。用户请求的到达是一个Poisson过程,因此本实施例设定了用户请求的到达间隔以使***利用率为70%。为了模拟热点数据,本实施例使用Zipf分布为用户请求中的keySet选择目标服务器,使得某些服务器被包含较多键值访问操作的keySet选中的概率更大,充当热点数据所在的服务器。同时,keySet的大小(即包含键值访问操作数量)也被设置为服从Pareto分布,其均值为用户请求的均值(大小为300个键值访问操作)除以***中服务器的数量。键值访问操作的服务时间服从指数分布,均值为20μs。最后,FCFS(先来先服务)方法,SRPT(最短剩余处理时间优先)方法,Rein-SBF(依据请求中最大keySet的大小设置优先级)方法被分别部署,以作为DAS方法的对比。
首先,本实施例验证了静态场景下(即所有用户请求同时到达)不同调度方法的性能。通过将客户端,服务器数量分别设置为1个和10个,10个和1个,以及10个和10个这三种情况,对比了这三种设置下不同调度方法下用户请求的延迟情况(即完成时间)。如图4所示,其中(a)是在客户端数量为1个,服务器数量为10个的设置下,DAS无论在平均延迟还是尾延迟方面都是最优的,因为在这种配置下,调度问题退化为了一个标准的并发开店问题,针对此问题二近似调度方法能够获得较好的调度结果。而在(b)即客户端为10个,服务器为1个时,SRPT与Rein-SBF是已知的该配置下最好的调度方法,且由于此时所有服务器性能一致,请求的完成时间由其大小决定,因此SRPT与Rein-SBF性能一样。同时,二近似算法在单一服务器的情形下退化为了SRPT调度算法,因此DAS能够达到和SRPT,Rein-SBF接近的性能。最后,在(c)即10个客户端,10个服务器的配置下,由于DAS综合了二近似调度方法和SRPT调度方法的优势,因此性能最优。总而言之,在静态场景下,相比于FCFS方法,DAS方法能够在不损失尾延迟的前提下将平均延迟改善17~50%。
之后,本实施例验证了动态场景下(即请求到达为一个Poisson过程,***利用率为70%)不同调度方法的性能。如图5所示,在客户端数量,服务器数量分别为1个和10个,10个和10个时,DAS方法仍然是最优的。但在10个客户端,1个服务器的配置下,由于DAS方法下keySet发送模式为one-by-one,即一个客户端同时最多发送一个keySet去某个服务器,以保证客户端二近似调度的结果不会被服务器端SRPT调度的结果所干扰,因此DAS方法性能有所损失。此外,值得注意的是,由于DAS方法增加了超时机制,因此DAS方法下用户请求的尾延迟并不会像SRPT,Rein-SBF那样高。
紧接着,本实施例验证了不同***利用率下FCFS,Rein-SBF,DAS的性能。如图6所示,在***利用率较低时,键值访问操作调度机会非常低,因此不同方法的平均延迟变化不大。当***利用率超过50%时,随着利用率的提升,用户请求平均延迟急剧变大,此时调度方法对于降低延迟显得非常重要。根据图6的数据,DAS相较于FCFS,能够将平均延迟改善16~29%,并在不同利用率下均优于Rein-SBF。接下来,考虑到服务器性能随时间变化的场景,即在原本的10个客户端,10个服务器配置下,每间隔1000μs,服务器有50%的概率性能变好一倍,即平均服务一个键值访问操作的时间从20μs变为10μs。如图7所示,相比于图5(c),由于服务器性能有概率变好,因此无论是平均延迟还是尾延迟,均低于图5(c)中的数据,在该配置下DAS方法性能仍然最好,请求的平均完成时间相较于FCFS方法,Rein-SBF方法分别能够改善26%和13.5%。紧接着,在服务器时变的基础上使得一半的服务器初始性能变差1倍,即键值访问操作的服务时间从20μs变为40μs。此时,Rein-SBF在进行请求中keySet优先级分配时,由于仅仅只考虑了请求大小,未考虑服务器性能差异,因此其性能会有所下降。如图8所示,此时DAS相较于Rein-SBF能够将用户请求的平均完成时间改善16.3%。最后,将客户端和服务器的数量分别设置为128,128,***利用率70%,服务器性能一致且不随着时间变化以验证大规模场景下DAS方法的性能,仿真结果如图9所示,DAS方法仍然能够取得最优的性能。
综合以上仿真结果,本发明所述的DAS方法,能够部署于分布式的键值存储***中,且能适应服务器随时间变化的负载与性能,相比于现有的FCFS方法,SRPT方法,Rein-SBF方法能够在降低用户请求平均完成时间方面取得更好的效果。
Claims (10)
1.一种键值存储***中的分布式自适应用户请求调度方法,其特征在于,所述方法由客户端和服务器端协同完成:
所述客户端的工作步骤包括:
A1:初始化,记录每个服务器的初始服务速率为其处理单个键值访问操作时间的倒数,初始消耗速率为服务速率除以客户端总数量;记录每个服务器已收到但未处理完毕的键值访问操作数量OSK为0,定义符号|M|表示能够提供服务的服务器总数量,并将服务器编号,自1开始每次加1直至|M|,定义变量flag=0;
A2:每当一个用户请求到达客户端时,客户端会将用户请求中所有的键值访问操作依据其不同的目标服务器划分为不同的操作集合,称为keySet;将该用户请求放入未发送的用户请求集合R,置flag=0,然后执行步骤A3;
A3:根据集合R中每个用户请求在客户端上的等待时间为用户请求赋予权值,初始化一个空列表σ;定义|R|表示集合R当前包含的用户请求个数;定义变量k=|R|,然后执行步骤A4;
A4:当k大于0时,客户端利用R中用户请求的数量与目标服务器信息选出负载最大的服务器b,然后选出待发往服务器b的用户请求中权值最大的一个σ(k),添加到列表σ,并从集合R中删除用户请求σ(k),k减少1,之后利用R中其他用户请求大小与用户请求σ(k)大小之比调整R中每个用户请求的权值;此时,如果k仍大于0,则重新执行步骤A4;否则,定义变量m表示当前服务器编号,用于后续遍历操作,置m=1,执行步骤A5;
A5:判断m≤|M|;若成立,执行步骤A6;否则执行步骤A2;
A6:判断记录的服务器m的OSK是否为0;若不为0,m增加1,返回执行步骤A5;否则执行步骤A7;
A7:定义变量|σ|表示列表σ当前包含用户请求个数,置变量p=1,然后执行步骤A8;
A8:判断p≤|σ|;若成立,执行步骤A9;否则执行步骤A10;
A9:判断用户请求σ(p)中是否包含发往服务器m的keySet;若包含,则使用σ(p)中键值访问操作的数量和记录的服务器服务速率预估σ(p)的完成时间,并根据预估完成时间给发往服务器m的keySet赋予优先级,发送keySet并记录发送时刻,服务器m的OSK增加量为该keySet包含键值访问操作个数,若发送后σ(p)还有应发往其他服务器的keySet,则暂不处理并继续执行步骤A10;若没有其他keySet,则从σ中删除σ(p),然后继续执行步骤A10;若不包含,则p增加1,然后执行步骤A8;
A10:判断flag=0是否成立;若成立,则m增加1,然后执行步骤A5;否则执行步骤A11;
A11:当客户端收到键值访问操作的返回值时,发送该返回值的服务器OSK减少1,更新该服务器服务速率;若此时OSK=0,则继续更新服务器的消耗速率,并置flag=1,m为该服务器编号,然后执行步骤A12;若OSK不为0,则重新执行步骤A11;
A12:判断用户请求列表σ是否为空;若为空,执行步骤A2;否则执行步骤A7;
所述服务器端的工作步骤包括:
B1:初始化:记录当前服务器正在处理的键值访问操作的数量num为0;
B2:收到keySet时,依据优先级从高到低将其添加到服务序列S中;然后执行步骤B3;
B3:遍历S中的每个keySet,判断其是否等待超时;若所有keySet均未超时,则继续判断num是否等于0,若为0,则执行步骤B4,否则执行步骤B6;若存在超时的keySet,则执行步骤B5;
B4:从S中取出优先级最高的一个键值访问操作,num增加1,服务器处理该键值访问操作,获取其需要的数据,然后执行步骤B6;
B5:给所有超时的keySet赋予最高优先级,num增加量为这些keySet包含键值访问操作总个数,服务器依次处理这些keySet包含的键值访问操作,然后执行步骤B6;
B6:当处理完毕一个键值访问操作时,num减少1;将键值访问操作的服务时间添加到待返回的值中,之后将值返回给相应客户端,然后执行步骤B7;
B7:判断服务序列S是否为空,若为空,则继续判断num=0,成立则执行步骤B2,不成立则执行步骤B6;若序列S不为空,执行步骤B3。
2.如权利要求1所述的方法,其特征在于,所述步骤A3中,用户请求的权值初始化公式如下:
Wr=1.0+c*WTr,r∈R
其中,r表示集合R中的一个用户请求,Wr表示r的权值,WTr表示r在客户端上的等待时间,c为一常数系数,大于0小于1。
7.如权利要求1所述的方法,其特征在于,所述步骤A9中,优先级Priority公式定义如下:
Priority=1/Tc
其中,Tc为一个用户请求预估的完成时间。
8.如权利要求1所述的方法,其特征在于,所述步骤A11中,键值访问操作的返回值中包含如下信息:键值访问操作原本需要获取的数据,服务器处理该键值访问操作花费的时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010217985.9A CN111444183B (zh) | 2020-03-25 | 2020-03-25 | 一种键值存储***中的分布式自适应用户请求调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010217985.9A CN111444183B (zh) | 2020-03-25 | 2020-03-25 | 一种键值存储***中的分布式自适应用户请求调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111444183A CN111444183A (zh) | 2020-07-24 |
CN111444183B true CN111444183B (zh) | 2022-08-16 |
Family
ID=71650805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010217985.9A Active CN111444183B (zh) | 2020-03-25 | 2020-03-25 | 一种键值存储***中的分布式自适应用户请求调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111444183B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113259439B (zh) * | 2021-05-18 | 2022-05-06 | 中南大学 | 基于接收端驱动的键值调度方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107241442A (zh) * | 2017-07-28 | 2017-10-10 | 中南大学 | 一种基于预测的键值存储数据库副本选择方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6895585B2 (en) * | 2001-03-30 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | Method of mixed workload high performance scheduling |
AU2013214801B2 (en) * | 2012-02-02 | 2018-06-21 | Visa International Service Association | Multi-source, multi-dimensional, cross-entity, multimedia database platform apparatuses, methods and systems |
US9798745B2 (en) * | 2014-09-13 | 2017-10-24 | Samsung Electronics Co., Ltd. | Methods, devices and systems for caching data items |
-
2020
- 2020-03-25 CN CN202010217985.9A patent/CN111444183B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107241442A (zh) * | 2017-07-28 | 2017-10-10 | 中南大学 | 一种基于预测的键值存储数据库副本选择方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111444183A (zh) | 2020-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109561148B (zh) | 边缘计算网络中基于有向无环图的分布式任务调度方法 | |
CN102170396B (zh) | 一种基于区分服务的云存储***QoS控制方法 | |
US7752628B2 (en) | Method and apparatus for reassigning objects to processing units | |
CN104168318B (zh) | 一种资源服务***及其资源分配方法 | |
KR100429904B1 (ko) | 차등화된 QoS 서비스를 제공하는 라우터 및 그것의고속 IP 패킷 분류 방법 | |
CN110297699B (zh) | 调度方法、调度器、存储介质及*** | |
CN101116056B (zh) | 用于意识到内容的负载均衡的***和方法 | |
US5991808A (en) | Task processing optimization in a multiprocessor system | |
CN109885397A (zh) | 一种边缘计算环境中时延优化的负载任务迁移算法 | |
CN112019620B (zh) | 基于Nginx动态加权的Web集群负载均衡方法及*** | |
CN111752708A (zh) | 一种基于深度学习的存储***自适应参数调优方法 | |
US20140108458A1 (en) | Network filesystem asynchronous i/o scheduling | |
CN109005211B (zh) | 一种无线城域网环境下的微云部署及用户任务调度方法 | |
CN112799823A (zh) | 边缘计算任务的在线分派调度方法和*** | |
CN111143036A (zh) | 一种基于强化学习的虚拟机资源调度方法 | |
CN115237568A (zh) | 一种面向边缘异构设备的混合权重任务调度方法及*** | |
CN111444183B (zh) | 一种键值存储***中的分布式自适应用户请求调度方法 | |
CN110048966B (zh) | 基于截止时间的最小化***开销的Coflow调度方法 | |
US20050125799A1 (en) | Methods and systems for assigning objects to processing units | |
US7460544B2 (en) | Flexible mesh structure for hierarchical scheduling | |
JP4648290B2 (ja) | パケット転送装置、パケット分配方法、グループ所属プロセッサ変更方法、およびコンピュータプログラム | |
WO2012017699A1 (ja) | 計算機システム、及び、データ管理方法 | |
JP2000083055A (ja) | ルータ | |
Channappa et al. | Multi-objective optimization method for task scheduling and resource allocation in cloud environment | |
CN115167973B (zh) | 一种云计算数据中心的数据处理*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |