基于内存网格的分布式数据流处理方法、装置及设备与流程

文档序号:35914159发布日期:2023-10-29 23:02阅读:62来源:国知局
基于内存网格的分布式数据流处理方法、装置及设备与流程

本技术涉及大数据,尤其涉及一种基于内存网格的分布式数据流处理方法、装置及设备。


背景技术:

1、随着云计算技术的普及,产生的数据量越来越大,面对海量数据的快速处理需求,分布式流处理技术变得越来越重要。

2、面对大数据高时效性的要求,目前,相关技术主要通过主实时计算引擎计算数据流,然后从数据流中识别出乱序数据并异步发送给副实时计算引擎进行重新计算以更新主实时计算引擎的数据流处理结果。该技术通过引入副实时计算引擎对数据流中的乱序数据异步处理,从而防止乱序数据阻塞数据流的实时计算,保证数据流计算的完整性的同时,降低数据流处理的时延。

3、然而,上述技术依赖于乱序数据的识别结果,一旦数据流中乱序数据识别错误,将会影响整个数据流的处理过程。

4、因此,降低分布式数据流处理的时延,成为大数据领域中亟待解决的技术问题。


技术实现思路

1、本技术实施例提供了一种基于内存网格的分布式数据流处理方法、装置及设备,用于降低分布式数据流处理的时延。

2、一方面,本技术实施例提供一种基于内存网格的分布式数据流处理方法,应用于分布式系统,所述分布式系统包含至少两台具有多个内核的服务器,每个内核承载一个线程,每个内核上部署有对目标任务进行数据流处理的多种算子,不同算子用于执行不同的数据流处理操作;所述方法包括:

3、所述服务器采用第一线程调用输入操作符算子,读取所述目标任务的数据流,并将读取的数据流存储到所述服务器的内存网格中;

4、所述服务器采用第二线程,按照预先设置的所述目标任务的数据流处理逻辑,依序调用不同类型的中间操作符算子对所述内存网格中保存的数据流进行处理,并将末次调用的中间操作符算子对所述内存网格中的数据流进行处理的中间处理结果,作为所述第二线程的处理结果;其中,每个处理结果是基于所述服务器对所述目标任务的数据流进行处理的中间处理结果以及其它服务器对所述目标任务的数据流进行处理的中间处理结果获得的;

5、其中,每次调用一个中间操作符算子时,将所述中间操作符算子对所述内存网格中的数据流进行处理后的中间处理结果存入所述内存网格,并将所述中间处理结果传递给下一中间操作符算子进行处理;

6、所述服务器采用第三线程调用输出操作符算子,基于每个第二线程对应的处理结果,获得所述目标任务的目标处理结果。

7、另一方面,本技术实施例提供一种基于内存网格的流处理装置,具有多个内核的装置,应用于分布式系统,每个内核承载一个线程,每个内核上部署有对目标任务进行数据流处理的多种算子,不同算子用于执行不同的数据流处理操作;

8、输入模块,用于采用第一线程调用输入操作符算子,读取所述目标任务的数据流,并将读取的数据流存储到所述服务器的内存网格中;

9、数据处理模块,用于采用第二线程,按照预先设置的所述目标任务的数据流处理逻辑,依序调用不同类型的中间操作符算子对所述内存网格中保存的数据流进行处理,并将末次调用的中间操作符算子对所述内存网格中的数据流进行处理的中间处理结果,作为所述第二线程的处理结果;其中,每个处理结果是基于所述装置对所述目标任务的数据流进行处理的中间处理结果以及其它装置对所述目标任务的数据流进行处理的中间处理结果获得的;

10、其中,每次调用一个中间操作符算子时,将所述中间操作符算子对所述内存网格中的数据流进行处理后的中间处理结果存入所述内存网格,并将所述中间处理结果传递给下一中间操作符算子进行处理;

11、输出模块,用于采用第三线程调用输出操作符算子,基于每个第二线程对应的处理结果,获得所述目标任务的目标处理结果。

