著录项信息
专利名称 | 一种基于Storm实时流计算框架的消息可靠处理保障方法 |
申请号 | CN201310682070.5 | 申请日期 | 2013-12-13 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2014-04-02 | 公开/公告号 | CN103699599A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 华中科技大学 | 申请人地址 | 湖北省武汉市洪山区珞喻路1037号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 华中科技大学 | 当前权利人 | 华中科技大学 |
发明人 | 谢夏;金海;胡亚军;柯西江 |
代理机构 | 华中科技大学专利中心 | 代理人 | 朱仁玲 |
摘要
本发明公开了一种基于Storm实时流计算框架的消息可靠处理保障方法,包括:①预处理阶段,对环境做初始化工作;②集群计算过程中对已经发射并正处于计算状态的数据进行跟踪;③发射任务在监听到消息处理成功的信号时,清空缓存区中属于它的所有子元组的跟踪信息;④发射任务在监听到消息处理失败的信号时,定位产生处理失败的任务的位置和待恢复数据;⑤根据跟踪信息和xml文件构建消息恢复程序,然后从缓存区读取待恢复数据,执行消息恢复程序;⑥清空缓存区,释放内存空间。本发明在消息恢复时避免了复杂拓扑业务下存在的大规模重复计算,有效地减少消息恢复的计算量,从而提升整个业务场景下数据处理的性能,保证实时处理对低延迟的需求。
1.一种基于Storm实时流计算框架的消息可靠处理保障方法,其特征在于,包括以下步骤:
(1)用户创建工作流程序,根据该工作流程序的拓扑信息生成xml文件,并将该工作流程序发送到主节点,其中工作流程序包括多个发射任务、处理任务以及任务的上下游关系;
(2)主节点根据接收到的工作流程序生成拓扑程序,用于存储工作流任务,根据该拓扑程序创建缓存区,并将不同的工作流任务分配到对应的从节点执行,其中工作流任务包括发射任务或处理任务;
(3)从节点启动工作者进程判断来自主节点的工作流任务的类型是否为发射任务,如果是发射任务则进入步骤(4),否则持续等待下一个工作流任务,并重复步骤(3);
(4)发射任务读取工作流程序中指定的数据源中的流式数据,将其封装成根元组数据,并在根元组数据中新增哈希表,用于记录该根元组数据的位置信息;
(5)发射任务根据工作流程序中组件的上下游关系将根元组数据发射给其下游的处理任务,并发送该根元组数据的初始化信号到监控线程;
(6)监控线程在本地哈希表中创建并维护该根元组数据的监控信息;
(7)发射任务监听是否接收到来自监控线程的根元组数据的确认信号,如果接收到则判断确认信号的类型,当类型是处理成功信号时,清空步骤(2)中的缓存区记录的根元组数据所在元组树上所有子元组数据的跟踪信息;当类型是处理失败信号时,则根据缓存数据和确认信号定位出消息处理失败任务的位置,记录该位置到任务处理失败集合并将待恢复的数据写入缓存区中相应的消息队列中,然后清空缓存区中此根元组数据所在元组树上的已被处理的元组数据的跟踪信息,如果未接收到则进入步骤(8);
(8)从节点启动工作者进程判断来自主节点的工作流任务的类型是否为处理任务,如果是处理任务则进入步骤(9),否则返回步骤(3);
(9)处理任务对来自上游的元组数据进行处理,以生成新的元组数据,该新的元组数据是根元组数据所在元组树上的子元组,在子元组数据中新增哈希表记录子元组数据的位置信息;
(10)处理任务将来自上游的元组数据的跟踪信息写入步骤(2)中的缓存区;
(11)处理任务将新的元组数据发送给下游的处理任务,同时发送元组数据处理成功的确认信号到监控线程;
(12)监控线程将确认信号的值与本地哈希表中根元组数据的值进行异或运算,并判断异或运算的结果是否为0,如果为0,则发送根元组处理成功的确认信号给发射任务,然后返回步骤(7),否则进入步骤(13);
(13)下游的处理任务重复执行步骤(8)至(12),直到无工作流任务为止;
(14)监控线程检查本地哈希表中根元组数据的值,如果值不为0,则发送根元组处理失败的确认信号给发射任务,然后返回步骤(7),否则进入步骤(15);
(15)Storm集群完成处理流数据后,用户搭建恢复工作流程序并提交到Storm集群执行。
2.根据权利要求1所述的消息可靠处理保障方法,其特征在于,步骤(1)具体为,用户根据流处理应用的业务场景创建工作流程序,然后创建用于记录工作流程序的拓扑结构信息的xml文件,最后提交工作流程序到集群的主节点等待被处理。
3.根据权利要求1所述的消息可靠处理保障方法,其特征在于,步骤(2)具体为,主节点的服务端程序监听到用户提交工作流程序的请求后开始接收,接收结束后对原工作流程序进行封装,以生成Storm可以处理的拓扑程序,并启动监控线程,然后在计算开始前创建程序执行所需的缓存区,最后主节点将拓扑程序中记录的不同的工作流任务分配到对应的从节点。
4.根据权利要求1所述的消息可靠处理保障方法,其特征在于,元组数据跟踪信息包括:元组数据的数据值、处理任务的标识及根元组数据的标识。
5.根据权利要求1所述的消息可靠处理保障方法,其特征在于,步骤(15)具体包括以下子步骤:
(15-1)解析步骤(1)生成的xml文件,并读取工作流程序的任务;
(15-2)根据缓存区的任务处理失败集合中处理失败任务的位置信息创建消息恢复程序的工作流;
(15-3)将恢复工作流程序的发射任务的消息源设置为步骤(15-2)中从缓存区读到的处理任务对应的消息队列;
(15-4)提交消息恢复程序到Storm集群并执行恢复计算;
(15-5)判断任务处理失败集合是否为空,如果为空则进入步骤(15-6),否则说明仍有处理任务需要恢复处理,然后返回步骤(15-2);
(15-6)清空缓存区中的数据,并释放内存空间。
6.根据权利要求5所述的消息可靠处理保障方法,其特征在于,步骤(15-2)具体为,从缓存区读取任务处理失败集合中处理任务的信息,恢复程序中使用发射任务代替该处理任务,然后根据步骤(15-1)中解析出的xml记录的原工作流程序的拓扑结构信息确定剩余处理任务和各自的位置并重新构建恢复工作流程序,最后从任务处理失败集合中移除该处理任务的信息。
法律信息
- 2016-10-05
- 2014-04-30
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201310682070.5
申请日: 2013.12.13
- 2014-04-02
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2012-08-15
|
2012-03-19
| | |
2
| |
2013-09-18
|
2012-03-16
| | |
3
| |
2013-01-16
|
2012-10-23
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |