一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种资源分配方法和装置与流程

2022-03-22 22:23:09 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,尤其涉及一种资源分配方法和装置。


背景技术:

2.kubernetes是一个开源的容器编排引擎,用来对容器化应用进行自动部署、扩缩和管理。在k8s(即kubernetes)中,hpa(即horizontal pod autoscaler,水平pod扩缩容)可以根据cpu利用率自动扩缩pod数量,以便在cpu或者内存使用量增加的时候进行扩容,cpu或内存使用量降低的时候进行缩容。
3.在实现本发明过程中,申请人发现现有技术中至少存在如下问题:
4.hpa的扩缩容特性存在滞后性,当业务服务的cpu或者内存使用量增加或者减少时,监控指标发生变化后,才进行pod缩放,存在一定的滞后性。


技术实现要素:

5.本发明实施例提供一种资源分配方法和装置,在保证业务服务稳定的基础上,最大限度减少资源浪费并解决了资源分配数量变化滞后的问题。
6.为达上述目的,本发明实施例提供一种资源分配方法,包括:
7.收集与指定资源相关的关键业务指标的历史数据;
8.根据所述历史数据得到历史曲线;
9.将所述历史曲线上关键业务指标的所有数值向历史时间方向平移指定平移时间得到平移曲线;
10.从所述平移曲线中截取当前指定时间段的至少一个在前指定时间段对应的曲线作为前置曲线,并根据所述前置曲线得到所述当前指定时间段对应的预测曲线;
11.根据预先指定的单位资源指标系数、以及所述预测曲线上在每个预测时刻处的斜率,分别确定相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量;
12.根据相应的预测时刻处的斜率、所述指定平移时间和相应的预测时刻确定相应的预测时刻对应的分配执行时刻;
13.当系统时间到达某一预测时刻对应的分配执行时刻处时,则将所述指定资源的数量分配为相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量;
14.其中,所述预先指定的单位资源指标系数表示在单位数量的所述指定资源条件下所能达到的关键业务指标的数值;
15.在所述当前指定时间段内以预置时间间隔确定预测时刻,相邻预测时刻之间间隔所述预置时间间隔;所述预置时间间隔的时间长度小于所述指定时间段的时间长度。
16.进一步地,所述收集与指定资源相关的关键业务指标的历史数据,具体为:
17.在所述当前指定时间段的起始时刻,收集与所述指定资源相关的关键业务指标在至少一个在前指定时间段上的历史数据,所述各指定时间段之间时间连续。
18.进一步地,所述根据预先指定的单位资源指标系数、以及所述预测曲线上在每个
预测时刻处的斜率,分别确定相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量,包括:
19.针对每个预测时刻,获取相应的预测时刻处的所述指定资源的当前分配数量;
20.计算在所述预测曲线上相应的预测时刻处和相应的预测时刻的下一预测时刻处两点连线的斜率作为相应的预测时刻处的斜率;
21.将所述单位资源指标系数乘以相应的预测时刻处的斜率得到的乘积,再加上所述当前分配数量,得到相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量。
22.进一步地,所述根据相应的预测时刻处的斜率、所述指定平移时间和相应的预测时刻确定相应的预测时刻对应的分配执行时刻,包括:
23.如果相应的预测时刻处的斜率大于或等于0,则将相应的预测时刻作为相应的预测时刻对应的分配执行时间;
24.如果相应的预测时刻处的斜率小于0,则将相应的预测时刻加上两倍的所述指定平移时间得到的时刻作为相应的预测时刻对应的分配执行时间。
25.进一步地,所述根据预先指定的单位资源指标系数、以及所述预测曲线上在每个预测时刻处的斜率,分别确定相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量,具体为:
26.在所述当前指定时间段的起始时刻,完成针对每个预测时刻执行所述根据预先指定的单位资源指标系数、以及所述预测曲线上在每个预测时刻处的斜率,分别确定相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量的步骤,并且将得到的相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量存储到存储区;
27.所述根据相应的预测时刻处的斜率、所述指定平移时间和相应的预测时刻确定相应的预测时刻对应的分配执行时刻,具体为:
28.在所述当前指定时间段的起始时刻,完成针对每个预测时刻执行所述根据相应的预测时刻处的斜率、所述指定平移时间和相应的预测时刻确定相应的预测时刻对应的分配执行时刻的步骤,并且将得到的相应的预测时刻对应的分配执行时刻存储到所述存储区,并且与相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量一一对应;
29.所述当系统时间到达某一预测时刻对应的分配执行时刻处时,则将所述指定资源的数量分配为相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量,具体为:
30.当系统时间到达某一预测时刻对应的分配执行时刻处时,根据相应的预测时刻对应的分配执行时刻从所述存储区取出相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量,并将所述指定资源的数量分配为相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量。
31.另一方面,本发明实施例提供一种资源分配装置,包括:
32.数据收集单元,用于收集与指定资源相关的关键业务指标的历史数据;
33.数据处理单元,根据所述历史数据得到历史曲线;
34.数据平移单元,用于将所述历史曲线上关键业务指标的所有数值向历史时间方向平移指定平移时间得到平移曲线;
35.数据截取单元,用于从所述平移曲线中截取当前指定时间段的至少一个在前指定时间段对应的曲线作为前置曲线,并根据所述前置曲线得到所述当前指定时间段对应的预测曲线;
36.分配数量获取单元,用于根据预先指定的单位资源指标系数、以及所述预测曲线上在每个预测时刻处的斜率,分别确定相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量;
37.分配时间获取单元,用于根据相应的预测时刻处的斜率、所述指定平移时间和相应的预测时刻确定相应的预测时刻对应的分配执行时刻;
38.资源分配单元,用于当系统时间到达某一预测时刻对应的分配执行时刻处时,则将所述指定资源的数量分配为相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量;
39.其中,所述预先指定的单位资源指标系数表示在单位数量的所述指定资源条件下所能达到的关键业务指标的数值;
40.在所述当前指定时间段内以预置时间间隔确定预测时刻,相邻预测时刻之间间隔所述预置时间间隔;所述预置时间间隔的时间长度小于所述指定时间段的时间长度。
41.进一步地,所述数据收集单元,具体用于:
42.在所述当前指定时间段的起始时刻,收集与所述指定资源相关的关键业务指标在至少一个在前指定时间段上的历史数据,所述各指定时间段之间时间连续。
43.进一步地,所述分配数量获取单元,包括:
44.当前数量获取模块,用于针对每个预测时刻,获取相应的预测时刻处的所述指定资源的当前分配数量;
45.斜率获取模块,用于计算在所述预测曲线上相应的预测时刻处和相应的预测时刻的下一预测时刻处两点连线的斜率作为相应的预测时刻处的斜率;
46.预测数量计算模块,用于将所述单位资源指标系数乘以相应的预测时刻处的斜率得到的乘积,再加上所述当前分配数量,得到相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量。
47.进一步地,所述分配时间获取单元,包括:
48.上升段分配时间模块,用于如果相应的预测时刻处的斜率大于或等于0,则将相应的预测时刻作为相应的预测时刻对应的分配执行时间;
49.下降段分配时间模块,用于如果相应的预测时刻处的斜率小于0,则将相应的预测时刻加上两倍的所述指定平移时间得到的时刻作为相应的预测时刻对应的分配执行时间。
50.进一步地,所述分配数量获取单元,用于在所述当前指定时间段的起始时刻被触发,针对每个预测时刻确定相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量,并且将得到的相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量存储到存储区;
51.所述分配时间获取单元,用于在所述当前指定时间段的起始时刻被触发,针对每个预测时刻确定相应的预测时刻对应的分配执行时刻,并且将得到的相应的预测时刻对应的分配执行时刻存储到所述存储区,并且与相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量一一对应;
52.所述资源分配单元,用于当系统时间到达某一预测时刻对应的分配执行时刻处时,根据相应的预测时刻对应的分配执行时刻从所述存储区取出相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量,并将所述指定资源的数量分配为相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量。
53.上述技术方案具有如下有益效果:通过收集与指定资源相关的关键业务指标的历史数据,构成关键业务指标的历史曲线图,再对历史曲线图向历史时间方向偏移,然后计算预置时间间隔的两点之间的斜率,并且结合单位指定资源对应的关键业务指标的数值计算指定资源的预测分配数量,根据得到的预测分配数量提前对指定资源进行扩缩容。通过对历史数据的分析保证了在扩缩容后业务服务稳定,根据资源需求的变化扩缩容达到了最大限度减少集群资源浪费的效果,通过对历史曲线的平移以及根据斜率和单位指定资源对应的关键业务指标的数值计算预测资源分配数量,并按预测资源分配数量扩缩容,解决了资源分配数量变化滞后的问题。进一步地,对历史数据进行滤波,使得到的历史曲线更平滑,显著减少后续计算预测资源分配数量和斜率的短期波动,使系统更加稳定。进一步地,在当前的指定时间段的起始时刻收集历史数据,实现动态滚动更新预测曲线,使预测曲线更贴近当前的指定时间段的资源需求情况,达到更准确的预测效果。根据斜率确定更新指定资源分配数量,可以确保在指定资源需求增加前,可以提前完成扩充,以便在需要使用更多指定资源时,已经准备好足够的资源数量;还可以确保在指定资源需求降低过程中,延迟缩减当前指定资源的数量,以便当前仍有足够可用指定资源,并且在指定资源需求减少后,完成指定资源的缩减,达到了保证业务稳定的基础上对指定资源进行扩缩容提高资源利用率的效果。特别地,本发明技术方案对于运行时资源需求量按一定的周期变化的系统的资源提前预测和分配具有显著的效果。
附图说明
54.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
55.图1是本发明实施例之一的一种资源分配方法的流程图;
56.图2是本发明实施例之一的一种资源分配装置的架构图;
57.图3是本发明实施例之一的由历史数据构成的曲线图;
58.图4是本发明实施例之一的滤波后的历史数据构成的曲线图;
59.图5是本发明实施例之一的预测曲线的曲线图;
60.图6是本发明实施例之一的一种资源分配装置应用示意图。
具体实施方式
61.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
62.在以下发明实施例中主要以kubernetes容器编排引擎中的pod分配为例进行说明,但不构成对本发明技术方案适用范围的限制,本发明的技术方案应用于包括但不限于kubernetes容器编排引擎中pod分配领域等计算机技术领域。
63.在以下发明实施例中历史曲线、平移曲线以及预测曲线均是为了说明以时间顺序组织的关键业务指标的趋势和与时间的对应关系,即上述曲线均是指关键业务指标的时间序列,在此使用曲线进行说明是为了方便对本发明实施例的方法和装置进行说明,不应理解为将关键业务指标的时间序列绘制为曲线。
64.一方面,如图1所示,本发明实施例提供一种资源分配方法,包括:
65.步骤s100,收集与指定资源相关的关键业务指标的历史数据;
66.在一些实施例中,可以使用包括但不限于prometheus等系统监控和告警工具包对指定资源相关的关键业务指标的数据进行收集;指定资源包括但不限于kubernetes容器编排引擎邻域中的pod、分布式集群邻域中的服务器、云服务中的虚拟机、内存等可依据使用情况按需分配的资源;关键业务指标与指定资源相关,针对具体的指定资源,关键业务指标包含的内容可能不同,可根据具体需求确定。例如当指定资源为kubernetes容器编排引擎邻域中的pod时,关键业务指标包括但不限于cpu使用量、内存使用量、网络的流入流出、和/或每秒请求数(即qps,query per second)等指标。历史数据可以只收集一种指标,也可以同时收集多种指标;收集数据的范围可以覆盖当前的指定时间段的当前系统时间前的一个或多个指定时间段的数据,各指定时间段可以是连续的,或不连续的。例如指定时间段为一日时,当前系统时间为0点,则收集前一日或前几日的历史数据。
67.步骤s101,根据所述历史数据得到历史曲线;
68.对于收集一种指标的情况,可以根据该指标的历史数据构成历史曲线;对于收集多种指标的情况,可以根据多种指标按照指定的聚合公式聚合后的数据构成历史曲线,指定的聚合公式可通过对相关指标的历史数据进行统计分析获得,或者将多种指标的曲线进行包括但不限于缩放、平移、数学运算等方法处理后拟合为一条曲线作为历史曲线。历史曲线以时间为横轴,以关键业务指标的数值为纵轴,表示关键业务指标随时间变化而变化的趋势和数量。以kubernetes容器编排引擎邻域中的pod的资源分配为例,历史曲线的横轴为时间,纵轴为qps;关键业务指标的采样率可以按需要设置;在本实施例中的qps的采样率设置为每10分钟采样一次qps数据。优选地,为了提高稳定性,可以对所述历史数据进行滤波,得到历史曲线,降低历史曲线的波动,从而提高稳定性。在一些实施例中,对收集的历史数据进行滤波,可以使得到的历史曲线更加平滑,避免后续计算预测分配数量时,出现频繁的波动变化,从而可以更加平稳的调整指定资源的分配数量。
69.步骤s102,将所述历史曲线上关键业务指标的所有数值向历史时间方向平移指定平移时间得到平移曲线;
70.历史时间方向即过去时间方向;通过向历史时间方向平移指定平移时间,实现对指定资源的分配的超前调整。历史曲线代表了按指定资源的实时需求调整指定资源得到的关键业务指标的变化趋势,将历史曲线向历史时间平移指定平移时间,得到平移曲线,在任何一个时刻处,平移曲线都代表了对未来时刻的关键业务指标变化的预测。指定平移时间的取值可以根据实际需要的超前预测时间设置,例如希望在当前预测时刻为当前预测时刻的两小时后的时刻超前调整指定资源的分配,则可将指定平移时间设置为两小时,从而在
当前预测时刻能够得到两小时后的关键业务指标的变化情况,进一步可以根据得到的关键业务指标的变化情况得到两小时后的指定资源的分配情况,其中,当前预测时刻表示在当前的指定时间段内的各预测时刻中的当前正在进行分析预测的预测时刻;当一些实施例中,通过实时预测的方式,在当前系统时间到达每一个预测时刻时,实时分析未来的指定资源分配数量时,当前预测时刻即是当前系统时间;当另一些实施例中,在当前的指定时间段的起始时刻就集中对指定时间段内的每个预测时刻都完成针对各预测时刻的未来的指定资源的分配数量的预测。
71.步骤s103,从所述平移曲线中截取当前指定时间段的至少一个在前指定时间段对应的曲线作为前置曲线,并根据所述前置曲线得到所述当前指定时间段对应的预测曲线;
72.指定时间段可根据实际需要设置,例如可以设置为包括但不限于一个月,一日,一小时等时间长度;平移曲线可以包括一个或多个指定时间段范围的数据,可以从平移曲线中以各指定时间段为界限截取当前的指定时间段前的至少一个指定时间段对应的曲线作为前置曲线,当只截取了一个指定时间段对应的曲线时,直接将此曲线作为前置曲线,当截取了多个指定时间段对应的曲线时,可以将多个指定时间段对应的曲线按各自指定时间段的起点时间对齐,将多个指定时间段对应的曲线合并处理为一条曲线,合并处理的方法可以有很多种,例如对多条曲线进行拟合得到一条曲线、或者对同一个时间偏移上的数据点求均值或中位值等得到一条曲线等等,其他方法不做列举。将由前置曲线得到的一条曲线作为当前的指定时间段对应的预测曲线。以指定时间段为一日为例,将一日的时间范围定义为0:00(即0时)到24:00(即24时);从平移曲线中,截取当前日的前一日对应的平移曲线,并将截取的曲线作为当前日对应的预测曲线。
73.步骤s104,根据预先指定的单位资源指标系数、以及所述预测曲线上在每个预测时刻处的斜率,分别确定相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量;
74.预先指定的单位资源指标系数通过预先对历史数据的统计分析获得;例如以kubernetes容器编排引擎邻域中的pod的资源分配为例,可以统计一个deployment管理的所有pod在历史上处理的所有请求的qps数据,使用所有请求的qps数据除以pod的数量得到每个pod对应的qps数据,即得到了预置的单位指定资源对应的关键业务指标的数值。预测曲线上在每个预测时刻处的斜率可以通过相邻的两个预测时刻计算,相邻的两个预测时刻之间间隔预置时间间隔,即当前预测时刻与下一预测时刻之间间隔了预置时间间隔,计算在预测曲线上,当前预测时刻相对于下一预测时刻的斜率,进一步可以根据此斜率和预置的单位指定资源对应的关键业务指标的数值通过预先设置的数学运算处理得到指定资源的预测分配数量。预置时间间隔可根据具体项目需求对指定资源进行预测分配的频率要求确定,若具体项目中,指定资源的需求变化比较频繁,则将预置时间间隔设置的短些,反之可以设置的长些。
75.步骤s105,根据相应的预测时刻处的斜率、所述指定平移时间和相应的预测时刻确定相应的预测时刻对应的分配执行时刻;
76.以相应的预测时刻作为当前预测时刻,通过斜率可知下一预测时刻相对于当前预测时刻的关键业务指标是基本相同、增加或者减少,当斜率为非负值时,可以在当前预测时刻提前将指定资源的数量分配调整为预测分配数量,即当前预测时刻就是分配执行时刻,
当斜率为负值时,在当前预测时刻向未来时间方向延时一定的时间再将指定资源的数量分配调整为预测分配数量,即分配执行时间被设置为当前预测时刻向未来时间方向延时一定的时间。
77.步骤s106,当系统时间到达某一预测时刻对应的分配执行时刻处时,则将所述指定资源的数量分配为相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量;
78.根据前述步骤计算得到的预测分配数量以及相应的分配执行时刻,当系统时间到达每个分配执行时刻时,将指定资源分配为相应分配执行时刻对应的预测分配数量。在一些实施例中,步骤104和步骤105可以在当前指定时间段内的每个预测时刻处被执行,计算相应预测时刻对应的分配执行时刻和预测分配数量;在另一些实施例中,步骤104和步骤105也可以在当前指定时间段的起始时刻处集中针对每一个预测时刻都计算出相应的分配执行时刻和预测分配数量,并将得到的每组分配执行时刻和预测分配数量一一对应的存储在存储区,当系统时间到达每一个分配执行时刻时,从存储区中取出对应的预测分配数量,将所述指定资源分配为预测分配数量。在分配指定资源时,可以使用指定的资源分配工具完成分配,指定的资源分配工具根据具体项目确定;例如在软件项目中,设计内存分配,则指定资源分配工具可以是内存管理程序;再例如在kubernetes容器编排引擎邻域中,可以使用pod资源分配工具。
79.其中,所述预先指定的单位资源指标系数表示在单位数量的所述指定资源条件下所能达到的关键业务指标的数值;
80.在所述当前指定时间段内以预置时间间隔确定预测时刻,相邻预测时刻之间间隔所述预置时间间隔;所述预置时间间隔的时间长度小于所述指定时间段的时间长度。
81.本发明实施例具有如下技术效果:通过收集与指定资源相关的关键业务指标的历史数据,构成关键业务指标的历史曲线图,再对历史曲线图向历史时间方向偏移,然后计算预置时间间隔的两点之间的斜率,并且结合单位指定资源对应的关键业务指标的数值计算指定资源的预测分配数量,根据得到的预测分配数量提前对指定资源进行扩缩容。通过对历史数据的分析保证了在扩缩容后业务服务稳定,根据资源需求的变化扩缩容达到了最大限度减少集群资源浪费的效果,通过对历史曲线的平移以及根据斜率和单位指定资源对应的关键业务指标的数值计算预测资源分配数量,并按预测资源分配数量扩缩容,解决了资源分配数量变化滞后的问题。
82.进一步地,所述收集与指定资源相关的关键业务指标的历史数据,具体为:
83.在所述当前指定时间段的起始时刻,收集与所述指定资源相关的关键业务指标在至少一个在前指定时间段上的历史数据,所述各指定时间段之间时间连续。
84.在一些实施例中,收集数据的范围可以覆盖当前的指定时间段的当前系统时间前的一个或多个指定时间段的数据,各指定时间段可以是连续的,或不连续的。优选地,每次在当前的指定时间段的起始时刻收集历史数据,实现动态滚动更新预测曲线,使预测曲线更贴近当前的指定时间段的资源需求情况,达到更准确的预测效果。例如指定时间段为一日时,当前系统时间为0点,则收集前一日或前几日的历史数据。
85.进一步地,所述根据预先指定的单位资源指标系数、以及所述预测曲线上在每个预测时刻处的斜率,分别确定相应的预测时刻对应的分配执行时刻处的所述指定资源的预
测分配数量,包括:
86.针对每个预测时刻,获取相应的预测时刻处的所述指定资源的当前分配数量;
87.计算在所述预测曲线上相应的预测时刻处和相应的预测时刻的下一预测时刻处两点连线的斜率作为相应的预测时刻处的斜率;
88.将所述单位资源指标系数乘以相应的预测时刻处的斜率得到的乘积,再加上所述当前分配数量,得到相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量。
89.在一些实施例中,按如下公式(1)计算预测分配数量:
90.p=pc s
×cꢀꢀ
(1)
91.其中,p表示指定资源的预测分配数量;pc表示相应的预测时刻时指定资源的当前分配数量;s表示斜率,c表示预先指定的单位资源指标系数。
92.如图5所示,(x1,y1)表示相应的预测时刻及关键业务指标的数值,(x2,y2)表示相应的预测时刻的下一个预测时刻及关键业务指标的数值,斜率s通过计算(x1,y1)和(x2,y2)连点的斜率得到,斜率计算公式为:s=(y2-y1)/(x2-x1)。c表示预先指定的单位资源指标系数,可以通过对历史数据的统计获得,例如在kubernetes容器编排引擎中统计指定deployment的一个pod能处理的qps数,其中pod相当于指定资源,qps相当于关键业务指标。pc可通过查询系统当前的资源分配状态获得,例如在kubernetes容器编排引擎中可以通过查询指定deployment当前分配的pod数获得。
93.本发明实施例具有如下技术效果:根据斜率的变化自动调整资源预期分配数量的变化,当关键业务指标不随时间变化时,斜率为0,此时指定资源的分配数量也保持不变;当关键业务指标随时间按固定的速度增加时,指定资源的预测分配数量也按固定的速度增加;关键业务指标随时间加速增加时,指定资源的预测分配数量也会加速增加;当关键业务指标随时间按固定的速度减少时,指定资源的预测分配数量也按固定的速度减少;当关键业务指标随时间加速减少时,指定资源的预测分配数量也加速减少。达到了及时预测指定资源分配数量的效果。
94.进一步地,所述根据相应的预测时刻处的斜率、所述指定平移时间和相应的预测时刻确定相应的预测时刻对应的分配执行时刻,包括:
95.如果相应的预测时刻处的斜率大于或等于0,则将相应的预测时刻作为相应的预测时刻对应的分配执行时间;
96.如果相应的预测时刻处的斜率小于0,则将相应的预测时刻加上两倍的所述指定平移时间得到的时刻作为相应的预测时刻对应的分配执行时间。
97.在一些实施例中,当斜率大于或等于0时,说明相应的预测时刻的未来时刻所需指定资源需要增加或保持不变,为了在该未来时刻有足够的资源可用,将相应的预测时刻作为对应的分配执行时间,在相应预测时刻处更新指定资源的数量。当斜率为负时,预期在相应的预测时刻的未来时刻指定资源的需求数量将降低;但在相应预测时刻处,还不能降低,以便避免导致相应预测时刻处的指定资源数量不足,所以从相应的预测时刻延迟两倍的指定平移时间作为相应的预测时刻对应的分配执行时间,相当于将历史曲线向未来时间方向平移指定平移时间;在获得平移曲线时,先将历史曲线向历史时间方向平移指定平移时间,从而可以提前预知未来的斜率方向,在当前预测时刻提前计算未来的预测分配数量,并将
未来的预测分配数量保存,当时间到达当前预测时刻延迟两倍的指定平移时间处时,按预先计算出的预测分配数量调整指定资源的分配数量。达到提前调整指定资源分配数量的效果。
98.进一步地,所述根据预先指定的单位资源指标系数、以及所述预测曲线上在每个预测时刻处的斜率,分别确定相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量,具体为:
99.在所述当前指定时间段的起始时刻,完成针对每个预测时刻执行所述根据预先指定的单位资源指标系数、以及所述预测曲线上在每个预测时刻处的斜率,分别确定相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量的步骤,并且将得到的相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量存储到存储区;
100.所述根据相应的预测时刻处的斜率、所述指定平移时间和相应的预测时刻确定相应的预测时刻对应的分配执行时刻,具体为:
101.在所述当前指定时间段的起始时刻,完成针对每个预测时刻执行所述根据相应的预测时刻处的斜率、所述指定平移时间和相应的预测时刻确定相应的预测时刻对应的分配执行时刻的步骤,并且将得到的相应的预测时刻对应的分配执行时刻存储到所述存储区,并且与相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量一一对应;
102.所述当系统时间到达某一预测时刻对应的分配执行时刻处时,则将所述指定资源的数量分配为相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量,具体为:
103.当系统时间到达某一预测时刻对应的分配执行时刻处时,根据相应的预测时刻对应的分配执行时刻从所述存储区取出相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量,并将所述指定资源的数量分配为相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量。
104.在一些实施例中,在当前的指定时间段的起始时刻处预先集中针对每一个预测时刻都计算出相应的分配执行时刻和预测分配数量,并将得到的每组分配执行时刻和预测分配数量一一对应的存储在存储区,当当前系统时间到达每一个分配执行时刻时,从存储区中取出该分配执行时刻对应的预测分配数量,将所述指定资源分配为预测分配数量。存储区可以包括但不限于数据库、磁盘文件或内存文件等。
105.本发明实施例具有如下技术效果:在当前的指定时间段的开始处就预先分析计算出在当前的指定时间段的运行期间的分配执行时刻和相应的预测分配数量,并一一对应地保存在存储区中,实现了对当前的指定时间段的指定资源的分配情况提前预测,达到及时分配调整指定资源的分配数量的效果。
106.另一方面,如图2所示,本发明实施例提供一种资源分配装置,包括:
107.数据收集单元200,用于收集与指定资源相关的关键业务指标的历史数据;
108.数据处理单元201,用于根据所述历史数据得到历史曲线;
109.数据平移单元202,用于用于将所述历史曲线上关键业务指标的所有数值向历史时间方向平移指定平移时间得到平移曲线;
110.数据截取单元203,用于从所述平移曲线中截取当前指定时间段的至少一个在前指定时间段对应的曲线作为前置曲线,并根据所述前置曲线得到所述当前指定时间段对应
的预测曲线;
111.分配数量获取单元204,用于根据预先指定的单位资源指标系数、以及所述预测曲线上在每个预测时刻处的斜率,分别确定相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量;
112.分配时间获取单元205,用于根据相应的预测时刻处的斜率、所述指定平移时间和相应的预测时刻确定相应的预测时刻对应的分配执行时刻;
113.资源分配单元206,用于当系统时间到达某一预测时刻对应的分配执行时刻处时,则将所述指定资源的数量分配为相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量;
114.其中,所述预先指定的单位资源指标系数表示在单位数量的所述指定资源条件下所能达到的关键业务指标的数值;
115.在所述当前指定时间段内以预置时间间隔确定预测时刻,相邻预测时刻之间间隔所述预置时间间隔;所述预置时间间隔的时间长度小于所述指定时间段的时间长度。
116.进一步地,所述数据收集单元200,具体用于:
117.在所述当前指定时间段的起始时刻,收集与所述指定资源相关的关键业务指标在至少一个在前指定时间段上的历史数据,所述各指定时间段之间时间连续。
118.进一步地,所述分配数量获取单元204,包括:
119.当前数量获取模块,用于针对每个预测时刻,获取相应的预测时刻处的所述指定资源的当前分配数量;
120.斜率获取模块,用于计算在所述预测曲线上相应的预测时刻处和相应的预测时刻的下一预测时刻处两点连线的斜率作为相应的预测时刻处的斜;
121.预测数量计算模块,用于将所述单位资源指标系数乘以相应的预测时刻处的斜率得到的乘积,再加上所述当前分配数量,得到相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量。
122.进一步地,所述分配时间获取单元205,包括:
123.上升段分配时间模块,用于如果相应的预测时刻处的斜率大于或等于0,则将相应的预测时刻作为相应的预测时刻对应的分配执行时间;
124.下降段分配时间模块,用于如果相应的预测时刻处的斜率小于0,则将相应的预测时刻加上两倍的所述指定平移时间得到的时刻作为相应的预测时刻对应的分配执行时间。
125.进一步地,所述分配数量获取单元204,用于在所述当前指定时间段的起始时刻被触发,针对每个预测时刻确定相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量,并且将得到的相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量存储到存储区;
126.所述分配时间获取单元205,用于在所述当前指定时间段的起始时刻被触发,针对每个预测时刻确定相应的预测时刻对应的分配执行时刻,并且将得到的相应的预测时刻对应的分配执行时刻存储到所述存储区,并且与相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量一一对应。
127.所述资源分配单元206,用于当系统时间到达某一预测时刻对应的分配执行时刻处时,根据相应的预测时刻对应的分配执行时刻从所述存储区取出相应的预测时刻对应的
分配执行时刻处的所述指定资源的预测分配数量,并将所述指定资源的数量分配为相应的预测时刻对应的分配执行时刻处的所述指定资源的预测分配数量。
128.本发明实施例具有如下技术效果:通过收集与指定资源相关的关键业务指标的历史数据,构成关键业务指标的历史曲线图,再对历史曲线图向历史时间方向偏移,然后计算预置时间间隔的两点之间的斜率,并且结合单位指定资源对应的关键业务指标的数值计算指定资源的预测分配数量,根据得到的预测分配数量提前对指定资源进行扩缩容。通过对历史数据的分析保证了在扩缩容后业务服务稳定,根据资源需求的变化扩缩容达到了最大限度减少集群资源浪费的效果,通过对历史曲线的平移以及根据斜率和单位指定资源对应的关键业务指标的数值计算预测资源分配数量,并按预测资源分配数量扩缩容,解决了资源分配数量变化滞后的问题。进一步地,对历史数据进行滤波,使得到的历史曲线更平滑,显著减少后续计算预测资源分配数量和斜率的短期波动,使系统更加稳定。进一步地,在当前的指定时间段的起始时刻收集历史数据,实现动态滚动更新预测曲线,使预测曲线更贴近当前的指定时间段的资源需求情况,达到更准确的预测效果。根据斜率确定更新指定资源分配数量,可以确保在指定资源需求增加前,可以提前完成扩充,以便在需要使用更多指定资源时,已经准备好足够的资源数量;还可以确保在指定资源需求降低过程中,延迟缩减当前指定资源的数量,以便当前仍有足够可用指定资源,并且在指定资源需求减少后,完成指定资源的缩减,达到了保证业务稳定的基础上对指定资源进行扩缩容提高资源利用率的效果。
129.本发明实施例中提供的一种资源分配装置是与前述的一种资源分配方法一一对应的产品类实施列,本领域技术人员可以毫无异议的根据前述的一种资源分配方法的对应实施例理解本发明实施例中提供的一种资源分配装置,在此不再赘述。
130.下面结合具体的应用实例对本发明实施例上述技术方案进行详细说明,实施过程中没有介绍到的技术细节,可以参考前文的相关描述。
131.首先对本发明实施例中出现的名词解释:
132.kubernetes系统是本领域技术人员熟知的一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化;
133.deployment是kubernetes系统中用于管理pod的组件,为pods和replicasets提供声明式的更新能力;
134.pod是可以在kubernetes系统中创建和管理的、最小的可部署的计算单元;
135.api server即api服务器负责提供http api,以供用户、集群中的不同部分和集群外部组件相互通信;
136.spa即smartpodautoscaler即智能pod自动缩放;
137.kpi即key performance indicators,即关键业务指标;
138.qps即query per second,即每秒请求数;
139.prometheus是一种系统监控和告警工具包;
140.python是一种解释型、高级和通用的编程语言;
141.matplotlib是一个python的2d绘图库;
142.发明实施例以kubernetes中的pod资源缩放处理对本发明技术方案进行说明。
143.在使用kubernetes这种容器编排工具中部署业务服务,业务服务最终运行在pod
中。为了保证业务服务的稳定性,同时节省集群资源,需要动态的调整业务服务的pod的数量。本发明实施例就是在即可保证业务服务的稳定性,又可以最大限度的减少集群资源的浪费,同时解决pod数量变化滞后性问题。本发明实施例通过收集业务pod的kpi,动态的构成kpi波形图,通过滤波器进行平滑处理,再对波形进行前置偏移,然后计算任意两点之间的斜率结合pod与kpi的关系获取出应的pod数,在业务发生波动的时候,提前做好pod的扩缩容。
144.如图6所示,本发明实施例包括:数据库、spa控制器(相当于资源分配装置)、api service、deployment及其管理的pod(相当于指定资源)、prometheus。
145.本发明实施例主要包括3个步骤:kpi监控数据的收集、spa控制器的控制、调整deployment。
146.kpi监控数据的收集:
147.kpi监控数据的收集采用了prometheus服务进行收集,可以收集的kpi指标包括cpu、内存、网络的流入流出、qps等数据。
148.spa控制器:
149.spa控制器为单独的一个服务,可以以pod的形式运行在kubernetes集群中,也可单独部署。
150.处理流程:
151.用户在spa控制器中配置需要进行智能pod缩放的特定deployment。
152.spa控制器通过配置的特定deployment的信息,去prometheus里面获取特定deployment对应pod的kpi监控数据。如获取特定deployment中pod的qps数据(相当于关键业务指标)。
153.为了容易理解qps数据即qps时间序列数据的趋势以及与时间之间的关系,使用python的matplotlib库,对获取到的qps数据进行可视化的绘图,如图3,横坐标为时间轴,从0:00到24:00;纵坐标为每10分的qps数据,qps数据的采样率可根据实际需求设置,需要特别说明的是,实现本发明技术方案只需要对得到的历史数据所构成的时间序列进行处理,无需绘制曲线图,实施例说明中绘制的曲线图仅是为了更清楚的对实施例进行说明。
154.从图3中可以看出,整个获取到的qps数据构成的曲线的波动规律,同时曲线图并不平滑,存在好多的锯齿形波动,获取到的qps数据并不能直接的使用,否则将导致频繁地调整pod数量,造成业务服务的波动。
155.对获取到的qps数据做平滑处理,本发明实施例中使用了savitzky-golay滤波器对获取到的qps数据进行平滑处理,处理后的结果如图4。
156.对比图3中的原始qps数据图和图4中使用滤波器处理后的数据图。可以看到图4中的qps的曲线与图3中的qps的曲线的变化趋势是相同的。可以通过调整savitzky-golay滤波器中的两个参数window_length和polyorder进行qps平滑度的调整。
157.经过savitzky-golay滤波器处理的数据需要保存到数据库中。
158.偏移处理:为了做到pod提前扩容的目的,需要对savitzky-golay滤波器处理后的数据进偏移处理,需要更早的时间做偏移,偏移的时间长度(即指定平移时间),需要根据业务的需求进行相关的调整。偏移处理后的图如图5所示。偏移后的数据同样存在数据库中。
159.计算斜率:斜率可以体现出图形的变化趋势。斜率计算公式为:(y2-y1)/(x2-x1),
如图5所示,其中(x1,y1)是图5中曲线上的一个点,(x2,y2)是图5中曲线上的另一个点,两点之间的时间间隔(即x2-x1的值)根据业务的不同可以进行调整。根据时间间隔(即预置时间间隔),可以计算出(x1,y1)这个点与(x2,y2)这个点的斜率。简单的说明:斜率值为正值,说明下一个时间点(即下一预测时刻)x2处的y2值相对于当前预测时刻x1处的y1是增加的,斜率值越大说明下一个时间的值相对之前的点增加的越大,反知,斜率为负值,说明下一个点的值相对之前的点降低了,斜率的绝对值越大说明降低的越大。根据时间间隔,计算出当前预测时刻对应点的斜率最终写入到数据库中。
160.计算pod数量与qps之间的关系系数,此系数根据业务的实际情况得到或者压测数据得到,是一个pod可以支撑的qps数量。此系数与斜率的乘积为在当前预测时刻计算出的pod增量,此数据需要存储到数据库,再叠加当前预测时刻时的pod分配数量,就是在当前预测时刻计算出的pod的预测分配数量。
161.斜率为0时,pod分配数量保持不变;
162.斜率为正值时,需要扩容pod数量,在当前预测时刻将pod的分配数量调整为计算得到的pod的预测分配数量;
163.斜率为负值的时候,需要缩减pod数量,此时,需要延时缩减,延时的时间为2倍的指定平移时间,即延时一倍的指定平移时间相当于到达实际的pod需求数量,延时两倍的指定平移时间相当于将历史曲线右偏移一个指定平移时间。
164.预处理数据:
165.qps数据会以24小时为一个周期,每天24:00更新数据库里面的原始qps数据,然后在经过spa的处理,最终生成pod数量与时间的对应数据。这个可以保证业务服务qps的数据总是变化的,保证了第二天的pod数据调整更趋近于前一天真实的数据变化。
166.调整deployment:
167.根据时间点算出的pod数量,在到达此时间点的时候,spa控制器会通过api server修改对应的指定deployment的副本数,副本数的改变会让deployment的控制增加或者较少pod数量,最终达到智能动态的调整pod数量。
168.本发明实施例具有如下技术效果:通过收集与指定资源相关的关键业务指标的历史数据,构成关键业务指标的历史曲线图,再对历史曲线图向历史时间方向偏移,然后计算预置时间间隔的两点之间的斜率,并且结合单位指定资源对应的关键业务指标的数值计算指定资源的预测分配数量,根据得到的预测分配数量提前对指定资源进行扩缩容。通过对历史数据的分析保证了在扩缩容后业务服务稳定,根据资源需求的变化扩缩容达到了最大限度减少集群资源浪费的效果,通过对历史曲线的平移以及根据斜率和单位指定资源对应的关键业务指标的数值计算预测资源分配数量,并按预测资源分配数量扩缩容,解决了资源分配数量变化滞后的问题。进一步地,对历史数据进行滤波,使得到的历史曲线更平滑,显著减少后续计算预测资源分配数量和斜率的短期波动,使系统更加稳定。进一步地,在当前的指定时间段的起始时刻收集历史数据,实现动态滚动更新预测曲线,使预测曲线更贴近当前的指定时间段的资源需求情况,达到更准确的预测效果。根据斜率确定更新指定资源分配数量,可以确保在指定资源需求增加前,可以提前完成扩充,以便在需要使用更多指定资源时,已经准备好足够的资源数量;还可以确保在指定资源需求降低过程中,延迟缩减当前指定资源的数量,以便当前仍有足够可用指定资源,并且在指定资源需求减少后,完成
指定资源的缩减,达到了保证业务稳定的基础上对指定资源进行扩缩容提高资源利用率的效果。
169.应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。
170.在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要比清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。
171.为使本领域内的任何技术人员能够实现或者使用本发明,上面对所公开实施例进行了描述。对于本领域技术人员来说;这些实施例的各种修改方式都是显而易见的,并且本文定义的一般原理也可以在不脱离本公开的精神和保护范围的基础上适用于其它实施例。因此,本公开并不限于本文给出的实施例,而是与本技术公开的原理和新颖性特征的最广范围相一致。
172.上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括:”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。
173.本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
174.本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(asic),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
175.本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于ram存储器、闪存、rom存储器、eprom存储
器、eeprom存储器、寄存器、硬盘、可移动磁盘、cd-rom或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于asic中,asic可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。
176.在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于ram、rom、eeprom、cd-rom或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(dsl)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、dvd、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。
177.以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献