orm流计算框架可以包括多个处理组件,所述多个处理组件可以设置有多个处理并发线程。图1是一示例性实施方式提供的用于Storm流计算框架的方法的流程图。如图1所示,所述方法包括以下步骤。
[0035]在步骤S11中,分别统计多个处理组件中的每个处理组件在多个时间段中的每个时间段内的工作量,得到工作量历史规律。
[0036]其中,Storm流计算框架中还可以包括多个输入源组件,处理组件可以接收输入源组件发送的消息,并对接收的消息进行处理。因此,处理组件的工作量可以包括接收的消息数量和/或处理消息所花费的时间。接收的消息数量越多,则表示工作量越多,接收的消息数量越少,则表示工作量越少。处理消息所花费的时间越长,则表示工作量越多,处理消息所花费的时间越短,则表示工作量越少。也可以对两个因素进行综合考虑。例如,对消息数量和花费时间分别赋予一定的权重,将二者加权求和得到工作量。
[0037]另外,多个时间段可以为一天中的多个时间段。例如,可以把一天中的每一个小时作为一个时间段来统计。这样,经过一定历史时间(例如,10天)的统计,可以得到能够反映用户在所统计的历史时间中使用习惯的处理组件的工作量历史规律。
[0038]图2是一示例性实施方式提供的处理组件的工作量历史规律的曲线图。如图2所示,所述多个处理组件包括第一处理组件和第二处理组件。该曲线图中统计了第一处理组件和第二处理组件在从6:00到18:00中每一个小时内的工作量(接收的消息数量)。从曲线图可以看出,在12:00到13:00的时间段内,第一处理组件统计的工作量达到1000,而第二处理组件统计的工作量不足100。另外,在17:00到18:00的时间段内,第一处理组件统计的工作量不足100,而第二处理组件统计的工作量超过了 1400。经过例如10天的统计,每天的规律都与图2中相似,因此,图2中的曲线能够代表处理组件的工作量历史规律。处理组件的工作量历史规律反映出用户在一天中的使用习惯。
[0039]根据相关技术,多个处理并发线程数在第一处理组件和第二处理组件之间的的数量配比是固定不变的。而固定的配比在具有图2所示的历史规律的情况下必然会在某一些时间段内,处理并发线程的工作量差异较大。也就是,一些线程特别繁忙,而另一些线程特别空闲。以下详细描述如何根据所得到的历史工作规律来调整处理并发线程的数量配比。
[0040]在步骤S12中,根据工作量历史规律来调整每个时间段内多个处理并发线程在多个处理组件之间的数量配比,使得在每个时间段内,多个处理并发线程中的任意两个处理并发线程的工作量的比率处于预定的阈值范围内。
[0041]也就是,在确定每个处理组件的工作量历史规律之后,再考虑到每个处理组件中已经设置的处理并发线程数,就可以确定每个处理并发线程的繁忙程度(工作量)的历史规律。根据这些历史规律,在之后进行的计算当中,到某一时间段就根据该时间段的历史工作量规律来重新设置该时间段内多个处理并发线程在多个处理组件之间的数量配比。该重新设置的数量配比能够使得任意两个处理并发线程的工作量的比率处于预定的阈值范围内。
[0042]其中,预定的阈值范围可以根据对集群资源利用率的要求来设置,任意两个处理并发线程的工作量的比率为1是最理想状况(即工作量相等),比率越大集群资源利用率越小。
[0043]通过上述技术方案,能够基于统计的工作量历史规律,动态地调整多个处理并发线程在多个处理组件之间的数量配比,以使处理组件的处理并发线程以更优的拓扑进行分布,从而能够充分地利用集群的计算资源,提高执行效率。
[0044]具体地,图3是另一示例性实施方式提供的用于Storm流计算框架的方法的流程图。如图3所示,在所述多个处理组件包括第一处理组件和第二处理组件的情况下,步骤S12可以包括步骤S121。在步骤S121中,根据每个时间段内第一平均工作量与第二平均工作量的比率来调整对应的时间段内多个处理并发线程在第一处理组件与第二处理组件之间的数量配比。其中,第一平均工作量为第一处理组件中的处理并发线程的平均工作量,第二平均工作量为第二处理组件中的处理并发线程的平均工作量。
[0045]其中,第一平均工作量反映了第一处理组件中的处理并发线程的繁忙程度,第二平均工作量反映了第二处理组件中的处理并发线程的繁忙程度。在第一平均工作量和第二平均工作量相同的情况下,所有处理并发线程的繁忙程度相同(工作量相同),无需调整。也就是,第一平均工作量和第二平均工作量的比率为1时,为集群资源能够有效利用的最理想状况。实际当中,可以在第一平均工作量和第二平均工作量差异较大的情况下进行调整。
[0046]可选地,步骤S121可以包括:在多个时间段中的一个时间段内第一平均工作量与第二平均工作量的比率大于预定的比率阈值的情况下,在第一处理组件中增加预定数量的处理并发线程,并在第二处理组件中减少所述预定数量的处理并发线程。
[0047]也就是,可以在第一平均工作量与第二平均工作量的比率小于或等于一个预定的阈值(例如,1.5)时不作调整,大于这个预定的阈值时,认为处理并发线程工作量的差异较大,再进行调整。
[0048]可以理解的是,上述预定的阈值能够使得:第一平均工作量与第二平均工作量的比率在小于或等于该预定的阈值的情况下,任意两个处理并发线程的工作量的比率处于预定的阈值范围内(步骤S12中)。
[0049]举例来说,一时间段内第一处理组件的工作量和第二处理组件的工作量分别是1000和400,而第一处理组件有2个处理并发线程,第二处理组件有5个处理并发线程。此时,第一平均工作量Q1为500 (1000/2),第二平均工作量Q2为80 (400/5)。第一平均工作量和第二平均工作量的比率Q1/Q2为6.25(500/80),超过了预定的阈值(例如为1.50),则可以将第一处理组件的处理并发线程数增加一个(预定数量),将第二处理组件的处理并发线程数减少一个(预定数量)。此时,第一处理组件有3个处理并发线程,第二处理组件有4个处理并发线程。调整之后,可以再次判断Q1/Q2是否仍然大于预定的阈值,直到Q1/Q2小于或等于所述预定的阈值为止。图4是该示例性实施方式提供的用于Storm流计算框架的方法的流程图。
[0050]图5是又一示例性实施方式提供的用于Storm流计算框架的方法的流程图。如图5所示,在所述多个处理组件包括第一处理组件和第二处理组件的情况下,步骤S12包括步骤S122。在步骤S122中,根据每个时间段内第一处理组件的工作量与第二处理组件的工作量的比率来调整对应的时间段内多个处理并发线程在第一处理组件与第二处理组件之间的数量配比。
[0051]其中,第一处理组件的工作量与第二处理组件的工作量的比率反映了第一处理组件的处理并发线程数与第二处理组件的处理并发线程数的理想的比率。处理并发线程在第一处理组件和第二处理组件之间的数量配比越接近于第一处理组件的工作量与第二处理组件的工作量的比率,则资源利用率越高。在第一处理组件与第二处理组件的工作量的比率与处理并发线程数的比率相等的情况下,多个处理并发线程的工作量相等,繁忙程度相同,资源利用率最高,这是理想的状况。在实际当中,多个处理并发线程的工作量不一定能够完全相等,只能使多个处理并发线程的工作量尽可能地相当。
[0052]可选地,步骤S122可以包括:在多个时间段中的一个时间段内工作量比率与处理并发线程数比率的比率大于预定的比率阈值的情况下,在第一处理组件中增加预定数量的处理并发线程,并在第二处理组件中减少所述预定数量的处理并发线程。其中,工作量比率为第一处理组件的工作量与第二处理组件的工作量的比率,处理并发线程数比率为第一处理组件的处理并发线程数与第二处理组件的处理并发线程数的比率。
[0053]也就是,可以在第一处理组件与第二处理组件的工作量的比率和处理并发线程数的比率之间的比率小于或等于一个预定的阈值(例如,1.5)时不作调整,大于这个预定的阈值时,认为处理并发线程工作量的差异较大,再进行调整。
[0054]可以理解的是,上述预