一种消息处理可靠性追踪方法及装置的制造方法

文档序号:9567046阅读:506来源:国知局
一种消息处理可靠性追踪方法及装置的制造方法
【技术领域】
[0001]本发明涉及数据处理领域,具体地,涉及一种消息处理可靠性追踪方法及装置。
【背景技术】
[0002]随着大数据业务的快速增长,Storm应运而生,用于实现大规模数据处理的实时计算。Storm为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。
[0003]在Storm消息处理模型中,消息源spout作为主节点将消息tuple发送至其下游的消息处理者bo 11,bo 11作为工作节点,不断的接收并处理来自上游节点的消息。通常,根据bolt在整个消息处理模型中所处的位置,bolt将来自上游节点的消息处理完毕后,可视情况将消息发送至其下游节点,或者,在不存在下游节点时bolt不发送消息,以此表示消息处理结束。
[0004]为了保证Storm消息处理的可靠性,需要对spout发出的消息进行追踪,只有在确定该消息被下游所有相关bolt处理完毕后,才认为spout发出的消息被完全处理。
[0005]进行消息处理可靠性追踪时,spout为每个tuple维护一个校验值ack_val,且初始设置为0 ;同时,上游节点会为其下游节点生成对应的随机数V,连同消息一起发送至下游节点,如此,便可通过异或操作以及监测ack-val更新值的方式,进行消息处理可靠性追踪。正常情况下,spout发出的消息被完全处理时,ack-val被更新还原为0,若ack_val被提前更新为0,则说明追踪过程中出现冲突。
[0006]通常,ack-val和V可被设置为int型或者long型,为了尽量减小追踪过程出现冲突的概率,一般将ack-val和V设置为long型。结合图1所示消息树,追踪过程可体现如下,其中,ack-val被初始设置为ack-val:: 0000。
[0007]1.spout为boltl生成随机数Vi= 1001,将V丨和消息AA发送至boltl。spout利用ack-valJP Vi得到异或结果1,并将异或结果1发送至协调者,由协调者利用异或结果1和 ack-val^做异或,将 ack-val 丨更新为 ack-val 2= 1001。
[0008]2.boltl接收到V#,为bolt2生成随机数V 2= 1000,为bolt3生成随机数V 3 =0100。boltl利用VpVjP V 3得到异或结果2,并在消息处理完毕后,将异或结果2发送至协调者,由协调者利用异或结果2和ack-val;^?异或,将ack-val 2更新为ack-val 3= 1100。
[0009]3.基于相同原理,bolt2接收V2并完成消息处理后,协调者通过异或处理将ack_val3更新为ack-val 4= 0100 ;bolt3接收V 3并完成消息处理后,协调者通过异或处理将ack_val4更新为ack-val 5= 0000。至此,spout监控到ack-val被更新还原为0000,可判定spout发出的消息被完全处理。
[0010]上述通过占用64位空间的long型表示ack-val和V的方案,虽可在一定程度上减小冲突出现的概率,但却增大了网络传输字节数,可能会影响Storm消息处理效率。

【发明内容】

[0011]本发明的消息处理可靠性追踪方法及装置,提供一种新的追踪方案,有助于降低追踪过程中的网络传输字节数。
[0012]第一方面,本发明实施例提供了一种消息处理可靠性追踪方法,所述方法包括:
[0013]协调者获得第一位移信息,所述第一位移信息包括第一位移方向和第一位移数,所述第一位移信息用于表示上游节点向下游节点发送消息;
[0014]所述协调者获得第二位移信息,所述第二位移信息包括第二位移方向和第二位移数,所述第二位移信息用于表示所述下游节点将所述上游节点发送的消息处理完毕,所述第一位移方向与所述第二位移方向相反;
[0015]所述协调者判断所述第一位移数与所述第二位移数是否相匹配,如果相匹配,所述协调者判定消息源发出的消息被完全处理。
[0016]在第一方面的第一种可能的实现方式中,所述协调者维护校验值,所述协调者判定所述第一位移数与所述第二位移数相匹配的方式为:
[0017]所述协调者按照所述第一位移数和所述第二位移数的指示,对所述校验值进行移位操作;
[0018]所述协调者判断移位操作后是否能得到所述校验值的初始值,如果是,所述协调者判定所述第一位移数与所述第二位移数相匹配。
[0019]结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述校验值占用1字节。
[0020]结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述校验值的初始值设置为1,所述第一位移方向为向左平移,所述第二位移方向为向右平移。
[0021]结合第一方面或第一方面的第一种至第三种中的任一种可能的实现方式,在第四种可能的实现方式中,Storm采用集中式架构,包括一个所述协调者。
[0022]结合第一方面或第一方面的第一种至第三种中的任一种可能的实现方式,在第五种可能的实现方式中,Storm采用分布式架构,包括一个主协调者和至少两个从协调者;则
[0023]所述协调者获得第一位移信息,包括:所述主协调者获得所述至少两个从协调者发送的第一位移信息;
[0024]所述协调者获得第二位移信息,包括:所述主协调者获得所述至少两个从协调者发送的第二位移信息。
[0025]第二方面,本发明实施例提供了一种消息处理可靠性追踪装置,所述装置属于协调者,所述装置包括:
[0026]第一获得单元,用于获得第一位移信息,所述第一位移信息包括第一位移方向和第一位移数,所述第一位移信息用于表示上游节点向下游节点发送消息;
[0027]第二获得单元,用于获得第二位移信息,所述第二位移信息包括第二位移方向和第二位移数,所述第二位移信息用于表示所述下游节点将所述上游节点发送的消息处理完毕,所述第一位移方向与所述第二位移方向相反;
[0028]判断单元,用于判断所述第一位移数与所述第二位移数是否相匹配,如果相匹配,则判定消息源发出的消息被完全处理。
[0029]在第二方面的第一种可能的实现方式中,所述协调者维护校验值,
[0030]所述判断单元,具体用于按照所述第一位移数和所述第二位移数的指示,对所述校验值进行移位操作;判断移位操作后是否能得到所述校验值的初始值,如果是,则判定所述第一位移数与所述第二位移数相匹配。
[0031]结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,Storm采用集中式架构,包括一个所述协调者。
[0032]结合第二方面或第二方面的第一种可能的实现方式,在第三种可能的实现方式中,Storm采用分布式架构,包括一个主协调者和至少两个从协调者,所述装置属于所述主协调者;
[0033]所述第一获得单元,具体用于获得所述至少两个从协调者发送的第一位移信息;
[0034]所述第二获得单元,具体用于获得所述至少两个从协调者发送的第二位移信息。
[0035]本发明技术方案中,上游节点每向下游节点发布一次消息,则可执行一次移位操作加以记录,同理,下游节点将上游节点发送的消息处理完毕后,亦可执行一次反方向的移位操作进行记录。通过移位操作的方式,可以准确可靠的追踪消息发布和消息处理情况,还有助于降低追踪过程中网络传输字节数,保证Storm的消息处理性能。
[0036]本发明的其他特征和优点将在随后的【具体实施方式】部分予以详细说明。
【附图说明】
[0037]附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的【具体实施方式】一起用于解释本发明,但并不构成对本发明的限制。在附图中:
[0038]图1是一种消息树的示意图;
[0039]图2是本发明消息处理可靠性追踪方法的流程图;
[0040]图3是本发明消息处理可靠性追踪装置的结构示意图。
【具体实施方式】
[0041]以下结合附图对本发明的【具体实施方式】进行详细说明。应当理解
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1