一种数据的处理方法和物理机与流程

文档序号:13909735阅读:191来源:国知局
一种数据的处理方法和物理机与流程

本发明涉及计算机技术领域,尤其涉及一种数据的处理方法和物理机。



背景技术:

近年来,一种新的数据密集型应用已经得到了广泛的认同,这类应用的特征是:数据不宜用持久稳定关系建模,而适宜用瞬态数据流建模。这些应用的实例包括金融服务、网络(英文名称:web)应用、电信数据管理、生产制造、传感检测等等。这些数据以大量、快速、时变的数据流持续到达,由此产生了一些基础性的新的研究问题,例如产生了数据流计算的研究。

数据流计算遵循如下的原则:数据的价值随着时间的流逝而降低,所以事件出现后必须尽快地对它们进行处理,最好数据出现时便立刻对其进行处理,发生一个事件进行一次处理,而不是缓存起来成一批后再进行处理。

数据流计算是基于流式数据处理模型进行的,数据进入一级级的算子进行处理后再输出。在实际使用过程中,流系统中的数据流动很不均匀,具有波动性,不够平缓均匀。如图1-a所示,为数据流的流速不均匀状态示意图,源头从外界接收数据的流速不均匀,以及中间算子产生数据的流速不均匀。接下来对上述两个情况进行详细说明,一种是因为进入流系统的原始数据流本身流速就不均匀,某一段时间可能速度很快,但是到了另一段时间速度又很慢。例如,部署了一套流系统用于检测用户打电话上网的流量使用情况,在夜晚忙时阶段流量要远远大于凌晨时段,春节期间的流量远大于平时的流量,这是人的活动规律决定的,不以人的意志为转移的。另一种原因是,某些算子处理的逻辑决定的。例如,某一个算子专门用于统计每5分钟每个用户的流量使用情况,在5分钟的时间点到来时,会有大量的数据输出,而在中间的时间节点没什么输出,这是由该算子的处理逻辑决定的。在以上两种原因的作用下,在流量大的时候,数据流的流速可能超过了流系统的最大处理能力,这时如果不采取些措施的话,就会导致数据的丢失,影响结果的准确性。如图1-b所示,为实际流速的变化曲线示意图,从一段长时间的维度来看的话,数据流的平均流速是不超过流系统的最大处理能力的。因此在这样的前提下,需要保证某些时刻的大流量数据不丢失,这样就引出了流速控制问题。

流控问题是流技术中一个很重要的技术问题,因为几乎所有的流系统都会遇到上述的短时大流量问题,也就是数据尖锋,如果不采取一些流控措施的话,这段时间必然会发生数据的丢失,在一些数据可靠性要求高的场合,数据的丢失对可靠性的影响不可忽视,例如金融领域,是完全不能接受的。

请参阅图2所示,为现有技术中流处理系统采取的一种流控方案示意图,每一个流量管理单元(英文全称:streammanager,英文简称:sm)管理有数据源算子(图中以spout示例说明)和数据处理算子(图中以bolt示例说明),sm对它管辖下的数据处理算子具有监控的能力,当某一个bolt发生拥塞时,sm就会感知到,这时它就会发送停止消息通知其他的sm,当其他的sm收到该消息时,就会给本地的数据源算子施加压力,从而使得数据源算子停止发送数据。当拥塞的bolt不再拥塞时,该bolt所在的sm就会给其他的sm发送恢复消息,当其他的sm收到这个恢复消息后,就会通知本地的spout恢复数据的发送。

在上述流控方案中,spout是否拥塞需要sm感知,然后通知其他的sm采取动作,这必然会存在一定的延迟,而在延迟的时间段内已经进入流系统的数据就极有可能发生丢失,从而影响流处理系统中的数据可靠性



技术实现要素:

本发明实施例提供了一种数据的处理方法和物理机,用于执行器在对数据流的数据进行处理的过程中,减少数据的丢失。

为解决上述技术问题,本发明实施例提供以下技术方案:

第一方面,本发明实施例提供一种数据的处理方法,所述方法应用于流系统中的物理机,所述物理机包括第一执行器,所述方法包括:根据所述第一执行器处理数据的历史信息,预测所述第一执行器待处理的数据流在第一时间段内的流量,从而得到所述数据流在所述第一时间段内的流量预测信息,所述历史信息包括所述第一执行器在一历史时间段内所处理的数据的流量信息,所述流量预测信息包括所述第一时间段内多个时刻的流量的预测值;在所述流量预测信息中包括超过阈值的预测值的情况下,将所述第一执行器获取数据的速率从第一速率降低到第二速率;使用所述第二速率获取所述待处理的数据流的第一数据集合。

在本发明实施例中,由于物理机可以对第一执行器即将到来的数据流根据第一执行器处理数据的历史信息进行流量预测,从而在流量预测中存在超过阈值的预测值的情况下,将第一执行器获取数据的速率从第一速率降低到第二速率,从而第一执行器可以减缓获取到数据流的速率,当数据流高峰期比较长时,也可以避免数据流过多的流入到物理机中导致的超过第一执行器的处理能力的问题,从而提高数据流处理的可靠性,避免第一执行器获取数据流时因为数据尖峰到来导致的数据丢失。

结合第一方面,在第一方面的第一种可能的实现方式中,所述方法还包括:在所述流量预测信息中包括的预测值没有超过所述阈值的情况下,保持所述第一执行器获取数据的速率为第一速率不变,使用所述第一速率获取所述待处理的数据流的第二数据集合;在所述第二数据集合大于所述第一执行器的最大数据处理门限值的情况下,将所述第二数据集合中的第一子集存储到所述第一执行器的接收缓存队列中。

在本发明实施例中,该接收缓存队列可以用于存储第二数据集合中的第一子集,第一子集指的是第二数据集合中的部分数据,通过第一执行器的接收缓存队列可以存储第一子集,从而避免第一子集在物理机内发生数据丢失。

结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述第二数据集合还包括第二子集,所述方法还包括:在所述第一执行器的接收缓存队列已满的情况下,将所述第二子集存储到所述第一执行器的外部存储器中,所述第二子集包括所述第二数据集合中未被所述第一执行器处理且未存储在所述接收缓存队列中的数据包。

在本发明实施例中,如果该接收缓存队列已满,就通过写磁盘文件的方式,将第二子集存储到外部存储器中,待到第一执行器有空闲的时候再从外部存储器中获取到第二子集,第一执行器通过接收缓存队列和外部存储器的方式,能很好地解决数据尖峰时可能造成的数据丢失,解决了由于外部数据源波动造成的数据尖峰而导致的数据丢失问题。

结合第一方面或第一方面的第一种可能或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述方法还包括:在所述第一数据集合大于所述第一执行器的最大数据处理门限值的情况下,停止获取所述待处理的数据流的数据。

在本发明实施例中,阻塞传导是通过消息通道的机制实现的,当下游计算节点处理能力跟不上,就会停止接收数据,这样上游计算节点的数据就发不过来,从而可以将阻塞传导至上游计算节点。从而能够减少进入物理机的数据量,避免因为第一执行器无法处理导致的数据丢失。

