一种用于应用pod控制的数据处理系统的制作方法

文档序号:32985770发布日期:2023-01-17 22:43阅读:27来源:国知局
一种用于应用pod控制的数据处理系统的制作方法

1.本技术涉及数据处理领域,尤其涉及一种用于应用pod控制的数据处理系统。


背景技术:

2.现今,很多的应用都直接在k8s(kubernetes)系统上进行部署。使得每一应用的子应用可以依托于其单独对应的pod进行运行。但每一个pod都有配置上限,如一个pod一分钟内能够支撑最大调用次数是有上限的。而若在一分钟内,该pod被调用的次数超过了这个上限,则会到这一些调用请求出现请求失败的问题出现。故而,在这种情况下,很多系统会对当前的调用数量过高的子应用进行扩容处理,即增加子应用对应的pod的数量。
3.但如果,同一时间内,整体增加的pod的数量过多,则会导致系统出现不稳定的情况,反而会导致系统的整体调用失败率剧增的情况出现。


技术实现要素:

4.有鉴于此,本技术提供一种用于应用pod控制的数据处理系统,至少部分解决现有技术中存在的问题。
5.在本技术的一方面,提供一种用于应用pod控制的数据处理系统,包括:控制服务器和应用运行服务器,所述控制服务器与应用运行服务器连接;所述应用运行服务器内运行有若干应用,每一所述应用包括若干子应用,每一所述应用具有唯一的调用端口;每一子应用具有至少一个与其唯一对应的pod。
6.所述控制服务器用于执行以下步骤:
7.s100,响应于到达设定时间,从所述应用运行服务器内的若干子应用中,确定出若干待扩容子应用;所述待扩容子应用为需要增加其对应的pod的数量的子应用。
8.s200,获取每一待扩容子应用对应的待扩容数量num1,num2,...,nume,...,numw,e=1,2,...,w;其中,w为所述待扩容子应用的数量,nume为第e个待扩容子应用对应的待扩容数量。
9.s300,若num1+num2+...+nume+...+numw>num
max
,则进入步骤s400;num
max
为预设的扩容数量阈值。
10.s400,从w个待扩容子应用中确定出至少一个目标待扩容子应用。至少一个目标待扩容子应用对应的待扩容数量之和小于或等于num
max

11.s500,向所述应用运行服务器发送扩容指令,以使所述应用运行服务器为每一所述目标待扩容子应用增加数量为其对应的待扩容数量的pod。
12.本技术提供的用于应用pod控制的数据处理系统,通过单独设置的控制服务器,从所述应用运行服务器内的若干子应用中,确定出若干待扩容子应用。并在待扩容子应用对应的待扩容数量只和大于预设的扩容数量阈值时,从w个待扩容子应用中确定出至少一个目标待扩容子应用,以此保证至少一个目标待扩容子应用对应的待扩容数量之和小于或等于num
max
。这样,即使确定出的待扩容子应用对应的待扩容数量只和大于num
max
时,也不会直
接进行扩容,从而出现因为整体增加的pod的数量过多,使得系统的整体调用失败率剧增的情况。
附图说明
13.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
14.图1为本技术实施例提供的一种用于应用pod控制的数据处理系统中控制服务器执行步骤的流程示意图;
15.图2为本技术实施例提供的一种用于应用pod控制的数据处理系统中调用关系图的示意图。
具体实施方式
16.下面结合附图对本技术实施例进行详细描述。
17.需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合;并且,基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
18.需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
19.名词解释:
20.pod:在kubernetes集群中,pod是所有业务类型的基础,也是k8s管理的最小单位级,它是一个或多个容器的组合。
21.在本技术的一方面,提供一种用于应用pod控制的数据处理系统,包括:控制服务器和应用运行服务器,所述控制服务器与应用运行服务器连接;所述应用运行服务器内运行有若干应用,每一所述应用包括若干子应用,每一所述应用具有唯一的调用端口。即每一应用仅具有一共提供给外部进行调用的接口。外部设备可以通过向调用端口发送调用请求实现应用中子应用的调用。
22.每一子应用具有至少一个与其唯一对应的pod。其中,应用运行服务器可以为kubernetes集群中的服务器。
23.请参考图1所示,所述控制服务器用于执行以下步骤:
24.s100,响应于到达设定时间,从所述应用运行服务器内的若干子应用中,确定出若干待扩容子应用;所述待扩容子应用为需要增加其对应的pod的数量的子应用。
25.s200,获取每一待扩容子应用对应的待扩容数量num1,num2,...,nume,...,numw,e=1,2,...,w;其中,w为所述待扩容子应用的数量,nume为第e个待扩容子应用对应的待扩
容数量。
26.s300,若num1+num2+...+nume+...+numw>num
max
,则进入步骤s400;num
max
为预设的扩容数量阈值。
27.s400,从w个待扩容子应用中确定出至少一个目标待扩容子应用;至少一个目标待扩容子应用对应的待扩容数量之和小于或等于num
max