12、可选的,所述不同类型的中间操作符算子包含与其它服务器进行中间处理结果交换的发送操作符算子和接收操作符算子;

13、所述数据处理模块具体用于:当所述第二线程调用的中间操作符算子为所述发送操作符算子时,从本地内存的共享队列中获取部分中间操作符算子的中间处理结果,并将获取的中间处理结果发送到其它装置内存的共享队列中;

14、当所述第二线程调用的中间操作符算子为所述接收操作符算子时,从其装置内存的共享队列中接收部分中间操作符算子的中间处理结果,并接收的中间处理结果存到本地内存的共享队列中。

15、可选的,所述数据处理模块具体用于:

16、当调用的中间操作符算子为非接收操作符算子时,采用所述第二线程对本地内存的共享队列中存储的从其它服务器接收的部分中间处理结果进行处理,并将处理完的中间处理结果从本地内存的共享队列中移除;

17、当调用的中间操作符算子为所述接收操作符算子时,采用所述第二线程重新从其它装置内存的共享队列中接收部分中间处理结果以再次填满本地内存的共享队列,直至所述目标任务的数据流处理完成。

18、可选的,所述数据处理模块具体用于:

19、当调用的中间操作符算子为非发送操作符算子时,采用所述第二线程对所述内存网格中保存的数据流进行处理,并将处理完的部分中间操作符算子的中间处理结果存入本地内存的共享队列中;

20、当调用的中间操作符算子为所述发送操作符算子时,采用所述第二线程,基于部分中间操作符算子的中间处理结果的键,计算相应的中间处理结果对应的分区id,并将部分中间处理结果发送到相应的分区id对应的其它装置内存的共享队列中。

21、可选的,当所述服务器在本地内存的共享队列已满时,所述数据处理模块具体用于:将部分中间操作符算子对应的中间处理结果,存储到本地内存的等待队列中;

22、所述输出模块具体用于:控制所述输入操作符算子每次读取到所述内存网格的数据量。

23、可选的,所述数据处理模块具体用于:

24、从其它装置内存的共享队列中接收当前窗口能够处理的中间处理结果后,向其它装置发送确认消息,所述确认消息用于指示其它装置发送下一窗口的数据,以及用于控制所述输入操作符算子每次读取到所述内存网格的数据量;

25、从其它装置内存的共享队列中接收下一窗口能够处理的中间处理结果;其中,每个窗口处理的数据量大小是根据处理速率动态调整的。

26、可选的,所述装置还包括存储模块,针对所述数据流、所述中间处理结果和所述处理结果中的每个数据,所述存储模块具体用于:

27、根据所述数据的键计算分区id;

28、根据所述分区id,将所述数据存到所述内存网格相应的分区上;其中,所述内存网格上的每个分区在本地对应一个主副本,在其它装置上对应至少一个备份副本,所述主副本和所述备份副本用于存储相应分区的状态快照。

29、可选的,当所述装置故障时,其上的各分区会被重新分配给其它装置,以及,各分区在其它装置上的备份副本会被升级主副本,且所述其它装置上的备份副本会被更新。

30、可选的,所述分布式系统中新增装置时,其它装置上的分区会被分配给所述新增装置,并在所述新增装置的内存网格上为新分配的分区添加主副本和备份副本,其中,分配后各装置在内存网格上的分区平衡。

31、可选的,所述数据处理模块具体用于:

32、按照预设快照周期,基于处理所述目标任务的数据流使用的多种算子在所述内存网格的各分区上的数据,生成状态快照,并将所述各分区上的数据存储到磁盘上,其中,所述状态快照用于记录当前时刻所述内存网格上各分区存储的数据流的处理结果;

33、当计算任务失败后,停止计算,将故障前获得的最新状态快照恢复到所述内存网格中,并采用所述第一线程调用输入操作符算子,读取最新状态快照后的数据流到所述内存网格。

34、可选的,当所述输入操作符算子标识有数据偏移量时,所述数据偏移量会被记录在所述状态快照中;