结合第一方面或第一方面的第一种可能或第二种可能的实现方式,在第一方面的第四种可能的实现方式中,所述方法还包括:对所述第一数据集合进行处理,以得到第三数据集合;将所述第三数据集合中的数据存储到所述第一执行器的发送缓存队列中;通过所述发送缓存队列向第二执行器发送所述第三数据集合中的数据,以便所述第二执行器处理所述第三数据集合中的数据,所述第二执行器为所述流系统中所述第一执行器的一个下游计算节点。

在本发明实施例中,第一执行器中通过配置发送缓存队列,可以尽可能的减少数据丢失的情况,提高数据流处理的可靠性。

第二方面,本发明实施例提供一种数据的处理方法,所述方法应用于流系统中的物理机,所述物理机包括第一执行器和队列管理器,所述方法包括:第一执行器接收来自第二执行器的第一数据集合,所述第二执行器为所述流系统中所述第一执行器的一个上游计算节点,所述第一数据集合的数据量大于所述第一执行器的第一接收缓存队列的容量,所述第一接收缓存队列的容量表示所述第一接收缓存队列能容纳的最大数据量;所述队列管理器将所述物理机的内存中的存储空间分配给所述第一接收缓存队列,以得到第二接收缓存队列;所述第一执行器将所述第一数据集合中的数据放入所述第二接收缓存队列中。

通过前述实施例对本发明的举例说明可知,第一执行器中通过配置可扩容的第一接收缓存队列,可以减少进入物理机内的数据发生丢失,提高数据处理的可靠性。

结合第二方面,在第二方面的第一种可能的实现方式中,所述方法还包括:在所述第二接收缓存队列已满的情况下,所述第一执行器停止接收所述第二执行器发送的数据。

在本发明实施例中,第一执行器可以启动反压控制策略,停止第一执行器获取数据流,即第一执行器不再接收数据流,第一执行器执行的反压控制类似于控制论中的反馈原理,就是第一执行器出现了过载,会向它的上游计算节点或者外部数据源施加作用,减少或者停止向它自己发送数据以减轻本身的负载,从而能够减少进入物理机的数据量,避免因为第一执行器无法存储数据导致的数据丢失。

结合第二方面,在第二方面的第二种可能的实现方式中,所述方法还包括:所述第一执行器对所述第一数据集合中的数据进行处理以得到第二数据集合,所述第一数据集合中的数据是所述第一执行器从所述第二接收缓存队列中获取的,所述第二数据集合的数据量大于所述第一执行器的第一发送缓存队列的容量;所述队列管理器将所述物理机的内存中的存储空间分配给所述第一发送缓存队列,以得到第二发送缓存队列;所述第一执行器将所述第二数据集合中的数据存储到所述第二发送缓存队列。

在本发明实施例中,第一执行器获取到队列管理器对第一发送缓存队列的容量进行扩充从而得到第二发送缓存队列的情况下,第一执行器可以将第二数据集合中的数据放入第二发送缓存队列中。因此本发明实施例中可以通过对第一执行器的第一发送缓存队列的容量扩充,使得进入到第一执行器所在物理机的数据能够被全部存储下来,避免进入该物理机的数据发生丢失。

结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述方法还包括:在所述第二发送缓存队列已满的情况下,所述第一执行器停止处理所述第二接收缓存队列中的数据。

在本发明实施例中,第一执行器可以启动反压控制策略,停止第一执行器处理第二接收缓存队列中的数据,停止向第二发送缓存队列存储数据以减轻本身的负载,避免因为第一执行器无法存储数据导致的数据丢失。

结合第二方面或第二方面的第一种可能或第二种可能或第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述方法还包括:在所述第二接收缓存队列中空闲的存储空间超过预置的第一阈值的情况下,所述队列管理器将所述第二接收缓存队列中空闲的部分或全部存储间释放回所述内存。

结合第二方面的第二种可能或第三种可能的实现方式,在第二方面的第五种可能的实现方式中,所述方法还包括:在所述第二发送缓存队列中空闲队列的存储空间超过预置的第二阈值的情况下,所述队列管理执行器将所述第二发送缓存队列中空闲的部分或全部存储空间释放回所述内存。

在本发明实施例中,接收缓存队列和发送缓存队列的存储容量都可以根据实际需要来调整,从而就能最大限度地存储数据流,能在保证数据流不丢失的前提下,最大限度地挖掘流系统的处理能力,当接收缓存队列和发送缓存队列都有空余的存储空间时,若空余存储空间超过某一阈值,则可以自动缩小接收缓存队列和发送缓存队列的存储空间,从而减少对内存的占用。

第三方面,本发明实施例还提供一种物理机,所述物理机应用于流系统中,所述物理机包括第一执行器,所述物理机包括:预测模块,用于根据所述第一执行器处理数据的历史信息,预测所述第一执行器待处理的数据流在第一时间段内的流量,从而得到所述数据流在所述第一时间段内的流量预测信息,所述历史信息包括所述第一执行器在一历史时间段内所处理的数据的流量信息,所述流量预测信息包括所述第一时间段内多个时刻的流量的预测值;速率控制模块,用于在所述流量预测信息中包括超过阈值的预测值的情况下,将所述第一执行器获取数据的速率从第一速率降低到第二速率;数据接收模块,用于使用所述第二速率获取所述待处理的数据流的第一数据集合。

在本发明实施例中,由于物理机可以对第一执行器即将到来的数据流根据第一执行器处理数据的历史信息进行流量预测,从而在流量预测中存在超过阈值的预测值的情况下,将第一执行器获取数据的速率从第一速率降低到第二速率,从而第一执行器可以减缓获取到数据流的速率,当数据流高峰期比较长时,也可以避免数据流过多的流入到物理机中导致的超过第一执行器的处理能力的问题,从而提高数据流处理的可靠性,避免第一执行器获取数据流时因为数据尖峰到来导致的数据丢失。

在本发明的第三方面中,物理机的组成模块还可以执行前述第一方面以及各种可能的实现方式中所描述的步骤,详见前述对第一方面以及各种可能的实现方式中的说明。

第四方面,本发明实施例还提供一种物理机,所述物理机应用于流系统中,所述物理机包括第一执行器和队列管理器,其中,所述第一执行器,用于接收来自第二执行器的第一数据集合,所述第二执行器为所述流系统中所述第一执行器的一个上游计算节点,所述第一数据集合的数据量大于所述第一执行器的第一接收缓存队列的容量,所述第一接收缓存队列的容量表示所述第一接收缓存队列能容纳的最大数据量;所述队列管理器,用于将所述物理机的内存中的存储空间分配给所述第一接收缓存队列,以得到第二接收缓存队列;所述第一执行器,还用于将所述第一数据集合中的数据放入所述第二接收缓存队列中。

通过前述实施例对本发明的举例说明可知,第一执行器中通过配置可扩容的第一接收缓存队列,可以减少进入物理机内的数据发生丢失,提高数据处理的可靠性。

在本发明的第四方面中,物理机的组成模块还可以执行前述第二方面以及各种可能的实现方式中所描述的步骤,详见前述对第二方面以及各种可能的实现方式中的说明。

