一种分布式数据流处理方法及装置的制造方法

文档序号:8265919阅读:279来源:国知局
一种分布式数据流处理方法及装置的制造方法
【技术领域】
[0001]本发明涉及数据处理领域,尤其涉及一种分布式数据流处理方法及装置。
【背景技术】
[0002]数据流处理技术广泛应用在众多领域,比如金融管理、网络监视、通信数据管理、Web应用、传感器网络数据处理等。这些应用中有一个典型的特点:数据流处理量极大,具有相当高的突发性,当数据到达的速度超出系统的处理能力时,系统会出现过载并且性能下降。所以,负载管理均成为数据流处理中研究的热点与重点。
[0003]数据流处理技术包括集中式数据流处理技术和分布式数据流处理技术;在集中式数据流处理技术中,检测到系统发生超载时,会选择性地丢掉一些数据元组来保证系统的正常运行,显然,采用这种方式是以牺牲数据元组为代价,对系统性能影响较大。由于流数据源及应用本身存在分布式的特点,目前,分布式流处理技术成为流处理研究的热点,采用分布式流处理技术,可以将负载分布到各个处理节点,保持系统中各个节点之间的负载平衡。
[0004]在分布式流处理技术中,针对无状态对象,主要采用轮询方式将数据元组分配到相应的处理节点上,对无状态对象的处理过程属于一次性操作,不会保存任何状态信息,处理过程比较简单;针对有状态对象,通常将具有同样键值(Key)的数据流分配到同样的节点进行处理。
[0005]在实际网络中,流量的分布具有很大的倾斜性,对应同一键值的数据流有可能会贡献相当大的流量,这就需要对具有同一键值的数据流也进行负载均衡处理,而上述分布式流处理技术显然无法针对这种情况进行负载均衡处理。

【发明内容】