35、所述输入模块具体用于:采用所述第一线程调用所述输入操作符算子,不读取所述偏移量之前的数据流,而将所述偏移量之后的数据流读取到所述内存网格中。

36、可选的,当处理所述目标任务的数据流使用的多种算子在所述内存网格的各分区上的数据存储到磁盘,且生成相应的状态快照后,所述输入模块具体用于:

37、向所述第一线程发送响应消息,以指示基于所述输入操作符算子读取的数据流获得的状态快照能够被安全删除。

38、可选的,所述响应消息携带状态快照的标识,所述响应消息发送后,所述输入模块具体用于:

39、当所述响应消息携带的标识已经记录在全局状态快照中,不调用所述输入操作符算子加载所述标识对应的状态快照记录的数据流,其中,所述全局状态快照用于记录全部状态快照的标识。

40、可选的,所述数据处理模块具体用于:

41、当基于所述输出操作符算子在所述内存网格的各分区上的数据生成状态快照时,停止向下游应用发送处理完的数据;

42、当所述状态快照生成后,继续向所述下游应用发送处理完的数据。

43、可选的,生成状态快照之后,所述数据处理模块具体用于:

44、为所述状态快照生成标识;

45、当所述标识未在全局快照中时,将所述标识对应的状态快照记录的数据存储到磁盘上;其中,所述全局快照中的标识会被定期清理。

46、可选的,所述目标任务的数据流处理逻辑以及多种算子间的数据流向关系,是在面向开发者的管道api中预先定义的,且多种算子的处理操作会在面向分布式流处理引擎的核心api中进行微调。

47、可选的,当内核数大于三核时,所述装置还包括垃圾回收模块,用于:

48、将第四线程作为垃圾回收器,回收数据流处理过程中所述内存网格中已处理的数据。

49、另一方面,本技术实施例提供一种电子设备,包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,实现上述基于内存网格的分布式数据流处理方法的步骤。

50、另一方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机可执行指令,所述计算机可执行指令被电子设备执行时实现上述基于内存网格的分布式数据流处理方法的步骤。

51、另一方面,本技术实施例提供一种计算机程序产品,包含计算机程序,所述计算机程序被电子设备执行时实现上述基于内存网格的分布式数据流处理方法的步骤。

52、本技术实施例的有益效果如下:

53、本技术实施例提供的基于内存网格的分布式数据流处理方法中,在对目标任务的数据流进行处理时,考虑到使用的多种算子中的输入操作符算子和输出操作符算子依赖于第三方api且无法协同调用,可能会引起阻塞,因此,在分布式系统的每台服务器的多个内核上,分别开启一个线程,这样,可以为输入操作符算子和输出操作符算子单独分配一个专用的线程,从而保证数据流处理的流畅性,提高了数据流的处理速度;同时,对于其余内核上开启的每个线程,能够被不同类型的中间操作符算子所共用,这样,被共用的线程可以更长时间的停留在同一内核上,减少了操作系统的上下文切换,提高了内核的利用率,进而降低了分布式数据流处理的时延。另一方面,每个内核上部署有对目标任务进行数据流处理的多种算子,不同算子用于执行不同的数据流处理操作,其中,输入操作符算子用于读取目标任务的数据流到服务器的内存网格中,不同类型的中间操作符算子用于对内存网格中保存的数据流进行处理,输入操作符算子用于输出对目标业务的数据流处理完成的目标处理结果,其中,每个中间操作符算子的中间处理结果会存入内存网格且传递给下一中间操作符算子进行后续处理,且通过中间操作符算子,不同服务器之间能够交换中间处理结果,因此,从而实现分布式数据流处理结果的融合。由于每个线程所在的内核上部署的多种算子且预先设置了目标任务的数据流处理逻辑,这样,每个线程可以根据该数据流处理逻辑有序调用相应的算子进行数据流处理,无需关心数据流的获取顺序,实现无序数据流处理过程,进一步提高了数据流处理的效率。

54、本技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术而了解。本技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

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