第五方面,本发明实施例还提供一种物理机,包括:接收器、发射器、处理器和存储器,其中,所述处理器与所述接收器、所述发射器和所述存储器通过总线连接,所述处理器可用于实现第一执行器的功能;所述处理器,用于执行前述第一方面中任一项的方法。

在本发明实施例中,由于物理机可以对第一执行器即将到来的数据流根据第一执行器处理数据的历史信息进行流量预测,从而在流量预测中存在超过阈值的预测值的情况下,将第一执行器获取数据的速率从第一速率降低到第二速率,从而第一执行器可以减缓获取到数据流的速率,当数据流高峰期比较长时,也可以避免数据流过多的流入到物理机中导致的超过第一执行器的处理能力的问题,从而提高数据流处理的可靠性,避免第一执行器获取数据流时因为数据尖峰到来导致的数据丢失。

第六方面,本发明实施例还提供一种物理机,包括:接收器、发射器、处理器和存储器,其中,所述处理器与所述接收器、所述发射器和所述存储器通过总线连接,所述处理器可用于实现第一执行器和队列管理器的功能;所述处理器,用于执行前述第二方面中任一项的方法。

通过前述实施例对本发明的举例说明可知,第一执行器中通过配置可扩容的第一接收缓存队列,可以减少进入物理机内的数据发生丢失,提高数据处理的可靠性。

在前述第一方面至第六方面的任一种可能的实现方式中:

第一执行器部署在流系统的物理机中,第一执行器是业务逻辑的物理执行单元,可以动态加载及执行计算节点所承载的业务逻辑。

历史信息包括第一执行器在一历史时间段内所处理的数据的流量信息。

流量预测信息包括第一时间段内多个时刻的流量的预测值。

第一速率是第一执行器在获取数据速率降低之前使用的数据获取速率,第二数据是第一执行器在获取数据速率降低之后使用的新的速率值。

第一数据集合是进入物理机的待处理的数据流中的多个数据的集合,第一执行器使用第二速率获取到的是第一数据集合。

第二数据集合是进入物理机的待处理的数据流中的多个数据的集合,第一执行器使用第一速率获取到的是第二数据集合。

第一执行器的接收缓存队列可以通过物理机中的队列管理器从物理机的内存获取到一些存储空间来得到,该接收缓存队列用于存储接收到的数据集合。

第一执行器的发送缓存队列可以通过物理机中的队列管理器从物理机的内存获取到一些存储空间来得到,该接收缓存队列用于存储第一执行器完成业务处理后的数据集合。

队列管理器可以用于从物理机的内存中获取存储空间,再将获取到的存储空间分配给第一执行器的接收缓存队列和发送缓存队列,从而实现对接收缓存队列和发送缓存队列的存储空间的管理。

第一数据集合的数据量指的是第一数据集合包括的所有数据包的包大小。

第一接收缓存队列的容量表示第一接收缓存队列能容纳的最大数据量。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。

图1-a为现有技术中数据流的流速不均匀状态示意图;

图1-b为现有技术中实际流速的变化曲线示意图;

图2为现有技术中流处理系统采取的一种流控方案示意图;

图3为本发明实施例中数据的处理方法应用于流系统的一种实现场景示意图;

图4为本发明实施例提供的一种数据的处理方法的流程方框示意图;

图5为本发明实施例提供的另一种数据的处理方法的流程方框示意图;

图6为本发明实施例中数据的处理方法应用的一种系统架构示意图;

图7为本发明实施例提供的源算子对数据流量进行预测的实现场景示意图;

图8为本发明实施例提供的源算子对数据流量进行缓存的实现场景示意图;

图9为本发明实施例提供的中间算子对数据流量进行反压控制处理的实现场景示意图;

图10为本发明实施例提供的中间算子采用的可伸缩的缓存队列的实现场景示意图;

图11-a为本发明实施例提供的一种物理机的组成结构示意图;

图11-b为本发明实施例提供的另一种物理机的组成结构示意图;

图11-c为本发明实施例提供的另一种物理机的组成结构示意图;

图11-d为本发明实施例提供的另一种物理机的组成结构示意图;

图12为本发明实施例提供的另一种物理机的组成结构示意图;

图13为本发明实施例提供的另一种物理机的组成结构示意图。

具体实施方式

本发明实施例提供了一种数据的处理方法和物理机,用于执行器在对数据流的数据进行处理的过程中,减少数据的丢失。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本发明的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。

本发明实施例提供的数据的处理方法可以应用于流系统中的物理机上。该流系统也可以称为“流数据处理系统”,流系统主要用于实时的处理数据流。流系统中可以包括多台物理机,每一台物理机上可以部署有上下游关系的计算节点,每个计算节点称为一个算子,计算节点是业务逻辑的载体,可被流系统分布式调度执行的最小单元,执行器是业务逻辑的物理执行单元,可以动态加载及执行计算节点所承载的业务逻辑。例如在流系统中的物理机上部署有第一执行器,在流系统中第一执行器的上游和下游可以部署其它的计算节点,这些计算节点可以属于同一个物理机,也可以分别属于不同的物理机。其中,执行器可以是物理机上一个线程,该物理机中可以通过虚拟机或容器来部署执行器,该物理机中的处理器可以用于实现执行器的流控功能,流控是指针对进入流系统的数据流速与流系统本身的处理速度之间不平衡所采取的一些控制措施。

本发明数据的处理方法的一个实施例,可应用于流系统中减少数据丢失的应用场景中,如图3所示,为本发明实施例中算子所应用的数据的处理方法应用于流系统的一种实现场景示意图,在本发明实施例提供的流系统中,业务数据处理逻辑需转化为有向图(英文全称:directedacyclicgraph,英文简称:dag)所示的数据处理模式,其中,算子(英文名称:operator)承载实际的数据处理操作,各算子之间传输流式数据。例如图3中的stream代表各operator间的数据传输,类似流水线式的数据处理模式,其中所有operator可以被分布化执行。图3中,operator1向operator2和operator3分别传输stream1,operator2向operator4传输stream2,operator4向operator6传输stream4,operator3向operator5传输stream3,operator5向operator6传输stream5。在dag中operator1是源算子,operator2、operator3、operator4、operator5是中间算子,operator6是末端算子。在该operator1作为源算子可以具体为本发明实施例中描述的第一算子,在该第一算子上配置的第一执行器可以解决数据进入物理机之后存在数据丢失的问题。接下来对本发明实施例提供的数据的处理方法进行详细说明,该方法应用于流系统中的物理机,该物理机包括第一执行器,请参阅图4所示,本发明一个实施例提供的数据的处理方法,可以包括:

101、根据第一执行器处理数据的历史信息,预测第一执行器待处理的数据流在第一时间段内的流量,从而得到数据流在第一时间段内的流量预测信息。

其中,历史信息包括第一执行器在一历史时间段内所处理的数据的流量信息,流量预测信息包括第一时间段内多个时刻的流量的预测值。