28.s500,向所述应用运行服务器发送扩容指令,以使所述应用运行服务器为每一所述目标待扩容子应用增加数量为其对应的待扩容数量的pod。
29.本实施例提供的用于应用pod控制的数据处理系统,通过单独设置的控制服务器,从所述应用运行服务器内的若干子应用中,确定出若干待扩容子应用。并在待扩容子应用对应的待扩容数量只和大于预设的扩容数量阈值时,从w个待扩容子应用中确定出至少一个目标待扩容子应用,以此保证至少一个目标待扩容子应用对应的待扩容数量之和小于或等于num
max
。这样,即使确定出的待扩容子应用对应的待扩容数量只和大于num
max
时,也不会直接进行扩容,从而出现因为整体增加的pod的数量过多,使得系统的整体调用失败率剧增的情况。
30.在本技术的一种示例性实施例中,所述步骤s400,包括以下步骤:
31.s411,获取每一待扩容子应用预设的优先级参数a1,a2,...,ae,...,aw;其中,ae为第e个待扩容子应用对应的预设的优先级参数。其中,优先级参数可以由工作人员对根据每一子应用的重要程度等进行预先设置并存储在参数表中,具体的,子应用的重要程度越大,其优先级参数越大。
32.s412,遍历a1,a2,...,ae,...,aw,若ae≥β,则将ae对应的待扩容子应用确定为目标待扩容子应用,否则,将ae对应的待扩容子应用确定为候选待扩容子应用。β为预设的优先级参数阈值。通过β可以确定出核心子应用和基础子应用,以将待扩容子应用中的核心子应用筛选出来,并优先对其进行扩容处理。
33.s413,获取第一目标列表ma=(ma1,ma2,...,ma
μ
,...,ma
λ
)和第二目标列表mb=(mb1,mb2,...,mbg,...,mbh),μ=1,2,...,λ,g=1,2,...,h,λ+h=w。其中,λ为当前确定出的目标待扩容子应用的数量,h为当前确定出的候选待扩容子应用的数量;ma
μ
为第μ个目标待扩容子应用对应的待扩容数量,mbg为第g个候选待扩容子应用对应的待扩容数量。
34.s414,若ma1+ma2+...+ma
μ
+...+ma
λ
<num
max
,则进入步骤s420。
35.所述步骤s414,进一步包括:
36.s4141,若ma1+ma2+...+ma
μ
+...+ma
λ
>num
max
,则进入步骤s430。
37.若ma1+ma2+...+ma
μ
+...+ma
λ
<num
max
则说明,应用控制服务器还能够承载比ma1+ma2+...+ma
μ
+...+ma
λ
数量更多的pod的增加。反之同理。
38.s420,分别获取mb1,mb2,...,mbg,...,mbh对应的候选待扩容子应用对应的调用链长度信息dl1,dl2,...,dlg,...,dlh;其中,dlg为mbg对应的候选待扩容子应用的调用链长度信息,所述调用链长度信息表示当其对应的候选待扩容子应用被调用时,能够触发被调用的其他子应用的最大数量。
39.s421,对dl1,dl2,...,dlg,...,dlh进行排序,得到dl
11
,dl
12
,...,dl
1g
,...,dl
1h
;其中,dl
11
>dl
12
>...>dl
1g
>...>dl
1h
。即,按优先级参数从大到小的顺序进行排列。
40.s422,确定第一数量s。
41.其中,dl
11
,dl
12
,...,dl
1s
对应的待扩容数量之和大于num
target
,dl
11
,dl
12
,...,dl
1s-1
对应的待扩容数量之和小于或等于num
target
,num
target
=num
max-(ma1+ma2+...+ma
μ
+...+ma
λ
),s<h。s423,将dl
11
,dl
12
,...,dl
1s-1
对应的候选待扩容子应用确定为目标待扩容子应用,并进入步骤s500。
42.即,本实施例通过以上方法,可以将优先级参数更高的候选待扩容子应用再次确定为目标待扩容子应用,以尽可能多的在同一次扩容处理多,增加数量更多的pod,且整体增加的数量不会超过num
max
。如此,能够保证在增加的pod数量不会超过的num
max
情况下,优先对重要程度更高的待扩容子应用进行扩容处理。
43.具体的,s的确定方法可以为:依次将dl
11
,dl
12
,...,dl
1g
,...,dl
1h
进行从前到后的逐个累加,并在每次累加后将累加结果与num
target
进行比较,若小于或等于num
target
则继续累加,若大于,则将当前的累加数量减1,已确定出s的值。
44.s430,获取第三目标列表mc=(mc1,mc2,...,mc
μ
,...,mc
λ
);其中,mc
μ
为ma
μ
对应的调整后数量,调整后数量,为向下取整标识。
45.s431,遍历ma1,ma2,...,ma
μ
,...,ma
λ
,令ma
μ
=mc
μ
,并进入步骤s500。
46.由于第一目标列表对应的待扩容子应用都为核心子应用,而为了保证系统的良好运行,需要优先对核心子应用进行扩容处理。但在若干待扩容子应用中所有核心子应用对应的待扩容数量之和大于num
max
时,若从中挑选出一些从第一目标列表中删除,则会导致被删除的核心子应用其所在的应用整体发生较大的故障,这样是不利于系统运行的。故而,在这种情况下,本技术通过降低第一目标列表中每一待扩容数量的数值,且在计算时采用下取整能够保证第三目标列表中的所有待扩容数量之和小于或等于num
max
,且不会出现数值不为整数的情况出现。
47.如此,能够保证对若干待扩容子应用中每一核心子应用都进行扩容处理,且不会出现整体增加的pod的数量大于num
max
的情况发生。
48.在一些系统内,所有的子应用的级别都是基本相同的,故而不用区分是否为核心子应用,在这种情况下,若采用前述实施例中的方法确定出目标待扩容子应用,显然是不合适的,故而本技术还提供上下述实施例以支持上述情况的目标待扩容子应用的确定。
49.在本技术的一种示例性实施例中,所述步骤s400,包括以下步骤:
50.s440,获取每一待扩容子应用的目标参数d1,d2,...,de,...,dw。其中,de为第e个待扩容子应用对应的目标参数;de=(qps1
e-qps2e)/δt;qps1e为第e个待扩容子应用在第一子时间窗口内被调用的次数,qps2e为第e个待扩容子应用在第二子时间窗口内被调用的次数,所述第一子时间窗口的结束时间为所述设定时间(即当前时间),所述第二子时间窗口的结束时间为所述第一子时间窗口的开始时间,所述第一子时间窗口和所述第二子时间窗口的长度均为δt。
51.具体的,qps1e和qps2e可以通过对包括了第e个待扩容子应用的应用所对应的调用端口进行监控从而获取。第一子时间窗口和第二子时间窗口的长度可以根据需求进行设置,本实施例中,二者的长度为1分钟。
52.(qps1
e-qps2e)/δt可以理解为,在以待扩容子应用被调用的次数为纵轴,以时间为横轴的坐标系中。第一子时间窗口所对应的斜率,能够表示出第e个待扩容子应用被调用
的次数的增长速率,这个值越大,则能够表明其更需要进行扩容处理。
53.s441,遍历num1,num2,...,nume,...,numw,令nume=num
max
*de/(d1+d2+...+de+...,dw)。
54.s442,将每一待扩容子应用确定为目标待扩容子应用。
55.本实施例中,将将每一待扩容子应用均确定为目标待扩容子应用,并且,通过令nume=de/(d1+d2+...+de+...,dw)调整每一待扩容子应用对应的待扩容数量。使得调整后的待扩容数量之和等于num
max
。如此,能够保证整体增加的pod数量不大于num
max
的情况下,为每一待扩容子应用都进行扩容处理,且能够为被调用的次数增长速率更快的待扩容子应用增加数量更多的pod,以保证系统能够更加稳定的运行。
56.在本技术的一种示例性实施例中,所述步骤s100,包括以下步骤:
57.s110,获取目标应用在目标时间窗口内的调用信息向量n=(n1,n2,...,ni,...,n
x
),i=1,2,...,x;其中,所述目标时间窗口包括x个子时间窗口,每一所述子时间窗口的长度相同,第x个子时间窗口的结束时间为当前时间,即目标事件窗口的结束时间也为当前时间。目标时间窗口的长度等于所有子时间窗口的长度之和,步长为一个子时间窗口的长度。具体的,本实施例中,x=4-8,优选的,x=4。每一子时间窗口的长度为1-5分钟,优选的,每一子时间窗口的长度为1分钟。本实施例中,目标时间窗口每走一步,即会获取一次新的调用信息向量。目标应用可以为若干应用中的任一个。
58.ni为在第i个子时间窗口内所述目标应用的调用端口被调用的次数。将所述目标应用的若干子应用均确定为目标子应用。当所述目标应用的调用端口被调用一次,能够触发至少一个目标子应用被调用。即当调用端口接收到一个调用请求后,目标应用内可以有多个目标子应用被调用。
59.可以理解的是,本实施例中,第x个子时间窗口即为前述实施例中的当前子时间窗口,第x-1个窗口即为第一对比子时间窗口。本处做区别名称,仅为方便理解,本领域技术人员理应能够通过本说明进行充分理解。
60.s120,获取每一目标子应用的调用系数q1,q2,...,q
p
,...,qz,p=1,2,...,z;q
p
为第p个目标子应用的调用系数,z为所述目标应用的目标子应用的数量,所述调用系数表示所述目标应用的调用端口被调用一次时,对应的目标子应用被调用的概率。
61.具体的,每一目标子应用的调用系数,可以通过目标应用预设的调用关系图进行确定。调用关系图中包含了至少一个调用链,如图2中所示,“目标子应用1-目标子应用4-目标子应用9”就是一个调用链。调用链关系图中,每一线段具有对应的线段参数,线段参数标识其对应的线段的左侧的目标子应用/调用端口被调用时,线段右侧的目标子应用被调用的概率(注,这个概率不是前文中的调用系数)。而每一目标子应用的调用系数需要通过其所在调用链,以及调用链中,位于其左侧的所有线段对应的线段参数进行确定。如在调用链“目标子应用1-目标子应用4-目标子应用9”中,目标子应用1的调用系数为0.3(即当调用端口被调用1次时,目标子应用1有30%的概率被调用)。目标子应用4的调用系数为0.3*0.6=0.18(即当调用端口被调用1次时,目标子应用4有30%的概率被调用)。
62.调用关系图中,每一线段对应的线段参数可以通过对目标应用的历史调用请求的数据进行统计后获得。在图2中,仅标注出部分线段的线段参数,其余未标注的仅是作出了隐去处理,并不代表其没有对应的线段参数。
63.由于本实施例中,当调用端口接收到一个调用请求后,目标应用内可以有多个目标子应用被调用,故而q1+q2+...+q
p
+...+qz≥1。
64.s130,根据n和q1,q2,...,q
p
,...,qz,确定调用数据表g;g中包括z行数据,g中的第p行数据为(g
p,1
,g
p,2
,...,g
p,i
,...,g
p,x
),g
p,i
=q
p
*ni;g
p,i
为第p个目标子应用在第i个子时间窗口内被调用的次数。可以理解的是g的尺寸为x(列数)*z(行数)。
65.s141,根据g,确定增长率信息表m;m中包括z行数据,m中的第p行数据为(m
p,1
,m
p,2
,...,m
p,j
,...,m
p,y
),m
p,j
=(g
p,j+1-g
p,j
)/g
p,j
,j=1,2,...,y,y=x-1;m
p,j
为第p个目标子应用在第j+1个子时间窗口对应的调用增长率;
66.s142,依次遍历m的每一行数据,若m
p,1
,m
p,2
,...,m
p,j
,...,m
p,y
均大于f1(g
p,x
),则将第p行数据对应的目标子应用确定为待扩容子应用;其中,f1()为预设的增长率阈值确定函数。
67.具体的,本实施例中,f1(g
p,x
)符合以下条件:
68.若t0≤g
p,x
<t1,则f1(g
p,x
)=k1;
69.若t1≤g
p,x
<t2,则f1(g
p,x
)=k2;
70.若t2≤g
p,x
<t3,则f1(g
p,x
)=k2;
71.若t3≤g
p,x
<t4,则f1(g
p,x
)=k3;
72.若t4≤g
p,x
<t5,则f1(g
p,x
)=k3;
73.若t5≤g
p,x
,则f1(g
p,x
)=k4;
74.其中,t0,t1,...,t5均为预设阈值,且t1<t2<...<t5;k1>k2>k3>k4。t1-t0<t2-t1=t3-t2<t4-t3<t5-t4。
75.本实施例中,通过设置t0,t1,...,t5这6个预设阈值,可以实现,对当前的调用次数保持在不同的区间的子应用,其进行待扩容子应用判断时,使用的增长率阈值不同。使得确定待扩容子应用的确定更加准确,且可以适应于不同类型的子应用。
76.而通过将6个预设阈值设置为t1-t0<t2-t1=t3-t2<t4-t3<t5-t4其每个区间确定会更加合理,且通过实验数据可以表明,这样设置的区间确定出的待扩容子应用更加准确。
77.具体的,本方法为了确定出所有应用中的待扩容子应用,可以依次将每一应用确定为目标应用并进行上述的步骤,也可以通过并行的形式,同时将至少部分应用确定为目标应用并分别进行上述的步骤。
78.本实施例提供的一种应用控制方法,会获取目标应用的调用端口在每一子时间窗口内被调用的次数。并根据每一目标子应用的调用系数(可以是预先设置好的),确定出调用数据表g。调用数据表中,每一行对应的一个目标子应用,一行的数据内包括了由该目标子应用的调用系数和每一子时间窗口内目标应用的调用端口被调用的次数直接确定出的,该目标子应用在每一子时间窗口内被调用的次数。并确定出每一目标子应用从第2个子时间窗口到第x个子时间窗口分别对应的调用增长率。并根据m中每一行的数据,确定出每行对应的目标子应用是否需要进行扩容(即确定出待扩容子应用)。
79.综上,本实施例提供的应用控制方法,能够直接根据调用系数快速确定出每一目标子应用在不同的子时间窗口内预测的被调用的次数。这样,不需要对目标应用的调用端口接收到的每一调用请求进行分析,即可快速确定出每一目标子应用在不同的子时间窗口
内预测的被调用的次数。如此,可以再根据预测出的每一目标子应用被调用的情况,确定出待扩容子应用。使得待扩容子应用的确定过程的计算量减少,节省系统资源,且能够提高实时性。
80.同时,本实施例中,在确定待扩容子应用时,没有直接使用当前时间对应的子时间窗口内对应的被调用的次数直接确定。而是在m中,同一行的数据均大于f1(g
p,x
)时,才会将该行对应的目标子应用确定为待扩容子应用。如此,可以避免只是瞬时或短时间内的调用激增的情况而发生的不必要的扩容出现,使得待扩容子应用的确定更加合理,减少不必要的系统资源浪费。而在实际实施时,工作人员也能够通过控制目标时间窗口内子时间窗口的数量和每一子时间窗口的长度,快速灵活的调整待扩容子应用的确定规则。
81.在本技术的一种示例性实施例中,在所述步骤s130之后,所述控制服务器还用于执行以下步骤:
82.s151,获取目标应用在历史时间窗口内的历史调用信息向量l=(l1,l2,...,lm,...,ln),m=1,2,...,n,n>x。其中,所述历史时间窗口包括n个历史子时间窗口,每一所述历史子时间窗口的长度相同,且均等于所述子时间窗口的长度,第n个历史子时间窗口的结束时间为当前时间,lm为在第m个历史子时间窗口内所述目标应用的调用端口被调用的次数。具体的,n等于2到5倍的x。
83.s152,根据l和q1,q2,...,q
p
,...,qz,确定历史调用数据表v;v中包括z行数据,v中的第p行数据为(v
p,1
,v
p,2
,...,v
p,m
,...,v
p,n
),v
p,m
=q
p
*lm;v
p,m
为第p个目标子应用在第m个历史子时间窗口内被调用的次数;
84.s153,获取v中每一行数据内的最大值max1,max2,...,max
p
,...,maxz;其中,max
p
为v中第p行数据内的最大值;
85.s154,依次遍历g
1,x
,g
2,x
,...,g
p,x
,...g
z,x
,若g
p,x
>max
p
,则将g
p,x
对应的目标子应用确定为待扩容子应用。
86.本实施例中,通过max1,max2,...,max
p
,...,maxz能够反应出,每一目标子应用在相同的历史事件中一个子时间窗口内被调用的最大次数,这个数据能够表示出,对应的目标子应用在正常情况下,最大的调用次数是什么样的,而若g
p,x
>max
p
,则表明g
p,x
对应的目标子应用在当前时间对应的子时间窗口内被调用的次数过大,故而需要被确定为待扩容子应用。
87.本实施例中,步骤s151-步骤s154可以与步骤s141-步骤s142并行运行,以通过不同的方式确定出待扩容子应用。使得在确定出的待扩容子应用更加准确和全面。
88.在本技术的一种示例性实施例中,在所述步骤s130之后,所述控制服务器还用于执行以下步骤:
89.s161,获取每一目标子应用在当前时间所在的目标时段对应的平均调用数量u1,u2,...,u
p
,...,uz。其中,u
p
为第p个目标子应用在当前时间所在的目标时段对应的平均调用数量。本实施例中,目标时段可以为24个,每个目标时段的长度可以为1小时,或目标时段可以为1440个,每个目标时段的长度可以为1分钟。
90.其中,每一目标时段对应的平均调用数量可以是第二数据源从第一数据源获取目标应用多日(当前时间之前的多日)在每个目标时段内接收到的调用请求,并根据调用请求中的子应用标识,统计出每日每个目标子应用实际被调用的次数。再将依次将每一目标子
应用在每一日对应的多个目标时段中,每个目标时段对应的实际被调用次数的平均值(即平均调用数量)。可见,和前述方案中的“被调用的次数”相比,平均调用数量不是预测值而是实际值。但由于这个实际值的所需的计算量较大,故而只进行历史时间内的统计,而不是实时进行的。故而,第一数据源可以理解为一个实时数据源,第二数据源可以理解为一个离线数据源。第一数据源能够保证实时向控制服务器发送调用信息向量,以保证快速的确定出待扩容子应用。
91.具体的,本实施例中,应用控制系统还包括第一数据源和第二数据源,所述控制服务器与第一数据源和第二数据源连接,所述第一数据源同时和所述第二数据源以及所述应用运行服务器连接。其中,第一数据源可以为cat数据源,第二数据源可以为prometheus数据源。
92.所述第一数据源用于监控所述应用运行服务器内每一所述应用的调用端口被调用的次数,以及每一调用端口每次被调用时接收到的调用请求。
93.所述调用请求中包括本次对对应的调用端口的调用会调用的所有子应用的子应用标识。即,若本次调用会触发调用链“目标子应用1-目标子应用4-目标子应用9”上每一目标子应用,则该调用请求中会包括目标子应用1、目标子应用4和目标子应用9的子应用标识。
94.所述第二数据源用于根据所述第一数据源内的历史数据,确定每一子应用在每一目标时段对应的平均调用数量。所述目标时段为多个,且在时间顺序上首位相连,多个所述目标时段的长度和为24小时。
95.s162,依次遍历g
1,x
,g
2,x
,...,g
p,x
,...g
z,x
,若g
p,x
>f2(g
p,x
)*u
p
,则将g
p,x
对应的目标子应用确定为待扩容子应用,并进入步骤s700;其中,f2()为预设的调用量倍数确定函数。
96.f2(g
p,x
)符合以下条件:
97.若t0≤g
p,x
<t1,则f2(g
p,x
)=b1;
98.若t1≤g
p,x
<t2,则f2(g
p,x
)=b2;
99.若t2≤g
p,x
<t3,则f2(g
p,x
)=b3;
100.若t3≤g
p,x
<t4,则f2(g
p,x
)=b4;
101.若t4≤g
p,x
<t5,则f2(g
p,x
)=b4;
102.若t5≤g
p,x
,则f1(g
p,x
)=b4;
103.其中,b1>b2>b3>b4。
104.本实施例中,在进行待扩容子应用的确定时,可以通过第二数据源,快速的获取在历史时间内,每个目标子应用在当前时间对应的目标时段内所对应的平均调用数量(由于是第二数据源提前离线确定出的,故而可以快速的获取)。若g
p,x
>f2(g
p,x
)*u
p
,则可以确定g
p,x
对应的目标子应用在当前时间对应的子时间窗口内被调用的次数过多,需要进行扩容处理。
105.同时,通过f2(),可以实现,对当前的调用次数保持在不同的区间的子应用,其进行待扩容子应用判断时,使用的调用量倍数不同。使得确定待扩容子应用的确定更加准确,且可以适应于不同类型的子应用。
106.进一步的,f1()和f2()使用的6个预设阈值完全相同,使得两个函数共用一套参数
配置,可以节省系统计算压力,使得方法设置更加合理。
107.具体的,本实施例中,t0=50,t1=100,t2=200,t3=300,t4=500,t5=1000。k1=0.8,k2=0.4,k3=0.3,k4=0.2;b1=5,b2=2,b3=1.8,b4=1.4。通过实验数据可以表明,这样上述数值的设定可以使得确定出的待扩容子应用更加准确。
108.在本技术的一种示例性是实施例中,在确定出待扩容子应用后,还可以通过执行下述步骤确定出每一待扩容子应用对应的待扩容数量(即需要增加的对应的pod的数量):
109.从所述应用运行服务器内的若干子应用中,确定出待扩容子应用。所述待扩容子应用为需要增加其对应的pod的数量的子应用。待扩容子应用可以为多个。在后续的步骤中,可以是针对任一个待扩容子应用,也可以是依次对每一待扩容子应用进行后述的处理。
110.获取所述待扩容子应用对应的调用增长量rm=qps1-qps2。其中,qps1为所述待扩容子应用在当前子时间窗口内被调用的次数,qps2为所述待扩容子应用在第一对比子时间窗口内被调用的次数;所述当前子时间窗口的结束时间为当前时间,所述第一对比子时间窗口的结束时间为所述当前子时间窗口的开始时间,所述当前子时间窗口和所述第一对比子时间窗口的长度相同。具体的,qps1和qps2可以通过对包括了待扩容子应用的应用所对应的调用端口进行监控从而获取。当前子时间窗口和第一对比子时间窗口的长度可以根据需求进行设置,本实施例中,二者的长度为1分钟。
111.获取待扩容数量num1=rm/qps
t
+j1+r(rm/qps2);其中,qps
t
为所述待扩容子应用对应的pod的最大调用次数承载上限,j1为预设参数值,rm/qps2为当前子时间窗口内所述待扩容子应用对应的调用增长率,r()为预设的数量确定函数。
112.具体的,通过rm/qps
t
确定出的数量,能够满足当前子时间窗口的被调用需求。而增加j1,则是进行一个可控的扩容数量管理,为待扩容子应用留出足够的缓冲空间。j1及具体数值可以根据实际需求进行设置,不同的待扩容子应用对应的预设参数值可以不同。
113.同时,当rm/qps2大于预设判断阈值yg时,r(rm/qps2)为正值,否则r(rm/qps2)为负值。即在调用增长率较低的情况下,可以通过r(rm/qps2)降低num1的最终值,以避免出现扩容数量过多导致造成系统资源浪费的情况出现。而在rm/qps2较高时,可以表示待扩容子应用后续大概率会出现被调用的次数继续增长的情况出现,故而通过r(rm/qps2)增加num1的最终值,可以避免频繁扩容的情况出现。本实施例中,yg=0.2-0.5。优选的,yg=0.3。
114.向所述应用运行服务器发送扩容指令,以使所述应用运行服务器为所述待扩容子应用增加num1个对应的pod。
115.本实施例提供的应用控制系统,控制服务器在确定出待扩容子应用后,会根据根据当前的带待扩容子应用对应的pod的最大调用次数承载上限qps
t
、当前子时间窗口对应的调用增长量rm、预设参数值j1、确定出基础的扩容数量。同时也会根据当前子时间窗口对应的调用增长率rm/qps2和预设的数量确定函数,确定出补充扩容数量。以此,能够准确的确定出更加合理的待扩容数量num1,并控制应用运行服务器为待扩容子应用增加num1个对应的pod。使得扩容数量更加准确,降低出现扩容处理过多导致出现冗余pod占用系统资源,或扩容数量过少无法有效处理调用请求的情况。
116.同一个子应用或待扩容子应用在一定时间内被频繁的进行扩容,会导致该子应用或待扩容子应用发生运行波动的情况出现,同时也会增加系统整体的运行压力。
117.为解决上述问题,在本技术的一种示例性实施例中,在所述步骤s400之后,所述控
制服务器还用于执行以下步骤:
118.为所述待扩容子应用添加设定标识。被添加了设定标识的待扩容子应用无法响应于所述控制服务器的扩容指令增加其对应的pod的数量;所述设定标识的有效时长为time。
119.即,在设定标识处于有效期内的时间里,带有设定标识的待扩容子应用无法被控制服务器根据上述步骤进行自动扩容。避免出现对同一个子应用频繁进行扩容的情况出现。其中,time可以为预设的固定数值,如3分钟、5分钟、10分钟等。
120.但由于每一子应用的在不同情况下的,其被调用的次数的波动或增长情况不同,若仅是将time设置为固定数值,虽然能够降低对同一个子应用频繁进行扩容的情况出现,但若在一个待扩容子应用被扩容后,若其对应的被调用的次数持续快速的增长,但由于time过大,而不能及时的进行自动扩容,会导致其调用失败了剧增。
121.故而,在本技术的一种示例性实施例中,time符合如下条件:
122.time=time0*(1-(rm-(qps2-qps3))/δt);
123.其中,time0为预设的基础时间参数,qps3为所述待扩容子应用在第二对比子时间窗口内被调用的次数,所述第二对比子时间窗口的结束时间为所述第一对比子时间窗口的开始时间,所述第一对比子时间窗口和所述第二对比子时间窗口的长度相同,δt为所述当前时间窗口的长度。1>rm-(qps2-qps3))/δt>0。
124.具体的,rm-(qps2-qps3))/δt可以理解为,在以待扩容子应用被调用的次数为纵轴,以时间为横轴的坐标系中。当前子时间窗口和第一对比子时间窗口所对应的斜率的差值。若rm-(qps2-qps3))/δt大于0,则表示待扩容子应用被调用的次数的斜率在增值,此时可以认为待扩容子应用在后续的时间大概率会继续不断的增长,故而此时通过time0*(1-(rm-(qps2-qps3))/δt)能够降低time的最终值,使得待扩容子应用即使被添加了设定标识,也能够及时的恢复能够被自动扩容的状态。反之则能够增加time的最终值,避免被频繁扩容的情况出现。
125.在本技术的一种示例性实施例中,所述应用控制服务器还用于执行以下步骤:
126.响应于接收到用户输入的针对于任一具有设定标识的待扩容子应用的主动扩容指令,将该待扩容子应用确定为第一待扩容子应用,并增加第一待扩容子应用对应的pod的数量。即,在接收到用户主动输入的主动扩容指令后,即使这个待扩容子应用带有设定标识,也会为其进行扩容,以保证自动扩容无法有效进行扩容时,能够人为的介入控制。
127.将所述第一待扩容子应用对应的设定标识的有效时长设置为time1。
128.将第一待扩容子应用的设定标识的有效时长更新为time1,是由于人工介入进行扩容后,往往是增加了较为合理的扩容数量,故而更新为time1,能够限制第一待扩容子应用在time1的时间内不会被自动扩容,降低了系统的运行压力。
129.同时,本实施例中,time1符合以下条件;
130.time1=time0*num2/num3;
131.其中,num2为在执行完主动扩容指令后,所述第一待扩容子应用对应的pod的数量;num3为在执行主动扩容指令前,所述第一待扩容子应用对应的pod的数量。
132.如此设置,可以使得自动确定出一个合理的有效时长,降低由于time1过大,而不能及时的进行自动扩容,导致其调用失败了剧增的情况发生。
133.此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要
求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
134.通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
135.在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
136.所属技术领域的技术人员能够理解,本技术的各个方面可以实现为系统、方法或程序产品。因此,本技术的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
137.根据本技术的这种实施方式的电子设备。电子设备仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
138.电子设备以通用计算设备的形式表现。电子设备的组件可以包括但不限于:上述至少一个处理器、上述至少一个储存器、连接不同系统组件(包括储存器和处理器)的总线。
139.其中,所述储存器存储有程序代码,所述程序代码可以被所述处理器执行,使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本技术各种示例性实施方式的步骤。
140.储存器可以包括易失性储存器形式的可读介质,例如随机存取储存器(ram)和/或高速缓存储存器,还可以进一步包括只读储存器(rom)。
141.储存器还可以包括具有一组(至少一个)程序模块的程序/实用工具,这样的程序模块包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
142.总线可以为表示几类总线结构中的一种或多种,包括储存器总线或者储存器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
143.电子设备也可以与一个或多个外部设备(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备交互的设备通信,和/或与使得该电子设备能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口进行。并且,电子设备还可以通过网络适配器与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器通过总线与电子设备的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
144.通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开
实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
145.在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本技术的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本技术各种示例性实施方式的步骤。
146.所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
147.计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
148.可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
149.可以以一种或多种程序设计语言的任意组合来编写用于执行本技术操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
150.此外,上述附图仅是根据本技术示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
151.应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
152.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应
涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1