[0006]本发明实施例提供一种分布式数据流处理方法及装置,用以解决分布式流处理技术无法对具有同一键值的数据流进行负载均衡处理的问题。
[0007]第一方面,提供一种分布式数据流处理方法,包括:
[0008]第一节点根据需要分配给下一跳工作节点的数据流的键值,确定第二节点为处理所述键值对应的数据流的下一跳工作节点;
[0009]所述第一节点在确定所述第二节点满足设定的负载迁移条件后,将所述需要分配给下一跳工作节点的数据流从所述第二节点迁移至第三节点进行处理,并指示所述第二节点和第三节点同步所述键值对应的数据流的状态信息;
[0010]其中,所述第二节点和第三节点属于所述第一节点的下一跳工作节点集合,所述第三节点的累计负载小于所述第二节点的累计负载。
[0011]结合第一方面,在第一种可能的实现方式中,所述第三节点为当前所述第一节点的下一跳工作节点集合中具有最小累计负载的工作节点。
[0012]结合第一方面,或第一方面的第一种可能的实现方式中,在第二种可能的实现方式中,所述设定的负载迁移条件包括:
[0013]所述第二节点的累计负载超过设定阈值;和/或,
[0014]所述第二节点的累计负载与第三节点的累计负载的比值和/或差值超过设定阈值。
[0015]结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述设定的负载迁移条件还包括:
[0016]当前时间与所述第一节点最近一次进行数据流迁移处理的时间的时间间隔不小于设定阈值。
[0017]结合第一方面,或第一方面的第一至三种任意一种可能的实现方式,在第四种可能的实现方式中,所述第一节点根据以下公式确定设定时间段内所述第一节点的任意一个下一跳工作节点的累计负载W:
[0018]W=cXW' +(l-c)Xy;
[0019]其中,y为所述第一节点在所述设定时间段内分配给所述任意一个下一跳工作节点的负载,r为所述任意一个下一跳工作节点在所述设定时间段的前一个时间段结束时的累计负载,c为常数,且O < c < I。
[0020]结合第一方面,或第一方面的第一至四种任意一种可能的实现方式,在第五种可能的实现方式中,所述第一节点指示所述第二节点和第三节点同步所述键值对应的数据流的状态信息,包括:
[0021]所述第一节点向所述第二节点发送包含所述键值的状态信息迁出指示,以及,向所述第三节点发送包含所述键值的状态信息迁入指示;
[0022]其中,所述状态信息迁出指示用于指示所述第二节点将本地生成的所述键值对应的数据流的第一状态信息发送给管理各工作节点的协调器;所述状态信息迁入指示用于指示所述第三节点从管理各工作节点的协调器中获取所述键值对应的数据流的第一状态信息,并将获取的所述第一状态信息与本地生成的对应所述键值的数据流的第二状态信息进行合并。
[0023]结合第一方面,或第一方面的第一至五种任意一种可能的实现方式,在第六种可能的实现方式中,所述第一节点在确定所述第二节点满足设定的负载迁移条件之前,还包括:
[0024]所述第一节点在接收到管理各工作节点的协调器发送的指示所述第二节点过载的信息后,调整设定的所述负载迁移条件。
[0025]结合第一方面,或第一方面的第一至六种任意一种可能的实现方式,在第七种可能的实现方式中,所述方法还包括:
[0026]第一节点根据需要分配给下一跳工作节点的数据流的键值,在确定当前不存在处理该键值对应的数据流的下一跳工作节点时,将所述需要分配给下一跳工作节点的数据流分配给当前所述第一节点的下一跳工作节点集合中具有最小累计负载的工作节点进行处理。
[0027]第二方面,提供一种分布式数据流处理方法,包括:
[0028]第二节点接收第一节点发送的包含设定键值的状态信息迁出指示;
[0029]所述第二节点根据所述状态信息迁出指示,确定本地生成的所述键值对应的数据流的第一状态信息,并将确定的所述第一状态信息发送给管理各工作节点的协调器。
[0030]第三方面,提供一种分布式数据流处理方法,包括:
[0031]第三节点接收第一节点发送的包含设定键值的状态信息迁入指示;
[0032]所述第三节点根据所述状态信息迁入指示,从管理各工作节点的协调器中获取所述第二节点发送到协调器中的所述键值对应的数据流的第一状态信息,并将获取的所述第一状态信息与本地生成的对应所述键值的数据流的第二状态信息进行合并。
[0033]第四方面,提供一种分布式数据流处理装置,该装置属于第一节点,包括:
[0034]确定模块,用于根据需要分配给所述第一节点的下一跳工作节点的数据流的键值,确定第二节点为处理所述键值对应的数据流的下一跳工作节点;
[0035]迁移模块,用于在确定所述第二节点满足设定的负载迁移条件后,将所述需要分配给下一跳工作节点的数据流从所述第二节点迁移至第三节点进行处理,并指示所述第二节点和第三节点同步所述键值对应的数据流的状态信息;
[0036]其中,所述第二节点和第三节点属于所述第一节点的下一跳工作节点集合,所述第三节点的累计负载小于所述第二节点的累计负载。
[0037]结合第四方面,在第一种可能的实现方式中,所述第三节点为当前所述第一节点的下一跳工作节点集合中具有最小累计负载的工作节点。
[0038]结合第四方面,或第四方面的第一种可能的实现方式,在第二种可能的实现方式中,所述设定的负载迁移条件包括:
[0039]所述第二节点的累计负载超过设定阈值;和/或,
[0040]所述第二节点的累计负载与第三节点的累计负载的比值和/或差值超过设定阈值。
[0041]结合第四方面的第二种可能的实现方式,在第三种可能的实现方式中,所述设定的负载迁移条件还包括:
[0042]当前时间与所述装置最近一次进行数据流迁移处理的时间的时间间隔不小于设定阈值。
[0043]结合第四方面,或第四方面的第一至三种任意一种可能的实现方式,在第四种可能的实现方式中,所述迁移模块具体用于根据以下公式确定设定时间段内所述第一节点的任意一个下一跳工作节点的累计负载W:
[0044]W=cXW' +(l-c)Xy;
[0045]其中,y为所述装置在所述设定时间段内分配给所述任意一个下一跳工作节点的负载,r为所述任意一个下一跳工作节点在所述设定时间段的前一个时间段结束时的累计负载,c为常数,且O <c< I。
[0046]结合第四方面,或第四方面的第一至四种任意一种可能的实现方式,在第五种可能的实现方式中,所述迁移模块具体用于,向所述第二节点发送包含所述键值的状态信息迁出指示,以及,向所述第三节点发送包含所述键值的状态信息迁入指示;
[0047]其中,所述状态信息迁出指示用于指示所述第二节点将本地生成的所述键值对应的数据流的第一状态信息发送给管理各工作节点的协调器;所述状态信息迁入指示用于指示所述第三节点从管理各工作节点的协调器中获取所述键值对应的数据流的第一状态信息,并将获取的所述第一状态信息与本地生成的对应所述键值的数据流的第二状态信息进行合并。
[0048]结合第四方面,或第四方面的第一至五种任意一种可能的实现方式,在第六种可能的实现方式中,所述迁移模块还用于,在确定所述第二节点满足设定的负载迁移条件之前,若接收到管理各工作节点的协调器发送的指示所述第二节点过载的信息,则调整设定的所述负载迁移条件。
[0049]结合第四方面,或第四方面的第一至六种任意一种可能的实现方式,在第七种可能的实现方式中,所述迁移模块还用于:根据需要分配给下一跳工作节点的数据流的键值,在确定当前不存在处理该键值对应的数据流的下一跳工作节点时,将所述需要分配给下一跳工作节点的数据流分配给当前所述第一节点的下一跳工作节点集合中具有最小累计负载的工作节点进行处理。
[0050]第五方面,提供一
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1