本发明实施例中,执行器(英文全称:processelement,英文简称:pe)是业务逻辑的物理执行单元,可以动态加载及执行算子所承载的业务逻辑,即执行器是算子的执行体,执行器负责实现算子的业务逻辑。具体的,第一执行器部署在第一算子上,第一算子的数据流量控制可以通过第一执行器来完成。本发明实施例中第一执行器先获取第一执行器处理数据的历史信息,该历史信息包括第一执行器在一历史时间段内所处理的数据的流量信息,通过第一执行器在历史时间段内的数据流量进行多次统计得到的,根据该历史信息可以预测第一执行器待处理的数据流在第一时间段内的流量,从而得到数据流在第一时间段内的流量预测信息,其中,待处理的数据流是第一执行器在第一时间段内需要获取的数据流。举例说明,可以对第一执行器在过去24小时内处理数据产生的历史信息进行分析,以此为依据预测在接下来的第一时间段内出现的数据流量。

102、在流量预测信息中包括超过阈值的预测值的情况下,将第一执行器获取数据的速率从第一速率降低到第二速率。

在本发明实施例中,物理机可以为第一执行器预先配置一阈值,通过前述步骤获取到流量预测信息中的预测值之后,判断流量的预测值是否超过阈值,在流量预测信息中包括超过阈值的预测值的情况下,说明在接下来的时间内第一执行器可能会产生数据流量高峰,则按照预测情况可以降低第一执行器的数据获取速率,即减慢第一执行器的数据接收速率,例如第一执行器原来采用的是第一速率,可以降低到第二速率。从而使得第一执行器可以尽量保持一个近乎匀速的数据接收状态,将进入到物理机内的数据流的波峰消平,避免突然到来大量的数据流量而无法及时处理导致数据丢失的情况,从而避免进入物理机内的数据因为超过第一执行器的最大数据处理能力而发生数据丢失。

103、使用第二速率获取待处理的数据流的第一数据集合。

在本发明实施例中,通过前述步骤对第一执行器的数据流量进行预测后,可以按照预测到的数据流量高峰来降低数据获取速率,则可以按照降低后的数据获取速率(即第二速率)获取数据流的第一数据集合,从而减缓了数据流量的接收速率,使得第一执行器接收到的数据量减少,避免出现超过第一执行器的数据处理能力而导致的数据丢失。其中,第一数据集合指的是使用第二速率接收数据流时得到的数据集合,后续实施例为了更加清楚的描述各个数据集合,分别采用“第一数据集合”、“第二数据集合”、“第三数据集合”的方式,从而用于区分处于不同处理阶段以及不同状态的数据集合。

在本发明的一些实施例中,步骤103使用第二速率获取待处理的数据流的第一数据集合,具体可以包括:

a1、使用第二速率生成待处理的数据流的第一数据集合;或,

a2、使用第二速率接收外部数据源发送的数据从而得到待处理的数据流的第一数据集合。

其中,第一执行器可以用于产生数据流,则第一执行器降低了数据获取速率之后,第一执行器可以降低产生数据流的速率。又如,第一算子本身并不产生数据流,则第一算子可以通过外部数据源接收数据流,则第一执行器可以降低数据接收速率,从而减小接收到的数据量,以避免进入到物理机内的数据量超过第一执行器的处理负荷而导致的数据丢失。

在本发明的一些实施例中,除了执行前述步骤之外,本发明实施例提供的数据的处理方法,还包括:

b1、在流量预测信息中包括的预测值没有超过阈值的情况下,保持第一执行器获取数据的速率为第一速率不变,使用第一速率获取待处理的数据流的第二数据集合;

b2、在第二数据集合大于第一执行器的最大数据处理门限值的情况下,将第二数据集合中的第一子集存储到第一执行器的接收缓存队列中。

其中,物理机生成的流量预测信息中包括的预测值没有超过阈值,则说明第一执行器获取的数据流不会产生数据尖峰,可能不会出现过大的数据流量,则保持第一执行器获取数据的速率为第一速率不变,使用第一速率获取待处理的数据流的第二数据集合。其中,第二数据集合指的是使用第一速率接收数据流时得到的数据集合。

在接收到第二数据集合之后,对该第二数据集合包括的数据量进行分析,判断该第二数据集合是否大于第一执行器的最大数据处理门限值,其中第一执行器的最大数据处理门限值是根据第一执行器的硬件配置或者软件配置确定的能够在单位时间内处理数据的最大值,在第二数据集合大于第一执行器的最大数据处理门限值的情况下,说明第一执行器接收到的第二数据集合的数据量超过了第一执行器的最大数据处理门限值,从而会存在数据丢失的问题,本发明实施例中第一执行器还配置有接收缓存队列,该接收缓存队列可以通过物理机中的队列管理器从物理机的内存获取到一些存储空间来得到。该接收缓存队列可以用于存储第二数据集合中的第一子集,第一子集指的是第二数据集合中的部分数据,通过第一执行器的接收缓存队列可以存储第一子集,从而避免第一子集在物理机内发生数据丢失。

在本发明的一些实施例中,第二数据集合除了包括前述的第一子集,该第二数据集合还可以包括第二子集。除了执行前述步骤之外,本发明实施例提供的数据的处理方法,还包括:

c1、在第一执行器的接收缓存队列已满的情况下,将第二子集存储到第一执行器的外部存储器中,第二子集包括第二数据集合中未被第一执行器处理且未存储在接收缓存队列中的数据包。

具体的,第一执行器的接收缓存队列存储有第二数据集合中的第一子集,在第一子集存储到接收缓存队列中之后,若接收缓存队列出现已满的情况,此时第二数据集合中还存在第二子集尚未存储,为了避免第二子集的数据丢失,本发明实施例中第一执行器除了使用接收缓存队列存储数据之外,还可以为第一执行器配置外部存储器,第一执行器还可以采用两种数据缓存方式,其中接收缓存队列可以通过第一执行器的内存配置得到,除了使用接收缓存队列,第一执行器还可以使用外部存储器。将第一子集存储在接收缓存队列中以充分利用内存的容量,如果该接收缓存队列已满,就通过写磁盘文件的方式,将第二子集存储到外部存储器中,待到第一执行器有空闲的时候再从外部存储器中获取到第二子集,第一执行器通过接收缓存队列和外部存储器的方式,能很好地解决数据尖峰时可能造成的数据丢失,解决了由于外部数据源波动造成的数据尖峰而导致的数据丢失问题。

在本发明的一些实施例中,除了执行前述步骤之外,本发明实施例提供的数据的处理方法,还包括:

d1、在第一数据集合大于第一执行器的最大数据处理门限值的情况下,停止获取待处理的数据流的数据。

具体的,在本发明的一些实施例中,物理机通过第二速率接收到第一数据集合之后,对该第一数据集合包括的数据量进行分析,判断该第一数据集合是否大于第一执行器的最大数据处理门限值,其中第一执行器的最大数据处理门限值是根据第一执行器的硬件配置或者软件配置确定的能够在单位时间内处理数据的最大值,在第一数据集合大于第一执行器的最大数据处理门限值的情况下,说明第一执行器接收到的第一数据集合的数据量超过了第一执行器的最大数据处理门限值,从而会存在数据丢失的问题,此时第一执行器可以启动反压控制策略,停止第一执行器获取数据流,即第一执行器不再接收数据流,第一执行器执行的反压控制类似于控制论中的反馈原理,就是第一执行器出现了过载,会向它的上游计算节点或者外部数据源施加作用,减少或者停止向它自己发送数据以减轻本身的负载,从而能够减少进入物理机的数据量,避免因为第一执行器无法处理导致的数据丢失。

在本发明的一些实施例中,除了执行前述步骤之外,本发明实施例提供的数据的处理方法,还包括:

e1、对第一数据集合进行处理,以得到第三数据集合;

e2、将第三数据集合中的数据存储到第一执行器的发送缓存队列中;

e3、通过发送缓存队列向第二执行器发送第三数据集合中的数据,以便第二执行器处理第三数据集合中的数据,第二执行器为流系统中第一执行器的一个下游计算节点。

在本发明的上述实施例中,获取到待处理的第一数据集合之后,可以由第一执行器按照该第一执行器配置的业务处理逻辑对待处理的第一数据集合进行业务处理从而得到第三数据集合,业务处理逻辑是指第一执行器对数据的具体处理方式,通常业务处理逻辑可以结合具体的应用场景来确定,此处不做限定。举例说明,业务处理逻辑可以是从第一数据集合中提取出目标字段,从而得到第三数据集合,或者业务处理逻辑可以是在第一数据集合中添加预置信息,从而可以得到第三数据集合。

在本发明的上述实施例中,第一执行器还配置有发送缓存队列,该发送缓存队列可以通过物理机中的队列管理器从物理机的内存获取到一些存储空间来得到。该发送缓存队列可以用于存储物理机获取到的数据。例如物理机在得到第三数据集合之后,可以将第三数据集合存储到发送缓存队列中,然后物理机可以从发送缓存队列中取出第三数据集合中的数据,并发送给第二执行器,以便第二执行器处理第三数据集合中的数据。其中,该第二执行器为流系统中第一执行器的一个下游计算节点,例如该第二执行器可以是与第一执行器处于同一个物理机内的下游计算节点,也可以是与第一执行器处于不同物理机内的计算节点,此处不做限定。

举例说明如下,物理机器从第一执行器的发送缓存队列中获取到第三数据集合中的部分数据,然后将该部分数据发送给第二执行器,然后继续从发送缓存队列中读取另一部分数据,再发送给第二执行器,直至发送缓存队列中的所有数据都被发送给第二执行器为止。第一执行器中通过配置发送缓存队列,可以尽可能的减少数据丢失的情况,提高数据流处理的可靠性。

通过前述实施例对本发明的举例说明可知,由于物理机可以对第一执行器即将到来的数据流根据第一执行器处理数据的历史信息进行流量预测,从而在流量预测中存在超过阈值的预测值的情况下,将第一执行器获取数据的速率从第一速率降低到第二速率,从而第一执行器可以减缓获取到数据流的速率,当数据流高峰期比较长时,也可以避免数据流过多的流入到物理机中导致的超过第一执行器的处理能力的问题,从而提高数据流处理的可靠性,避免第一执行器获取数据流时因为数据尖峰到来导致的数据丢失。

前述本发明实施例介绍了第一执行器实现的一种数据的处理方法,接下来本发明实施例介绍第一执行器实现的另一种数据的处理方法,方法应用于流系统中的物理机,物理机包括第一执行器和队列管理器。请参阅图5所示,本发明实施例提供的另一种数据的处理方法,包括:

201、第一执行器接收来自第二执行器的第一数据集合,第二执行器为流系统中第一执行器的一个上游计算节点,第一数据集合的数据量大于第一执行器的第一接收缓存队列的容量。

其中,第一接收缓存队列的容量表示第一接收缓存队列能容纳的最大数据量。

在本发明实施例中,第一执行器处于物理机中,该物理机部署在流系统中,该流系统中在第一执行器的上游还部署有第二执行器,该第二执行器为流系统中第一执行器的一个上游计算节点,例如该第二执行器可以是与第一执行器处于同一个物理机内的上游计算节点,也可以是与第一执行器处于不同物理机内的计算节点,此处不做限定。第二执行器获取到第一数据集合,该第二执行器用于向该第二执行器的下游计算节点发送第一数据集合,该第一执行器用于接收来自第二执行器的第一数据集合。

本发明实施例在第一执行器中配置有接收缓存队列,为了区分该第一执行器的接收缓存队列的不同状态,采用“第一接收缓存队列”描述第一执行器接收第二执行器的第一数据集合时的队列状态,对于第二执行器的第一数据集合,分析该第一数据集合包括的数据量,该数据量指的是第一数据集合包括的所有数据包的包大小。判断该第一数据集合数据量是否大于第一执行器的第一接收缓存队列的容量,第一接收缓存队列的容量表示第一接收缓存队列能容纳的最大数据量。在第一数据集合的数据量大于第一执行器的第一接收缓存队列的容量的情况下,说明第一执行器配置的第一接收缓存队列此时无法全部存储第一数据集合,此时可以触发步骤202执行。

202、队列管理器将物理机的内存中的存储空间分配给第一接收缓存队列,以得到第二接收缓存队列。

在本发明实施例中,物理机中还包括有队列管理器,该队列管理器在第一数据集合的数据量大于第一执行器的第一接收缓存队列的容量的情况下运行,本发明实施例中第一执行器配置的第一接收缓存队列是可扩容的队列,队列管理器可以从物理机的内存中获取存储空间,再将获取到的存储空间分配给第一接收缓存队列,从而增加第一接收缓存队列的容量,为了区别不同状态的接收缓存队列,将扩充容量后的第一接收缓存队列定义为第二接收缓存队列。例如可以按照预置的存储空间大小来扩充第一接收缓存队列,或者按照当前第一接收缓存队列的空闲存储空间来增加一倍的存储空间,使得第一接收缓存队列的容量增大。

203、第一执行器将第一数据集合中的数据放入第二接收缓存队列中。

在本发明实施例中,第一执行器获取到队列管理器对第一接收缓存队列的容量进行扩充从而得到第二接收缓存队列的情况下,第一执行器可以将第一数据集合中的数据放入第二接收缓存队列中。因此本发明实施例中可以通过对第一执行器的第一接收缓存队列的容量扩充,使得进入到第一执行器所在物理机的数据能够被全部存储下来,避免进入该物理机的数据发生丢失。

在本发明的一些实施例中,除了执行前述步骤之外,本发明实施例提供的数据的处理方法,还包括:

f1、在第二接收缓存队列已满的情况下,第一执行器停止接收第二执行器发送的数据。

具体的,在本发明的一些实施例中,第一执行器将接收到的第一数据集合存储到第二接收缓存队列之后,若该第二接收缓存队列已满,说明第一执行器中已经无法再接收数据,若继续接收数据会存在数据丢失的问题,此时第一执行器可以启动反压控制策略,停止第一执行器获取数据流,即第一执行器不再接收数据流,第一执行器执行的反压控制类似于控制论中的反馈原理,就是第一执行器出现了过载,会向它的上游计算节点或者外部数据源施加作用,减少或者停止向它自己发送数据以减轻本身的负载,从而能够减少进入物理机的数据量,避免因为第一执行器无法存储数据导致的数据丢失。

