一种缓存分配方法,及设备与流程

文档序号:15615337发布日期:2018-10-09 21:13阅读:149来源:国知局
本申请涉及计算机
技术领域
,尤其涉及一种缓存分配方法,及设备。
背景技术
:缓存(cache)是数据交换的缓冲区,在有数据读取需求的情况下,会首先从缓存中查询需要的数据,如果查询到了则可以直接执行,若查询不到则从内存中找,在内存中查询不到则会到硬盘或者其他更大的存储设备中查询。因此,缓存的运行速度最快,比内存快得多,故缓存的作用是加快设备的运行速度。基于以上说明可知:在缓存中查询到的概率越大则速度越快,即:缓存命中率越高速度越快,缓存命中率是指:查询缓存且不为空的次数/查询缓存的总次数。举个例子如下:如查询100次缓存,30次查询到数据则缓存命中率为30/100=30%。通常来说,缓存空间越大存储的数据越多,则缓存命中率会越高;但是缓存空间是有限的,特别是在多用户存在的情况下,例如:在软件即服务(softwareasaservice,saas)的应用场景下,每个租户可被分配的缓存资源更为有限。在saas中一个租户可以包含多个用户。例如:租户可以是企业,用户则是企业内的员工。随着网络技术的迅速发展,saas按需租赁模式在云计算领域得到了迅速发展,saas以多租户技术架构为多个企业客户提供软件租赁服务,能够使大量的租户/企业共享使用同一堆栈的软件、硬件资源,最大化共享资源利用率。多租户共享架构的目标是:既要实现资源多租户共享,也要实现多租户之间合理隔离,还要达到资源收益最大化。缓存是提高系统性能的一种重要且有限的资源,传统的缓存使用是不区分租户的,在多租户共享竞争使用缓存资源的架构下,会引起如下问题:由于资源竞争,访问系统频率高的租户使用较多缓存资源,访问系统频率低的租户只能使用很少的缓存资源甚至无缓存资源供其使用,缓存资源过小则会引起服务质量违反其服务等级协议(servicelevelagreement,sla),导致服务提供商因此受到惩罚造成经济损失。sla是租户和saas提供商签订的服务等级协议。为了解决以上问题提出了如下解决方案:通过动态高速缓存分区(dynamiccachepartition,dcp)技术对各应用的缓存进行隔离和分配,缓存隔离和分配的具体实现方式为:为每个目标应用分配缓存的最小值、目标值以及最大值;目标应用启动时缓存为最小值,在目标应用运行过程中缓存需求会越来越大,在分配给目标应用的缓存到达目标值后继续增大,则需要根据一定的规则从其他应用的缓存中划分一部分分配给目标应用,在目标应用的缓存到达最大值的情况下不再新分配缓存给该目标应用。采用以上dcp技术,实践已经表明采用以上方案一部分应用的缓存利用率较低,而另一部分应用因缓存匮乏导致服务质量低,因此缓存的共享利用效率较低。技术实现要素:本申请实施例所要解决的技术问题在于,提供一种缓存分配方法,及设备,用于提高缓存共享利用率。第一方面,本申请实施例提供了一种缓存分配方法,其特征在于,应用于包含至少两个租户的软件即服务saas,所述至少两个租户包括目标租户,所述目标租户的缓存分区为目标缓存分区,所述方法包括:获取第一缓存量,以及所述目标租户的监控记录;所述监控记录包含调整量与缓存收益变化的对应关系;所述第一缓存量为所述目标缓存分区当前的缓存量;分析所述监控记录在确定将所述第一缓存量调整为第二缓存量符合缓存收益目标的情况下,将所述所述第一缓存量调整为第二缓存量。上述租户通常可以是企业用户,租户可以有很多用户,例如企业员工;那么每个租户可以有一个缓存分区,缓存分区可以有初始的缓存量,之后在租户的用户使用saas过程中调整租户的缓存量;可以理解的是,调整缓存分区的缓存量是为了获得缓存收益,缓存收益目标可以是增加缓存对应的系统性能,也可以是减少因系统性能导致的损失;缓存对应的系统性能可以包括:租户内的用户平均读缓存的响应时间、缓存命中率等等;因系统性能导致的损失可以包括:系统性能低导致被处罚的损失等。上述监控记录所记录的是调整量与换手收益变化的对应关系的信息,调整量是调整缓存分区的缓存量,这里调整量可以是调多也可以是调少,可以分别对应正数和负数,也可以使用绝对值记录缓存调整的大小然后记录缓存收益是正的收益还是负的收益;缓存收益与前述缓存收益目标是对应的,在此不再赘述。另外,由于将第一缓存量调整为了第二缓存量,因此调整量即为第二缓存量与第一缓存量的差值;这个差值可以带有符号来表示调大或者调小。可以理解的是,如果第二缓存量更大,则表示为目标缓存分区分配了新的缓存,反之则是从目标缓存分区中释放出一部分缓存。在一种可选的实现方式中,所述确定将所述第一缓存量调整为第二缓存量符合缓存收益目标的情况下,将所述第一缓存量调整为第二缓存量包括:在第一缓存收益变化量大于第二缓存收益变化量,且空闲的共享缓存的缓存量大于调整量的情况下,从所述空闲的共享缓存中分配所述调整量大小的缓存到所述目标缓存分区;所述第一缓存收益变化量对应所述目标缓存分区,所述第二缓存收益变化量对应所述所述至少两个租户中其他租户的缓存分区;或者,在第三缓存收益变化量小于第四缓存收益变化量,且所述空闲的共享缓存的缓存量小于所述调整量的情况下,从所述目标缓存分区中释放缓存;所述第三缓存收益变化量对应所述目标缓存分区,所述第四缓存收益变化量对应所述至少两个租户中其他租户的缓存分区的缓存量。在本实施例中,空闲的共享缓存是指还没有分配给缓存分区的缓存;在本实施例中,由于前者是为目标缓存分区分配新的缓存,因此上述第一缓存收益变化量大于第二缓存收益变化量的判断,可以筛选出增加缓存量的情况下正收益更大的目标缓存分区作为调整对象,从而最大化收益;由于后者是为了释放目标缓存分区的缓存到空闲的共享缓存中,因此上述第三缓存收益变化量小于第四缓存收益变化量,则可以筛选出减少缓存量的情况下负收益更小的目标缓存分区作为调整对象,从而最小化损失。在一种可选的实现方式中,所述缓存收益包括:服务质量收益,或,因所述服务质量收益导致的服务等级协议的收益。可以理解的是,缓存收益是因调整缓存分区的缓存量导致,调整缓存分区的缓存量可以导致的结果有很多,以上两个举例不应理解为对本申请实施例的唯一性限定。其中服务质量收益,对应到服务质量的变化,例如:缓存命中率的增加或减少。在一种可选的实现方式中,所述服务质量收益包括:缓存命中率的收益和/或读缓存响应时间的收益;所述因所述服务质量收益导致的所述服务等级协议的收益包括:因所述服务质量变化导致受所述服务等级协议的惩罚的收益。本实施例对服务质量收益以及因所述服务质量收益导致的服务等级协议的收益进行了举例说明,正如前文所记载的,服务质量收益对应到服务质量的变化,然而服务质量的变化并不仅限于以上举例;以上举例不应理解为对本申请实施例的唯一性限定。在本实施例中,受服务等级协议的惩罚的收益,通常可以是违反服务等级协议导致的惩罚的变化量,例如:惩罚增加了多少、费用扣除系数的变化量等。在一种可选的实现方式中,在所述获取第一缓存量之前,所述方法还包括:接收所述目标租户的开户请求,记录所述目标租户的开户数据,为所述目标租户创建所述目标缓存分区;所述开户数据包括服务等级协议。在本实施例中,租户通常可以对应到企业,企业作为租户其员工作为用户,该企业需要在提供服务的设备获得注册,即:开户;在开户时,租户会与提供服务的一方达成一些约定,这里的约定可以包含:租户的在线人数,这里的在线人数是指最大可以在线的用户;还可以包含:服务质量的参数,例如:平均响应时间等影响服务质量的参数;还可以包含:服务等级协议,即:违反服务质量的要求导致的惩罚,也可以包含超额提供更好的服务质量导致的奖励。在一种可选的实现方式中,本申请实施例还提供了分析监控记录的实现方案,如下:所述分析所述监控记录包括:使用包含所述目标缓存分区的调整量、所述目标缓存分区的缓存量、所述目标缓存分区的使用量,所述租户的在线用户数以及所述目标缓存分区的缓存命中率的拟合函数分析所述监控记录。在一种可选的实现方式中,本申请实施例还提供了基于以上给出的参数以及拟合函数的更具体预测计算缓存命中率的实现方案,如下:所述使用包含所述目标缓存分区的调整量、所述目标缓存分区的缓存量、所述目标缓存分区的使用量,所述租户的在线用户数以及所述目标缓存分区的缓存命中率的拟合函数分析所述监控记录包括:使用如下公式计算缓存命中率:其中,所述目标租户为第i个租户,所述hiti’为所述第i个租户的缓存命中率,所述ni为所述第i个租户在服务等级协议中指定的在线用户数;所述hitlasti为所述第i个租户最近一次调整缓存分区后的缓存命中率;所述pi为所述第i个租户的缓存分区的缓存量;所述ui为所述第i个租户的缓存分区实际使用的缓存量;所述δm为所述第i个租户的缓存分区的调整量。在一种可选的实现方式中,由于第二缓存量调整为第一缓存量之间的差值为调整量,具体采用哪一个调整量才能获得最大化收益,本申请实施例还提供了确定调整量的实现方案:所述方法还包括:使用包含所述目标缓存分区最近一次的调整量、最近一次调整后的缓存命中率、最近一次调整前的缓存命中率、所述住户的在线用户数、所述目标缓存分区的缓存利用率,以及所有租户的总缓存量计算所述目标缓存分区的调整量。在一种可选的实现方式中,为了最大化缓存收益,本申请实施例还提供了基于以上技术参数计算调整量的具体实现方案,如下:所述使用包含所述目标缓存分区最近一次的调整量、最近一次调整后的缓存命中率、最近一次调整前的缓存命中率、所述住户的在线用户数、所述目标缓存分区的缓存利用率,以及所有租户的总缓存量计算所述目标缓存分区的调整量包括:使用如下公式计算所述目标缓存分区的调整量:其中,所述δm为所述第i个租户的缓存分区的调整量;所述δmlasti为所述第i个租户最近一次缓存分区调整的缓存量;所述hitlasti为所述第i个租户最近一次调整缓存分区后的缓存命中率,所述hitlasti-1为最近一次缓存分区调整前的缓存命中率;所述ni为所述第i个租户的服务等级协议中指定的在线用户数,所述ui为所述第i个租户缓存分区的缓存利用率,所述archtan为正切自回归条件异方差模型,所述sin为正弦,所述为所有租户的缓存分区的总缓存量。在一种可选的实现方式中,由于计算缓存调整量的计算量比较大,本申请实施例还提供了前置判断,快速获得调整量的方案,具体如下:在计算所述目标缓存分区的调整量之前,所述方法还包括:在确定所述目标租户内用户的平均读缓存响应时间小于或等于所述目标租户的服务等级协议指定的读缓存响应时间,并且所述目标租户的在线用户数小于或等于所述服务等级协议指定的在线用户数,则确定所述目标缓存分区的调整量为0。本实施例计算量极少,可以迅速确定调整量为0,即:不需要进行缓存分区的调整的情况,从而减少不必要的计算。第二方面,本申请实施例提供了一种缓存分配装置,其特征在于,应用于包含至少两个租户的软件即服务saas,所述至少两个租户包括目标租户,所述目标租户的缓存分区为目标缓存分区,所述缓存分配装置包括:数据获取单元,用于获取第一缓存量,以及所述目标租户的监控记录;所述监控记录包含调整量与缓存收益变化的对应关系;所述第一缓存量为所述目标缓存分区当前的缓存量;缓存调整单元,用于分析所述监控记录在确定将所述第一缓存量调整为第二缓存量符合缓存收益目标的情况下,将所述所述第一缓存量调整为第二缓存量。在一种可选的实现方式中,所述缓存调整单元,用于在第一缓存收益变化量大于第二缓存收益变化量,且空闲的共享缓存的缓存量大于调整量的情况下,从所述空闲的共享缓存中分配所述调整量大小的缓存到所述目标缓存分区;所述第一缓存收益变化量对应所述目标缓存分区,所述第二缓存收益变化量对应所述所述至少两个租户中其他租户的缓存分区;或者,在第三缓存收益变化量小于第四缓存收益变化量,且所述空闲的共享缓存的缓存量小于所述调整量的情况下,从所述目标缓存分区中释放缓存;所述第三缓存收益变化量对应所述目标缓存分区,所述第四缓存收益变化量对应所述至少两个租户中其他租户的缓存分区的缓存量。在一种可选的实现方式中,所述缓存收益包括:服务质量收益,或,因所述服务质量收益导致的服务等级协议的收益。在一种可选的实现方式中,所述服务质量收益包括:缓存命中率的收益和/或读缓存响应时间的收益;所述因所述服务质量收益导致的所述服务等级协议的收益包括:因所述服务质量变化导致受所述服务等级协议的惩罚的收益。在一种可选的实现方式中,所述缓存分配装置还包括:请求接收单元,用于接收所述目标租户的开户请求;数据记录单元,用于记录所述目标租户的开户数据;分区创建单元,用于为所述目标租户创建所述目标缓存分区;所述开户数据包括服务等级协议。在一种可选的实现方式中,所述缓存调整单元包括:分析子单元,用于使用包含所述目标缓存分区的调整量、所述目标缓存分区的缓存量、所述目标缓存分区的使用量,所述租户的在线用户数以及所述目标缓存分区的缓存命中率的拟合函数分析所述监控记录。在一种可选的实现方式中,所述分析子单元,用于使用如下公式计算缓存命中率:其中,所述目标租户为第i个租户,所述hiti’为所述第i个租户的缓存命中率,所述ni为所述第i个租户在服务等级协议中指定的在线用户数;所述hitlasti为所述第i个租户最近一次调整缓存分区后的缓存命中率;所述pi为所述第i个租户的缓存分区的缓存量;所述ui为所述第i个租户的缓存分区实际使用的缓存量;所述δm为所述第i个租户的缓存分区的调整量。在一种可选的实现方式中,所述缓存调整单元包括:计算子单元,用于使用包含所述目标缓存分区最近一次的调整量、最近一次调整后的缓存命中率、最近一次调整前的缓存命中率、所述住户的在线用户数、所述目标缓存分区的缓存利用率,以及所有租户的总缓存量计算所述目标缓存分区的调整量。在一种可选的实现方式中,所述计算子单元,用于使用如下公式计算所述目标缓存分区的调整量:其中,所述δm为所述第i个租户的缓存分区的调整量;所述δmlasti为所述第i个租户最近一次缓存分区调整的缓存量;所述hitlasti为所述第i个租户最近一次调整缓存分区后的缓存命中率,所述hitlasti-1为最近一次缓存分区调整前的缓存命中率;所述ni为所述第i个租户的服务等级协议中指定的在线用户数,所述ui为所述第i个租户缓存分区的缓存利用率,所述archtan为正切自回归条件异方差模型,所述sin为正弦,所述为所有租户的缓存分区的总缓存量。在一种可选的实现方式中,所述缓存调整单元,还用于在确定所述目标租户内用户的平均读缓存响应时间小于或等于所述目标租户的服务等级协议指定的读缓存响应时间,并且所述目标租户的在线用户数小于或等于所述服务等级协议指定的在线用户数,则确定所述目标缓存分区的调整量为0。第三方面,本申请实施例提供了另一种缓存分配装置,包括:缓存、处理器以及输入输出设备;其中,缓存内包含租户的缓存分区,所述处理器具有执行可执行代码或者以硬件形式来实现以上一方面的方法的功能。通过实施本申请实施例,由于监控记录包含调整量与缓存收益变化的对应关系,通过租户的监控记录,则可以预测调整缓存分区的缓存量将会获得的缓存收益,那么可以基于缓存收益目标来选择调整哪一个缓存分区,以及,是调大还是调小该缓存分区的缓存量,从而获得更高的缓存收益,相应地提高缓存共享利用率。附图说明下面将对本申请实施例中所需要使用的附图进行说明。图1是本申请实施例系统结构示意图;图2是本申请实施例方法流程示意图;图3是本申请实施例租户缓存分区大小和租户缓存分区命中率关联关系的示意图;图4是本申请实施例装置结构示意图;图5是本申请实施例装置结构示意图;图6是本申请实施例服务器结构示意图。具体实施方式下面结合本申请实施例中的附图对本申请实施例进行描述。请参见图1,图1是本申请实施例提供的系统结构图,包括如下三部分:客户端、saas应用服务器以及缓存管理服务器;其中,客户端,用于显示saas应用操作界面及根据用户操作生成和发送数据到saas应用服务器。客户端的功能在于与用户的沟通。saas应用服务器,用于处理租户发起的数据的写/读(write/read,w/r)请求,其中数据读请求会涉及到查询数据,写请求会涉及到数据变更;saas应用服务器为租户提供数据查询、更新、事务管理、等服务。缓存管理服务器,用于为saas应用服务器提供缓存服务,为租户提供基于缓存分区的动态缓存服务。以下实施例对前述saas应用服务器和缓存管理服务器所包含组成部分,及其功能分别进行说明。saas应用服务器包含以下单元:请求监控器:监控所有租户的用户发起的业务请求的响应时长(如,“订单下单”业务从用户发起请求开始到下单业务执行完成的时间差),根据用户发起的业务请求统计当前租户的所有在线用户数量,并记录监控记录如:租户sla模型:租户注册时,根据租户的注册信息生成sla数据,具体如租户在线用户数、业务响应时间以及当saas应用提供商违反sla时对saas应用提供商惩罚条款(如:sla违反率0<&<5%付95%费用或者直接设置惩罚金额如$100等方式)。如租户huawei的sla模型如下:缓存管理服务器包含以下单元:多租户共享缓存:如图1中缓存管理服务器中右侧矩形区域,该矩形区域分为两部分,一部分为待分配缓存块,另一部分为租户的缓存分区;该多租户共享缓存是数据缓存,由于多个租户共享使用同一缓存资源,因此按租户进行分区,每个缓存分区用于缓存对应租户的数据。该多租户共享缓存可以是内存也可以是存储寄存器。缓存分区如图1右侧矩形区域下部的正方形区域,在开户时缓存分区可以具有一个固定大小的缓存量,后续在租户使用过程中动态调整缓存分区的缓存量。租户缓存分区器:租户开户时在存储寄存器/内存中创建缓存分区,并记录租户和分区的映射关系,如:为租户huawei创建缓存量为1m标识为p0的缓存分区,该缓存分区的记录数据为:租户缓存分区监控器:用于监控租户缓存分区的缓存量、实际使用的缓存量,以及租户读缓存的命中结果并记录为监控记录,如:租户缓存分区调整器:用于分析租户缓存分区的监控记录,生成缓存分区的使用特征,可以基于此使用特征动态调整每个租户的缓存分区的缓存量,从而持续提升缓存分区的缓存命中率,最大化整体的缓存命中率;可以优先调整缓存收益比高,或,sla惩罚因子大的租户对应的缓存分区,从而最大化缓存利用率和收益;以及,在整体缓存没有空闲缓存资源分配给租户的缓存分区的情况下,回收缓存收益低的租户的缓存分区的缓存,然后分配给缓存收益高的租户的缓存分区。上述缓存收益比,是指缓存命中率提升量/缓存调整量,例如:命中率提升20%、缓存调整量为20m,则缓存收益比为20%/20=1%;上述缓存收益低是指缓存收益比低或sla惩罚因子低,上述缓存收益高是指缓存收益比高或sla惩罚因子高。每次调整租户的缓存分区的缓存量后记录调整数据,如:租户缓存读写应用程序接口(applicationprogramminginterface,api):saas应用服务器发送给缓存管理器,用于读写缓存数据时通过该api对租户缓存分区内的数据执行读写操作,如:{writecachedata(“huawei”,”{logineduser:{name:test,mobile:1803545451}}”)//写缓存数据readcachedata(“huawei”,”logineduser”)//读取租户huawei缓存分区中key为user的缓存数据return“{user:{name:test,age:22}}”//返回缓存数据}以及接收租户缓存分区调整器指令释放租户缓存分区的缓存空间,如租户缓存分区调整器调用freesize接口:freesize(huawei,1m)//租户huawei缓存分区释放1m缓存空间该freesize接口内需要定义的内容包括:定位到租户huawei的缓存分区,确定huawei的缓存分区位置,然后释放使用较少的缓存项占用的缓存。具体可以是:获得huawei的缓存分区内各缓存项的读次数,按照各缓存项的读次数由低到高依次累加缓存项占用的缓存量,直到计算得到缓存量的累加值&gt;=1m时,停止统计,并删除参与统计的缓存项占用的缓存。基于以上系统架构,以及各组成部件的说明,本申请实施例提供了如下缓存分配的解决方案,本实施例以租户开通并为租户创建缓存分区,然后调整缓存分区的缓存量为例进行说明,具体的处理流程如图2所示:201、客户端生成开户数据;具体例如:租户huawei通过客户端填写开户数据并提交申请,请求系统开户;例如开户信息中租户名称为huawei,sla可以包含的信息有:允许最大的在线用户数、业务请求响应时长、sla违反惩罚信息。202、客户端发送步骤201中租户的开户数据到saas应用服务器,请求为租户huawei开户。203、saas应用服务器收到租户huawei的开户请求后记录租户huawei的开户数据。记录租户huawei开户信息具体如下:204、saas应用服务器为租户huawei创建缓存分区。缓存分区的创建由缓存管理服务器中的租户缓存分区器执行,具体可以参照图1所示系统说明。saas应用服务器为租户huawei创建缓存分区具体如下:2041、在多租户的共享缓存中为租户huawei创建缓存分区,可以初始化该缓存分区的缓存量为预先设定的值如1m,该缓存分区的标识为phuawei。创建缓存分区存储块的方式如:char*phuawei=newchar[1024*1024]。2042、在为租户huawei创建缓存分区,saas应用服务器还需要记录租户huawei与缓存分区的映射关系的数据模型,具体可以如下:205、缓存管理服务器可以向saas应用服务器发送为租户huawei创建缓存分区成功的信息,saas应用服务器向客户端返回租户huawei开户成功的消息。206:客户端一侧租户操作会导致生成业务数据。207、客户端记录租户操作并生成对应的业务数据,发送给saas应用服务器。208、saas应用服务器请求缓存管理服务器查询缓存数据。参照图1所示的系统结构,查询缓存数据的具体流程,如下:2081、saas应用服务器的发送查询请求给租户缓存读写api,用于查询缓存数据,如用户下订单需要查询当前登录用户缓存数据项中的手机号发送的订单号,缓存数据项在租户缓存分区中存储的标识为“logineduser”。2082、租户缓存读写api根据业务请求租户标识huawei,请求查询标识为”logineduser”的缓存数据,查询请求信息如{“tenant”:”huawei”,”cachekey”:”logineduser”}。2083、租户缓存读写api发送租户标识huawei请求租户缓存分区器查询为huawei分配的分区,如查询得到的标识为phuawei的缓存分区。2084、租户缓存读写api发送租户标识、查询缓存数据标识从所述缓存分区查询缓存数据,如查询缓存数据为:“{name:test,mobile:1803545451}}”2085、租户缓存读写api返回缓存数据查询结果。2086、租户缓存读写api通知缓存分区监控器缓存命中结果。缓存命中结果依缓存读取结果来确定:缓存读取为空则为未命中,否则命中。2087、租户缓存分区监控器记录租户缓存分区缓存查询命中结果,如209、租户缓存分区监控器通知租户缓存分区调节器根据租户缓存分区查询命中率及租户缓存分区收益,在线实时调整租户缓存分区的缓存量。210、租户缓存分区调节器记录租户缓存分区的调整类型、调整量、调整时间。这里调整类型包括:增大缓存量或者减小缓存量。211、租户缓存分区调节器更新租户缓存分区器记录的租户的缓存分区的缓存量为调整后的值,如租户huawei的记录模型中缓存分区的缓存量如下表1所示:表1租户标识t缓存分区标识缓存分区大小huaweip11.5m212、返回查询到缓存数据。213、返回业务处理结果。在前述实施了中,步骤209在以下实施例中进行说明,该步骤需要解决三个方面的问题:1、是如何预测调整缓存分区的缓存量之后,缓存收益的变化量到底有多少问题;2、如何确定调整量的问题;3、在确定调整量以及变化量以后,具体如何调整的问题;基于以上三个问题,本实施例说明如下:一、调整缓存分区的缓存量之后,预测缓存收益的变化量具体如下:步骤a、租户缓存分区调节器查询所有监控记录的请求。监控记录的请求如:租户的缓存分区的监控记录的具体数据,如:步骤b、租户缓存分区调节器读取所有租户sla模型,如:步骤c、租户缓存分区调节器分析上述监控记录的请求以及监控记录的具体数据,并结合上述租户sla模型,建立包含缓存分区调整量、缓存分区大小、缓存分区使用大小、用户量以及缓存分区命中率关联关系拟合函数。其中的缓存分区的调整量简称为调整量、缓存分区大小即缓存分区的缓存量、缓存分区使用大小即缓存分区的使用量、用户量即为租户在线用户数,其中sla中会指定最大在线用户数,缓存分区命中率即为缓存分区的缓存命中率。上述拟合函数用于预测租户缓存分区按调整量调整后的缓存命中率,如本实施例提出租户缓存分区缓存命中率预测函数表达式为:其中,hiti’为第i个租户的缓存分区的缓存量调整后,预测到的缓存命中率的值;ni为第i个租户sla中定义的在线用户量(即最大在线用户数),读取租户sla获取每个租户的在线用户数nuser的值,如租户huawei的n=100hitlasti为第i个租户的最近一次调其整缓存分区的缓存量后的命中率;该值具体可以是通过如下方式获得:分析租户缓存分区的监控记录,统计最近一次租户缓存分区的调整时间区间内,缓存分区的缓存命中率。例如:租户huawei的统计区间中,最近一次调整缓存分区的起始时间为r(last).time=2016-10-2210:21:34.321,结束时间为当前系统时间system.currenttime;那么上述最近一次租户缓存分区的调整时间区间,为r(last).time到system.currenttime的时间段。上述缓存命中率的计算方式可以是:缓存分区的监控记录中hit:”yes”的记录数/总记录数,例如计算得到的结果为:hitlast=90%。pi为第i个租户的缓存分区当前缓存大小的值,读取租户缓存分区监控记录中totalsize的值,如租户huawei的值为12m。ui为第i个租户的缓存分区当前实际使用的缓存大小的值。读取租户缓存分区监控历史记录集中usedsize的值,如租户huawei的值为11m。△m为缓存分区的调整量,假定预设置调整量的值为0.5m。调整缓存分区的缓存量会引起租户缓存分区缓存命中率的提高或降低,通过动态持续调整租户的缓存分区的缓存量来持续提高每个租户缓存分区的缓存命中率,从而提升缓存整体命中率,最大化缓存收益。同时,租户缓存分区大小和租户缓存分区命中率之间,即:缓存量与缓存命中率之间,具有如下关联特征,如图3所示:租户不同、缓存分区大小不同,调整相同量的缓存大小带来缓存分区命中率的变化差别很大;如租户huaweia和a’两处相比较,a处缓存收益比较高,应以较大调整值调整缓存分区大小,a’处缓存收益比低,调整方式应以每次较小的调整值通过多次来调整缓存分区大小,使更多的缓存资源被调配给收益比大的调整点,提高缓存收益;租户tenant1b处相对租户huaweia处的缓存收益比较低,同样每次调整其缓存分区应以比租户huawei的调整值小的方式调整租户tenant1缓存分区,调配更多的缓存资源给缓存收益比大的租户huawei;通过结合每个租户的缓存分区使用特征,实现多租户、多阶段精细化调配缓存资,进一步提升缓存资源整体利用率和缓存命中率,最大化缓存收益。二、本实施还提供了确定调整量的具体实现方案:实现精细化调整缓存分区大小的关键是评估计算每次调整量的值。本实施例进一步包含结合缓存分区的缓存量的历史调整记录、缓存分区的监控记录的监控数据、请求监控的历史记录、租户sla模型,动态地计算面向租户的缓存分区的调整量,即调优的△m’,对应到图1所示系统,租户缓存分区调整器调整缓存分区的缓存量之前执行以下方法进一步计算得到调优的调整量,包括如下步骤:步骤a、读取缓存调整的历史记录、缓存分区的监控记录的具体数据、租户业务请求的监控记录、租户sla模型;其中,缓存调整的历史记录如:步骤b、计算调优值△m’:以租户最近一次调整缓存分区时间为开始时间,计算出租户业务请求的监控记录,业务请求接收时间大于上述开始时间的业务请求的监控记录,并统计求解每次业务请求的平均响应时长(所有业务请求响应时长的和/业务请求的次数),并从业务请求的监控记录中读取租户在线用户数。步骤b1、当租户业务请求的平均响应时长&lt;=租户sla模型中定义的请求响应时长,并且记录的拒绝用户数为0,则满足租户sla,此时可以确定△m’=0。步骤b2、当租户的业务请求的平均响应时长&gt;租户sla模型中定义的请求响应时长,则不满足租户sla,计算调优的值方法包括:步骤b3、根据从监控记录中读取租户最近2次缓存分区的调整记录{r(last),r(last-1)},例如:租户huawei对应的缓存分区最近两次的调整记录为:{{time:2016-10-2210:21:34.321,value:4m},{time:2016-10-2210:18:33.321,value:2.5}};最近一次租户缓存分区调整的调整量△mlast,如租户huawei最近一次调整值为4m。步骤b4、计算最近2次缓存分区的缓存量调整时间区间内的缓存命中率。分析租户缓存分区的监控记录,统计最近一次租户缓存分区的缓存量调整时间区间内的缓存分区的缓存命中率。例如:前述缓存调整的历史记录中,第一项,即最近一次调整缓存分区的记录为{time:2016-10-2210:21:34.321,value:4m},表示租户huawei的统计区间中,最近一次调整缓存分区的起始时间为r(last).time=2016-10-2210:21:34.321,结束时间为当前系统时间system.currenttime。前述缓存调整的历史记录中,第二项,即最近一次之前一次调整缓存分区的记录为:{time:2016-10-2210:18:33.321,value:2.5m},表示租户huawei的统计区间中,最近一次之前一次的调整区间的起始时间为(r(last-1).time=2016-10-2210:18:33.321,结束时间为r(last).time=2016-10-2210:21:34.321。例如缓存命中率分别为:hitlast=90%,hitlast-1=75%。步骤b5、计算每个租户缓存分区的缓存利用率。读取每个租户的缓存分区的缓存量和已使用的缓存量,计算每个租户的缓存分区缓存利用率u。缓存利用u的计算方式为:(已使用的缓存量/缓存分区的缓存量)*100%,例如:在前述示例中租户huawei记录中记录了,缓存分区的缓存量为“totalsize”:”12m”,已使用的缓存量“usedsize”:”11m”,,那么缓存利用率u为(11/12)*100%=91.7%。步骤b6、读取租户sla获取每个租户的在线用户数。在前述举例中在线用户数为nuser的值n,如租户huawei的n=100。步骤b7、根据以上数据计算调优的调整量△m’,如计算表达式为:其中,m’为调优后的租户i的缓存分区的调整量;在hitlasti-hitlast-1i&gt;0时,调大租户缓存分区大小,分配更多的缓存资源;hitlasti-hitlast-1i&lt;0时,调小租户缓存分区大小,释放缓存资源。δmlasti为租户i最近一次缓存分区调整的值,如租户huawei的值为4m;当租户最近一次缓存分区调整值为0,即δmlasti=0时,按时间降序遍历租户调整分区记录集,当记录的调整值△m≠0时停止遍历,并设置δmlasti=△m。hitlasti为租户i最近一次缓存分区调整后的缓存命中率,例如:前述举例中租户huawei的值为90%。hitlasti-1为租户i最近一次之前一次调整缓存分区后的缓存命中率,例如:前述举例中租户huawei的值为75%。ni为租户i的sla中定义的在线用户数,即:允许租户的最大在线用户数,例如:租户huawei的值为100。ui为租户i的缓存分区当前缓存利用率,例如:租户huawei的值为91.7%。如租户huawei根据上述公式计算的较优后缓存的调整量的值应为7m。步骤c、缓存分区调整器再次被触发调整租户缓存分区时,基于上述预测租户缓存命中率的公式,预测所有租户调整后的缓存命中率,并计算缓存分区的调整量△m与缓存分区的缓存命中率变化值△hit的收益比|△hit/△m|,如下表2所示:表2三、选择需要调整的缓存分区,以及具体如何调整。本实施例可以在前述两个方面的参数已经准备好后执行,即在确定调整量以及收益变化量以后执行。结合图1所示的系统结构,租户缓存分区调整器基于上述收益比、sla模型以及监测信息,并基于saas服务商收益最大化调整租户缓存分区,具体流程如下:步骤a、识别满足sla的租户作为队列s1,识别响应时间和在线用户量不满足sla的租户作为队列s2。步骤b、假定调整量&gt;0:步骤b1、如果多租户共享缓存的空闲资源&gt;=调整量:如果队列s2为空,则可以分配调整量的缓存空间给收益比最大租户,从而最大化整体缓存命中率。假定收益比最大的租户为huawei,那么将从空闲的共享缓存中分配缓存给租户huawei的缓存分区。如果队列s2不为空,那么可以分配缓存给惩罚因子大,命中率可提升最大的租户,最小化服务提供商损失。步骤b2、如果多租户共享缓存的空闲资源<调整量:这种情况下需要释放一部分已经被分配给缓存分区的缓存成为空闲资源,具体可以是:根据缓存分区的监控记录计算每个租户的缓存利用率,识别缓存利用率低、缓存命中率收益少、惩罚因子小的租户,释放缓存然后再分配给缓存收益比与惩罚因子最大的租户的缓存分区。步骤c,假定调整量&lt;0,可以请求缓存分区读写api释放缓存空间,作为空闲空间分配给其他租户的缓存分区。上述详细阐述了本申请实施例的方法,下面提供了本申请实施例的装置。请参见图4,图4是本申请实施例提供的一种缓存分配装置的结构示意图,应用于包含至少两个租户的软件即服务saas,所述至少两个租户包括目标租户,所述目标租户的缓存分区为目标缓存分区,该缓存分配装置可以包括数据获取单元以及缓存调整单元,其中,各个单元的详细描述如下。数据获取单元401,用于获取第一缓存量,以及所述目标租户的监控记录;所述监控记录包含调整量与缓存收益变化的对应关系;所述第一缓存量为所述目标缓存分区当前的缓存量;缓存调整单元402,用于分析所述监控记录在确定将所述第一缓存量调整为第二缓存量符合缓存收益目标的情况下,将所述所述第一缓存量调整为第二缓存量。本实施例可以参考前述方法实施例,以及
发明内容中关于方法实施例的介绍,在此不再一一赘述,在本实施例之后的装置实施例中,也可以一并参考方法实施例的内容。在本实施例中,数据获取单元401可以对应到系统结构图1中的请求监控器和租户缓存分区监控器的功能;缓存调整单元402可以对应到系统结构图1中的租户缓存分区调整器。通过实施本申请实施例,由于监控记录包含调整量与缓存收益变化的对应关系,通过租户的监控记录,则可以预测调整缓存分区的缓存量将会获得的缓存收益,那么可以基于缓存收益目标来选择调整哪一个缓存分区,以及,是调大还是调小该缓存分区的缓存量,从而获得更高的缓存收益,相应地提高缓存共享利用率。在一个可选的实现方式中,本申请实施例还提供了为目标缓存分区分配新的缓存以及从目标缓存分区中释放缓存的具体实现方案,如下:所述缓存调整单元402,用于在第一缓存收益变化量大于第二缓存收益变化量,且空闲的共享缓存的缓存量大于调整量的情况下,从所述空闲的共享缓存中分配所述调整量大小的缓存到所述目标缓存分区;所述第一缓存收益变化量对应所述目标缓存分区,所述第二缓存收益变化量对应所述所述至少两个租户中其他租户的缓存分区;或者,在第三缓存收益变化量小于第四缓存收益变化量,且所述空闲的共享缓存的缓存量小于所述调整量的情况下,从所述目标缓存分区中释放缓存;所述第三缓存收益变化量对应所述目标缓存分区,所述第四缓存收益变化量对应所述至少两个租户中其他租户的缓存分区的缓存量。在一个可选的实现方式中,还提供了缓存收益的可选内容,具体如下:所述缓存收益包括:服务质量收益,或,因所述服务质量收益导致的服务等级协议的收益。在一个可选的实现方式中,还提供了服务质量收益以及因所述服务质量收益导致的所述服务等级协议的收益的具体举例,如下:所述服务质量收益包括:缓存命中率的收益和/或读缓存响应时间的收益;所述因所述服务质量收益导致的所述服务等级协议的收益包括:因所述服务质量变化导致受所述服务等级协议的惩罚的收益。在一个可选的实现方式中,如图4所示,所述缓存分配装置还包括:请求接收单元403,用于接收所述目标租户的开户请求;数据记录单元404,用于记录所述目标租户的开户数据;所述开户数据包括服务等级协议;分区创建单元405,用于为所述目标租户创建所述目标缓存分区。在一个可选的实现方式中,还提供了分析监控记录的具体实现方案如下:所述缓存调整单元402包括:分析子单元4021,用于使用包含所述目标缓存分区的调整量、所述目标缓存分区的缓存量、所述目标缓存分区的使用量,所述租户的在线用户数以及所述目标缓存分区的缓存命中率的拟合函数分析所述监控记录。基于前述实施例中分析监控记录所使用的拟合函数,本实施例进一步进行细化该拟合函数的内容,如下:17、根据权利要求16所述缓存分配装置,所述分析子单元4021,用于使用如下公式计算缓存命中率:其中,所述目标租户为第i个租户,所述hiti’为所述第i个租户的缓存命中率,所述ni为所述第i个租户在服务等级协议中指定的在线用户数;所述hitlasti为所述第i个租户最近一次调整缓存分区后的缓存命中率;所述pi为所述第i个租户的缓存分区的缓存量;所述ui为所述第i个租户的缓存分区实际使用的缓存量;所述δm为所述第i个租户的缓存分区的调整量。在一个可选的实现方式中,还提供了计算调整量的方式,所述缓存调整单元402包括:计算子单元4022,用于使用包含所述目标缓存分区最近一次的调整量、最近一次调整后的缓存命中率、最近一次调整前的缓存命中率、所述住户的在线用户数、所述目标缓存分区的缓存利用率,以及所有租户的总缓存量计算所述目标缓存分区的调整量。基于前述实施例中计算调整量的实现方案,本实施例还进一步细化了计算所使用的公式如下:所述计算子单元4022,用于使用如下公式计算所述目标缓存分区的调整量:其中,所述δm为所述第i个租户的缓存分区的调整量;所述δmlasti为所述第i个租户最近一次缓存分区调整的缓存量;所述hitlasti为所述第i个租户最近一次调整缓存分区后的缓存命中率,所述hitlasti-1为最近一次缓存分区调整前的缓存命中率;所述ni为所述第i个租户的服务等级协议中指定的在线用户数,所述ui为所述第i个租户缓存分区的缓存利用率,所述archtan为正切自回归条件异方差模型,所述sin为正弦,所述为所有租户的缓存分区的总缓存量。在一个可选的实现方式中,为了进一步减少可能不必要的计算量,本申请实施例筛选出不需要进行缓存分区的缓存量调整的情况,具体如下:所述缓存调整单元402,还用于在确定所述目标租户内用户的平均读缓存响应时间小于或等于所述目标租户的服务等级协议指定的读缓存响应时间,并且所述目标租户的在线用户数小于或等于所述服务等级协议指定的在线用户数,则确定所述目标缓存分区的调整量为0。请参见图5,图5是本申请实施例提供的一种缓存分配装置,该缓存分配装置包括:缓存501、处理器502以及输入输出设备503;其中,缓存501可以包含在存储器中也可以集成在处理器502中,在缓存501内包含租户的缓存分区;在上述存储器中可以存储有可执行代码,所述处理器502具有读取上述执行可执行代码或者以硬件形式来实现本申请实施例提供的方法的功能。在本实施例中方法的功能在此不再赘述。缓存501、处理器502以及输入输出设备503可以通过总线相互连接。如果缓存包含在存储器中,那么存储器包括但不限于是随机存储记忆体(randomaccessmemory,ram)、只读存储器(read-onlymemory,rom)、可擦除可编程只读存储器(erasableprogrammablereadonlymemory,eprom)、或便携式只读存储器(compactdiscread-onlymemory,cd-rom),该存储器可以用于存储相关指令及数据。输入输出设备503用于接收和发送数据。处理器502可以是一个或多个中央处理器(centralprocessingunit,cpu),在处理器502是一个cpu的情况下,该cpu可以是单核cpu,也可以是多核cpu。可以理解的是,如果由处理器502完成以上全部方法流程,那么处理器502可以实现图1所示系统中读写监控器、租户缓存分区监控器、租户缓存分区调整器以及租户缓存分区器的功能。图6是本申请实施例提供的一种服务器结构示意图,该服务器600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)622(例如,一个或一个以上处理器)和存储器632,一个或一个以上存储应用程序642或数据644的存储介质630(例如一个或一个以上海量存储设备),缓存空间以及基于缓存空间的缓存分区可以集成在存储器632。其中,存储器632和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器622可以设置为与存储介质630通信,在服务器600上执行存储介质630中的一系列指令操作。服务器600还可以包括一个或一个以上电源626,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口658,和/或,一个或一个以上操作系统641,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。上述实施例中由缓存分配装置所执行的步骤可以基于该图6所示的服务器结构。该服务器可以对应到图1所示系统结构的saas应用服务器以及缓存管理服务器的功能。需要说明的是,各个操作的实现可以对应到前述实施例的的相应描述,因此在本实施例中未予赘述。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:rom或随机存储记忆体ram、磁碟或者光盘等各种可存储程序代码的介质。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1