在本发明的一些实施例中,除了执行前述步骤之外,本发明实施例提供的数据的处理方法,还包括:

g1、第一执行器对第一数据集合中的数据进行处理以得到第二数据集合,第一数据集合中的数据是第一执行器从第二接收缓存队列中获取的,第二数据集合的数据量大于第一执行器的第一发送缓存队列的容量;

g2、队列管理器将物理机的内存中的存储空间分配给第一发送缓存队列,以得到第二发送缓存队列;

g3、第一执行器将第二数据集合中的数据存储到第二发送缓存队列。

在本发明的上述实施例中,获取到待处理的第一数据集合之后,可以由第一执行器按照该第一执行器配置的业务处理逻辑对待处理的第一数据集合进行业务处理从而得到第二数据集合,业务处理逻辑是指第一执行器对数据的具体处理方式,通常业务处理逻辑可以结合具体的应用场景来确定,此处不做限定。举例说明,业务处理逻辑可以是从第一数据集合中提取出目标字段,从而得到第二数据集合,或者业务处理逻辑可以是在第一数据集合中添加预置信息,从而可以得到第二数据集合。

在本发明的上述实施例中,第一执行器还配置有发送缓存队列,该发送缓存队列可以通过物理机中的队列管理器从物理机的内存获取到一些存储空间来得到。为了区分该第一执行器的发送缓存队列的不同状态,采用“第一发送缓存队列”描述第一执行器得到第二数据集合时的队列状态,判断该第一数据集合数据量是否大于第一执行器的第一发送缓存队列的容量,第一发送缓存队列的容量表示第一发送缓存队列能容纳的最大数据量。在第一数据集合的数据量大于第一执行器的第一发送缓存队列的容量的情况下,说明第一执行器配置的第一发送缓存队列此时无法全部存储第二数据集合,此时可以触发步骤g2执行。

在本发明的上述实施例中,物理机中还包括有队列管理器,该队列管理器在第一数据集合的数据量大于第一执行器的第一发送缓存队列的容量的情况下运行,本发明实施例中第一执行器配置的第一发送缓存队列是可扩容的队列,队列管理器可以从物理机的内存中获取存储空间,再将获取到的存储空间分配给第一发送缓存队列,从而增加第一发送缓存队列的容量,为了区别不同状态的发送缓存队列,将扩充容量后的第一发送缓存队列定义为第二发送缓存队列。

在本发明的上述实施例中,第一执行器获取到队列管理器对第一发送缓存队列的容量进行扩充从而得到第二发送缓存队列的情况下,第一执行器可以将第二数据集合中的数据放入第二发送缓存队列中。因此本发明实施例中可以通过对第一执行器的第一发送缓存队列的容量扩充,使得进入到第一执行器所在物理机的数据能够被全部存储下来,避免进入该物理机的数据发生丢失。

在本发明的一些实施例中,除了执行前述步骤之外,本发明实施例提供的数据的处理方法,还包括:

h1、在第二发送缓存队列已满的情况下,第一执行器停止处理第二接收缓存队列中的数据。

具体的,在本发明的一些实施例中,第一执行器将第二数据集合存储到第二发送缓存队列之后,若该第二发送缓存队列已满,说明第一执行器中已经无法再存储数据,若继续处理数据会存在数据丢失的问题,此时第一执行器可以启动反压控制策略,停止第一执行器处理第二接收缓存队列中的数据,停止向第二发送缓存队列存储数据以减轻本身的负载,避免因为第一执行器无法存储数据导致的数据丢失。

在本发明的一些实施例中,除了执行前述步骤之外,本发明实施例提供的数据的处理方法,还包括:

i1、在第二接收缓存队列中空闲的存储空间超过预置的第一阈值的情况下,队列管理器将第二接收缓存队列中空闲的部分或全部存储间释放回内存。

在本发明的一些实施例中,除了执行前述步骤之外,本发明实施例提供的数据的处理方法,还包括:

i2、在第二发送缓存队列中空闲队列的存储空间超过预置的第二阈值的情况下,队列管理执行器将第二发送缓存队列中空闲的部分或全部存储空间释放回内存。

其中,本发明实施例中第一执行器的第二接收缓存队列和第二发送缓存队列除了容量可以扩充之外,容量还可以缩减,即接收缓存队列和发送缓存队列的存储容量都可以根据实际需要来调整,从而就能最大限度地存储数据流,能在保证数据流不丢失的前提下,最大限度地挖掘流系统的处理能力,当接收缓存队列和发送缓存队列都有空余的存储空间时,若空余存储空间超过某一阈值,则可以自动缩小接收缓存队列和发送缓存队列的存储空间,从而减少对内存的占用。

通过前述实施例对本发明的举例说明可知,第一执行器中通过配置可扩容的第一接收缓存队列,可以减少进入物理机内的数据发生丢失,提高数据处理的可靠性。

为便于更好的理解和实施本发明实施例的上述方案,下面举例相应的应用场景来进行具体说明。

请参阅如图5所示,为本发明实施例中数据的处理方法应用的一种系统架构示意图,图3中,pe1是源算子1的执行器,pe2是源算子2的执行器,pe3是源算子3的执行器,pe4是中间算子4的执行器,pe5是中间算子5的执行器,pe6是中间算子6的执行器,pe7是末端算子7的执行器,pe8是末端算子8的执行器,pe1向pe4发送数据流量,pe4向pe7发送数据流量,pe2向pe4、pe5和pe6发送数据流量,pe3向pe6发送数据流量,pe5和pe6向pe8发送数据流量。图5中pe1、pe2和pe3下面给出的是发送缓存队列,pe4、pe5和pe6左侧给出的是接收缓存队列,pe4、pe5和pe6右侧给出的是发送缓存队列,pe7和pe8下面给出的是接收缓存队列。本发明实施例可以在数据流的平均流速不大于流系统的最大处理能力的前提下,针对某些时段的数据尖峰到来可能导致的数据丢失问题。本发明实施例可以在可能发生问题的所有环节处都针对性设置了一些措施来提前预防或者消除阻塞。例如,在图5中,每个pe作为数据处理逻辑的最小单元,例如pe8会将阻塞传导至pe5和pe6,该处的阻塞传导是通过消息通道的机制实现的,例如假如底层采用传输协议来传输消息,当下游算子处理能力跟不上,就会停止接收数据,这样上游算子就发不过来,从而可以将阻塞传导至上游算子。pe5和pe6都是pe8的上游pe,pe5和pe6在使用完自己所有的缓冲区后,会将阻塞传导至pe2和pe3的源算子,pe2和pe3的源算子就会启动源算子的处理策略。接下来针对不同的问题源算子设置不同的策略进行举例说明。

对于源算子而言,主要的问题是外部数据来的速度不可控,波动性大,因此,特地设置预测模块和缓存模块来解决数据流量不可控的问题,预测模块根据历史流量统计数据来预测接下来的某段时间可能的数据流量到来速率,可以提前做好应对措施,另一个缓存模块用于在数据尖峰到来时而又没预测到的情况下,临时将数据流量缓存起来,在系统负载小的时候再将数据发到下游算子。

对于中间算子而言,中间算子的问题主要在于其上游算子的固有逻辑造成的数据尖峰,一旦其上游算子在短时间内发出大量的数据超过本算子的处理能力时,数据就会发生丢失。针对此问题,可以采用反压的处理方法,也可以通过设置可伸缩的缓存队列来解决此问题。其中,反压就是下游算子出现了过载,会向它的上游算子施加作用,减少或者停止向它自己发送数据以减轻本身的负载,一旦自己的处理能力达到上限,将不再进行数据流量的接收,将压力传导至其上游算子,这样上游算子就不能再进行发送,依次循环,一级一级将压力传导至源算子。可伸缩的缓存队列用于动态提升中间算子的缓存容量,尽可能多地将压力消化在本算子内部,而不是传导至上游算子。消化在本算子内部就是指尽量把能使用的一切资源都使用上,在所有可使用的资源都使用完的情形下,为了保证数据的不丢失,就只能将阻塞作用向外传导。

本发明实施例中,对源算子接收数据量进行预测,当接收数据量及增长速率超过阈值时降低源算子接收速率,先降低接收速率,如果降低接收速率之后,仍然超过阈值,则继续降低接收速率,直至停下来。当下游的pe接收队列满了,就不再进行接收,上游的pe就会停止数据的发送。只有把本算子所有可利用的缓存全部用完了才会将阻塞向上游算子推进直至推至源算子。每一个算子都有自己的缓存队列,包括接收缓存队列和发送缓存队列。在保证不丢数据的前提下,本发明实施例能最大限度的挖掘流系统的处理能力。

接下来首先对源算子应对数据尖峰的实现策略进行举例说明,如图6所示,为本发明实施例提供的源算子对数据流量进行预测的实现场景示意图,如图7所示,为本发明实施例提供的源算子对数据流量进行缓存的实现场景示意图。源算子的主要功能是对接外部数据源或者自己生产数据,自己生产数据时,速度比较好控制,而且可以尽量保持一个近乎匀速的状态,但是如果是对接外部数据源,就不是源算子本身可以控制的了,这时就需要源算子将外来数据的波峰波谷消平,使得方差变小,尽量使其发往下游算子的数据速率平稳。为此给它增加了两个模块,一个是预测模块,一个是缓存模块,预测模块根据历史接收的数据量以及接收数据速率的当前变化率预测可能到来的数据尖峰,提前采取措施,源算子采取措施可以有降低接收速度。缓存模块用来在数据尖峰真正到来时,将数据缓存起来保证已经进入流系统的数据不丢失。

从图6可以看出,源算子中的预测模块会根据本系统的处理能力,历史流量数据以及数据流量的当前增长率来预测下一阶段的可能流量,如果预测到拥塞可能到来,源算子会降低外部数据的接收速率来尽量降低发生拥塞的可能,在预测不准时,源算子处理模块通过缓存模块将数据存储起来,以保证已经进入流系统的数据不丢失。预测不准有很多情形,例如预测到马上会来一个数据尖峰,结果没来,又如预测接下来不会发生数据尖峰,但是实际却有数据尖峰到来。

从图7可以看出,源算子的缓存模块采用两种数据缓存策略,一旦发送缓存队列满,会首先将数据存储在更大的内存缓冲区中以充分利用内存的容量,如果该内存缓冲区也满,就通过写磁盘文件的方式,将数据持久化起来,待到源算子的发送缓存队列有空闲的时候再将磁盘文件中的数据取出放入发送缓存队列进入流系统。综上所述,有了这两个模块,源算子能很好地解决数据尖峰时可能造成的数据丢失,这就解决了由于外部数据源波动造成的数据尖峰而导致的数据丢失问题。

针对中间算子自身产生的数据尖峰,本发明实施例采取了以下的措施来解决该问题,如图8为本发明实施例提供的中间算子对数据流量进行反压控制处理的实现场景示意图,图9为本发明实施例提供的中间算子采用的可伸缩队列的实现场景示意图。

从图8可以看出,一旦中间算子在受到下游算子的反压时,不是立即将这种反压作用传导至自己的上游算子,而是努力地使用完自己的所有能使用的缓冲区,所有能用的缓冲区包括算子的接收缓存队列和发送缓存队列。这样能尽量地减少这种反压作用向上游算子传递,因为在中间算子使用自己的缓冲区这段时间时,有可能数据尖峰就会过去,这样就不需要将这种反压传递至上游算子,这样就能在保证数据不丢失的前提下,能最大限度地挖掘流系统的处理能力。因此在中间算子这层,设置了两个措施来缓存数据,一个是充分利用算子前后端的接收缓存队列和发送缓存队列,只有在发送缓存队列满的时候才停止运转算子业务逻辑,当发送缓存队列空余10%以上恢复执行算子逻辑,只有在接收缓存队列满的时候才停止从外部接收数据。第二个是将这两个队列改造成可伸缩的缓存队列,而不是传统的固定大小队列,可伸缩的队列就是在队列满的时候自动扩充容量,如图10所示,当队列满时自动延伸队列至原来的两倍,队列已使用长度缩减,当队列空闲时,缩减到原来队列长度的一半时自动缩回原来的大小。这样就能最大限度地将阻塞消除而不向上游算子传导,能在保证数据不丢失的前提下,最大限度地挖掘流系统的处理能力。

本发明实施例中从源算子到中间算子的整套流控过程中,可以基于dag图的反压将阻塞逐层向前推,提供了应对短时大量数据的可伸缩队列缓存,提供了应对数据源的流速不均匀源算子采取的缓存策略,以及对源算子引起的拥塞进行预测,提前处理。本发明实施例能在数据的平均速率不超过流系统的处理能力的前提下,能够保证在某些时刻数据速率超过了处理能力而不致导致数据的丢失,同时最大限度地降低对流系统性能的影响,这样能大大提高流系统的可用性和可靠性。

请补充执行器的具体形态,看交底书,执行器其实可以是软件,例如容器或者虚拟机或者进程,一个物理机上可部署多个

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。

请参阅图11-a所示,本发明实施例提供的一种物理机,所述物理机应用于流系统中,所述物理机包括第一执行器,所述物理机1100包括:预测模块1101、速率控制模块1102、数据接收模块1103,其中,

预测模块1101,用于根据所述第一执行器处理数据的历史信息,预测所述第一执行器待处理的数据流在第一时间段内的流量,从而得到所述数据流在所述第一时间段内的流量预测信息,所述历史信息包括所述第一执行器在一历史时间段内所处理的数据的流量信息,所述流量预测信息包括所述第一时间段内多个时刻的流量的预测值;

速率控制模块1102,用于在所述流量预测信息中包括超过阈值的预测值的情况下,将所述第一执行器获取数据的速率从第一速率降低到第二速率;

数据接收模块1103,用于使用所述第二速率获取所述待处理的数据流的第一数据集合。

在本发明的一些实施例中,请参阅11-b所示,所述物理机1100还包括:数据缓存模块1104,其中,

所述数据接收模块1103,还用于在所述流量预测信息中包括的预测值没有超过所述阈值的情况下,保持所述第一执行器获取数据的速率为第一速率不变,使用所述第一速率获取所述待处理的数据流的第二数据集合;

所述数据缓存模块1104,用于在所述第二数据集合大于所述第一执行器的最大数据处理门限值的情况下,将所述第二数据集合中的第一子集存储到所述第一执行器的接收缓存队列中。

在本发明的一些实施例中,请参阅11-b所示,所述第二数据集合还包括第二子集,所述数据缓存模块1104,还用于在所述第一执行器的接收缓存队列已满的情况下,将所述第二子集存储到所述第一执行器的外部存储器中,所述第二子集包括所述第二数据集合中未被所述第一执行器处理且未存储在所述接收缓存队列中的数据。

在本发明的一些实施例中,请参阅11-c所示,所述物理机1100还包括:反压控制模块1105,其中,

所述反压控制模块1105,用于在所述第一数据集合大于所述第一执行器的最大数据处理门限值的情况下,停止获取所述待处理的数据流的数据。

在本发明的一些实施例中,请参阅11-d所示,所述物理机还包括:数据处理模块1106和数据发送模块1107,其中,

所述数据处理模块1106,用于对所述第一数据集合进行处理,以得到第三数据集合;将所述第三数据集合中的数据存储到所述第一执行器的发送缓存队列中;

所述数据发送模块1107,用于通过所述发送缓存队列向第二执行器发送所述第三数据集合中的数据,以便所述第二执行器处理所述第三数据集合中的数据,所述第二执行器为所述流系统中所述第一执行器的一个下游计算节点。

通过前述实施例对本发明的举例说明可知,由于物理机可以对第一执行器即将到来的数据流根据第一执行器处理数据的历史信息进行流量预测,从而在流量预测中存在超过阈值的预测值的情况下,将第一执行器获取数据的速率从第一速率降低到第二速率,从而第一执行器可以减缓获取到数据流的速率,当数据流高峰期比较长时,也可以避免数据流过多的流入到物理机中导致的超过第一执行器的处理能力的问题,从而提高数据流处理的可靠性,避免第一执行器获取数据流时因为数据尖峰到来导致的数据丢失。

请参阅图12所示,本发明实施例提供的一种物理机1200,所述物理机1200应用于流系统中,所述物理机1200包括第一执行器1201和队列管理器1202,其中,

所述第一执行器1201,用于接收来自第二执行器的第一数据集合,所述第二执行器为所述流系统中所述第一执行器的一个上游计算节点,所述第一数据集合的数据量大于所述第一执行器的第一接收缓存队列的容量,所述第一接收缓存队列的容量表示所述第一接收缓存队列能容纳的最大数据量;

所述队列管理器1202,用于将所述物理机的内存中的存储空间分配给所述第一接收缓存队列,以得到第二接收缓存队列;

所述第一执行器1201,还用于将所述第一数据集合中的数据放入所述第二接收缓存队列中。

在本发明的一些实施例中,所述第一执行器1201,还用于在所述第二接收缓存队列已满的情况下,停止接收所述第二执行器发送的数据。

在本发明的一些实施例中,所述第一执行器1201,还用于对所述第一数据集合中的数据进行处理以得到第二数据集合,所述第一数据集合中的数据是所述第一执行器从所述第二接收缓存队列中获取的,所述第二数据集合的数据量大于所述第一执行器的第一发送缓存队列的容量;

所述队列管理器1201,还用于将所述物理机的内存中的存储空间分配给所述第一发送缓存队列,以得到第二发送缓存队列;

所述第一执行器1201,还用于将所述第二数据集合中的数据存储到所述第二发送缓存队列。

在本发明的一些实施例中,所述第一执行器1201,还用于在所述第二发送缓存队列已满的情况下,停止处理所述第二接收缓存队列中的数据。

在本发明的一些实施例中,所述队列管理器1202,还用于在所述第二接收缓存队列中空闲的存储空间超过预置的第一阈值的情况下,将所述第二接收缓存队列中空闲的部分或全部存储间释放回所述内存。

在本发明的一些实施例中,所述队列管理执行器1202,还用于在所述第二发送缓存队列中空闲队列的存储空间超过预置的第二阈值的情况下,将所述第二发送缓存队列中空闲的部分或全部存储空间释放回所述内存。

通过前述实施例对本发明的举例说明可知,第一执行器中通过配置可扩容的第一接收缓存队列,可以减少进入物理机内的数据发生丢失,提高数据处理的可靠性。

需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本发明前述所示的方法实施例中的叙述,此处不再赘述。

本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质存储有程序,该程序执行包括上述方法实施例中记载的部分或全部步骤。

接下来介绍本发明实施例提供的另一种物理机,请参阅图13所示,物理机1300包括:

接收器1301、发射器1302、处理器1303和存储器1304(其中物理机1300中的处理器1303的数量可以一个或多个,图13中以一个处理器为例)。在本发明的一些实施例中,接收器1301、发射器1302、处理器1303和存储器1304可通过总线或其它方式连接,其中,图13中以通过总线连接为例。

存储器1304可以包括只读存储器和随机存取存储器,并向处理器1303提供指令和数据。存储器1304的一部分还可以包括非易失性随机存取存储器(英文全称:non-volatilerandomaccessmemory,英文缩写:nvram)。存储器1304存储有操作系统和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。操作系统可包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。

处理器1303控制物理机的操作,处理器1303还可以称为中央处理单元(英文全称:centralprocessingunit,英文简称:cpu)。具体的应用中,物理机的各个组件通过总线系统耦合在一起,其中总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都称为总线系统。

上述本发明实施例揭示的方法可以应用于处理器1303中,或者由处理器1303实现。该物理机1300中的处理器1303可以用于实现执行器的流控功能,例如处理器1303可以用于实现第一执行器的功能,或者处理器1303可以用于实现第一执行器和队列管理器的功能。第一执行器可以是物理机上一个线程,该物理机中可以通过虚拟机或容器来部署第一执行器。处理器1303可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1303中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1303可以是通用处理器、数字信号处理器(英文全称:digitalsignalprocessing,英文缩写:dsp)、专用集成电路(英文全称:applicationspecificintegratedcircuit,英文缩写:asic)、现成可编程门阵列(英文全称:field-programmablegatearray,英文缩写:fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1304,处理器1303读取存储器1304中的信息,结合其硬件完成上述方法的步骤。

接收器1301可用于接收输入的数字或字符信息,以及产生与物理机的相关设置以及功能控制有关的信号输入,发射器1302可包括显示屏等显示设备,发射器1302可用于通过外接接口输出数字或字符信息。

本发明实施例中,处理器1303,用于执行前述图4至图5中任一个方法实施例中的任意一个实施例中的步骤。

另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用cpu、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1