CN104038364A - 分布式流处理***的容错方法、节点及*** - Google Patents
分布式流处理***的容错方法、节点及*** Download PDFInfo
- Publication number
- CN104038364A CN104038364A CN201310754620.XA CN201310754620A CN104038364A CN 104038364 A CN104038364 A CN 104038364A CN 201310754620 A CN201310754620 A CN 201310754620A CN 104038364 A CN104038364 A CN 104038364A
- Authority
- CN
- China
- Prior art keywords
- group character
- node
- data
- stored
- carrying
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0677—Localisation of faults
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/069—Management of faults, events, alarms or notifications using logs of notifications; Post-processing of notifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/091—Measuring contribution of individual network components to actual service level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/22—Alternate routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/28—Routing or path finding of packets in data switching networks using route fault recovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/42—Centralised routing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Retry When Errors Occur (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式流处理***的容错方法、节点及***,属于计算机技术领域。该方法包括:获取失效节点的节点信息,并接收上游节点发送的重发数据,重发数据由源节点始发;根据失效节点的节点信息确定是否与失效节点相关;如果与失效节点相关,则处理接收到的重发数据,并发送至下游节点。本发明通过接收上游节点发送的重发数据,并在确定与失效节点相关后,处理接收到的重发数据,使得在与失效节点相关时才处理上游节点发送的重发数据,不仅不影响其它节点的数据处理效率,而且不需要在本地存储大量备份数据,从而节省了本地资源。另外,由于不需要与上游或下游其它节点频繁交互,因而提高了数据处理的效率。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种分布式流处理***的容错方法、节点及***。
背景技术
随着分布式计算技术在各个应用领域的不断扩展,分布式流处理***被广泛应用在众多领域,例如,金融管理、网络监视、通讯数据管理、WEB应用、传感器网络数据处理等。分布式流处理***是指采用分布式***处理数据流业务的互联网软件***,而分布式流处理***的容错是指在***内部出现故障的情况下,仍然能够向外部环境提供正确服务的能力。分布式流处理***的容错方法是增强***可靠性和可用性的主要手段,在***内的部分工作节点发生失效时,***能自动从失效中恢复过来,并且不会对分布式***整个应用***的正常运行产生严重影响。
现有技术中,应用于分布式流处理***的容错方法通常有如下几种:
(1)分布式流处理***采用集中式数据备份,具体为:在源节点备份数据,当***的流处理网络重新建好后,源节点对失效前的一段数据进行重发,***中的每个工作节点重新接收并处理源节点或上游各个工作节点重新发送的数据。(2)分布式流处理***采用分布式数据备份,具体为:***中的每个工作节点均备份前一段时间处理过的数据,当***的流处理网络重新建好后,***中的各个工作节点将备份的数据重新发送至下游的各个工作节点,下游的各个工作节点重新接收并处理上游各个工作节点重新发送的数据,并在成功接收上游工作节点重新发送的数据后,向上游工作节点发送数据处理完成消息。当上游工作节点收到下游工作节点的数据处理完成消息后,上游工作节点将备份的数据删除。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
针对上述第(1)种方法,当***的流处理网络重新建好后,***需要进行整网回退,由源节点重新发送数据,其它每个工作节点重新接收并处理源节点或上游工作节点重新发送的数据,导致整网的数据处理效率被拖低,影响数据处理效率的同时,浪费节点资源。针对上述第(2)种方法,每个工作节点均需要备份处理过的数据,存储开销大。另外,由于上游工作节点和下游工作节点需要进行频繁交互,导致数据处理效率低。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种分布式流处理***的容错方法、节点及***。所述技术方案如下:
第一方面,提供了一种分布式流处理***的容错方法,所述方法包括:
获取分布式流处理***中的失效节点的节点信息,并接收上游节点发送的重发数据,所述重发数据由源节点始发,所述上游节点为所述源节点或上游工作节点;
根据所述失效节点的节点信息确定是否与所述失效节点相关;
如果与所述失效节点相关,则处理接收到的重发数据,并发送至下游节点。
结合第一方面,在第一方面的第一种可能的实现方式中,所述获取所述分布式流处理***中失效节点的节点信息,包括:
接收集中管理实体发送的失效节点的节点信息,所述集中管理实体用于监控所述分布式流处理***中的各个节点的工作状况。
结合第一方面,在第一方面的第二种可能的实现方式中,所述根据所述失效节点的节点信息确定是否与所述失效节点相关,包括:
根据所述失效节点的节点信息查询预先存储的节点关联表,所述节点关联表中记录了所述分布式流处理***中的各个节点信息及对应的相关度;
根据查询结果确定是否与所述失效节点相关。
结合第一方面,在第一方面的第三种可能的实现方式中,所述处理接收到的重发数据,包括:
获取预先存储的状态信息,所述预先存储的状态信息至少包括当前的节点状态信息及后续处理数据所需的数据结果信息;
根据所述预先存储的状态信息处理接收到的重发数据。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述根据所述预先存储的状态信息处理接收到的重发数据之后,还包括:
接收所述上游节点发送的信号包,所述信号包中携带有分组标识,所述分组标识为源节点对流入的数据进行分组编号后添加到所述信号包中的;
根据当前接收到的信号包中携带的分组标识确定是否需要存储状态信息;
如果需要存储状态信息,则根据所述重发数据的处理结果存储状态信息。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述根据当前接收到的信号包中携带的分组标识确定是否需要存储状态信息,包括:
获取预先存储的分组标识,并确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的信号包中携带的分组标识;
判断当前接收到的信号包中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
如果当前接收到的信号包中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致,则确定需要存储状态信息。
结合第一方面的第三种可能的实现方式,在第一方面的第六种可能的实现方式中,所述上游节点发送的重发数据中携带有对应的分组标识,所述分组标识为源节点对所述重发数据进行分组编号后添加到所述重发数据中的;
所述根据所述预先存储的状态信息处理接收到的重发数据之后,还包括:
根据所述重发数据中携带的分组标识确定是否需要存储状态信息;
如果需要存储状态信息,则根据所述重发数据的处理结果存储状态信息。
结合第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,所述根据所述重发数据中携带的分组标识确定是否需要存储状态信息,包括:
获取预先存储的分组标识,并确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的数据中携带的分组标识;
判断所述重发数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
如果所述重发数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致,则确定需要存储状态信息。
结合第一方面,在第一方面的第八种可能的实现方式中,所述根据所述失效节点的节点信息确定是否与所述失效节点相关之后,还包括:
如果与所述失效节点不相关,则对接收到的重发数据不做处理。
结合第一方面的第八种可能的实现方式,在第一方面的第九种可能的实现方式中,所述对接收到的重发数据不做处理之后,还包括:
接收所述上游节点发送的其它数据,所述其它数据中携带有对应的分组标识,所述分组标识为源节点对所述其它数据进行分组编号后添加到所述其它数据中的;
获取预先存储的分组标识,并确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的数据中携带的分组标识;
判断所述其它数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
如果所述其它数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致,则对所述其它数据进行处理。
结合第一方面的第九种可能的实现方式,在第一方面的第十种可能的实现方式中,所述对所述其它数据进行处理之后,还包括:
获取预先存储的分组标识,并确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的数据中携带的分组标识;
判断所述其它数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
如果所述其它数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致,则确定需要存储状态信息,并根据所述其它数据的处理结果存储状态信息。
结合第一方面的第八种可能的实现方式,在第一方面的第十一种可能的实现方式中,所述对接收到的重发数据不做处理之后,还包括:
接收所述上游节点发送的信号包,所述信号包中携带有分组标识,所述分组标识为源节点对流入的数据进行分组编号后添加到所述信号包中的;
获取预先存储的分组标识,所述预先存储的分组标识为之前接收到的信号包中携带的分组标识;
判断当前接收到的信号包中携带的分组标识与所述预先存储的分组标识是否一致;
如果当前接收到的信号包中携带的分组标识与所述预先存储的分组标识一致,则对所述上游节点发送的后续数据进行处理。
结合第一方面的第十一种可能的实现方式,在第一方面的第十二种可能的实现方式中,所述对所述上游节点发送的后续数据进行处理之后,还包括:
获取预先存储的分组标识,并确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的信号包中携带的分组标识;
判断当前接收到的信号包中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
如果当前接收到的信号包中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致,则确定需要存储状态信息,并根据接收当前接收的信号包之前接收的其它数据的处理结果存储状态信息。
第二方面,提供了一种分布式流处理***的容错方法,所述方法包括:
获取分布式流处理***中的失效节点的节点信息;
根据所述失效节点的节点信息获取缓存的数据,并将缓存的数据作为重发数据发送至下游节点,由所述下游节点根据所述下游节点与所述失效节点是否相关来确定是否处理所述重发数据。
结合第二方面,在第二方面的第一种可能的实现方式中,所述获取分布式流处理***中的失效节点的节点信息,包括:
接收集中管理实体发送的失效节点的节点信息,所述集中管理实体用于监控所述分布式流处理***中的各个节点的工作状况。
结合第二方面,在第二方面的第二种可能的实现方式中,所述将缓存的数据作为重发数据发送至下游节点之后,还包括:
将流入的数据对应的分组标识添加到信号包中,将携带有分组标识的信号包发送至下游节点。
结合第二方面,在第二方面的第三种可能的实现方式中,所述将缓存的数据作为重发数据发送至下游节点,包括:
将缓存的数据作为重发数据,并将所述重发数据对应的分组标识添加到所述重发数据中,将携带有分组标识的重发数据发送至下游节点。
结合第二方面的第二种或第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述将缓存的数据作为重发数据发送至下游节点之前,还包括:
根据接收数据的时间间隔或数据大小对接收到的数据进行分组编号,得到每个数据对应的分组标识。
第三方面,提供了一种工作节点,所述工作节点包括:
第一获取模块,用于获取分布式流处理***中的失效节点的节点信息;
第一接收模块,用于接收上游节点发送的重发数据,所述重发数据由源节点始发,所述上游节点为源节点或上游工作节点;
第一确定模块,用于根据所述失效节点的节点信息确定是否与所述失效节点相关;
第一处理模块,用于当与所述失效节点相关时,处理接收到的重发数据,并发送至下游节点。
结合第三方面,在第三方面的第一种可能的实现方式中,所述第一获取模块,用于接收集中管理实体发送的失效节点的节点信息,所述集中管理实体用于监控所述分布式流处理***中的各个节点的工作状况。
结合第三方面,在第三方面的第二种可能的实现方式中,所述第一确定模块,包括:
查询单元,用于根据所述失效节点的节点信息查询预先存储的节点关联表,所述节点关联表中记录了所述分布式流处理***中的各个节点信息及对应的相关度;
确定单元,用于根据查询结果确定是否与所述失效节点相关。
结合第三方面,在第三方面的第三种可能的实现方式中,所述第一处理模块,包括:
获取单元,用于获取预先存储的状态信息,所述预先存储的状态信息至少包括当前的节点状态信息及后续处理数据所需的数据结果信息;
处理单元,用于根据所述预先存储的状态信息处理接收到的重发数据。
结合第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,所述工作节点,还包括:
第二接收模块,用于接收所述上游节点发送的信号包,所述信号包中携带有分组标识,所述分组标识为源节点对流入的数据进行分组编号后添加到所述信号包中的;
第二确定模块,用于根据当前接收到的信号包中携带的分组标识确定是否需要存储状态信息;
第一存储模块,用于当需要存储状态信息时,根据所述重发数据的处理结果存储状态信息。
结合第三方面的第四种可能的实现方式,在第三方面的第五种可能的实现方式中,所述第二确定模块,包括:
获取单元,用于获取预先存储的分组标识;
第一确定单元,用于确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的信号包中携带的分组标识;
判断单元,用于判断当前接收到的信号包中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
第二确定单元,用于当当前接收到的信号包中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致时,确定需要存储状态信息。
结合第三方面的第三种可能的实现方式,在第三方面的第六种可能的实现方式中,所述工作节点,还包括:
第三确定模块,用于当上游节点发送的重发数据中携带有对应的分组标识时,,根据所述重发数据中携带的分组标识确定是否需要存储状态信息,所述分组标识为源节点对所述重发数据进行分组编号后添加到所述重发数据中的;
第二存储模块,用于当需要存储状态信息时,根据所述重发数据的处理结果存储状态信息。
结合第三方面的第六种可能的实现方式,在第三方面的第七种可能的实现方式中,所述第三确定模块,包括:
获取单元,用于获取预先存储的分组标识;
第一确定单元,用于确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的数据中携带的分组标识;
判断单元,用于判断所述重发数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
第二确定单元,用于当所述重发数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致时,确定需要存储状态信息。
结合第三方面,在第三方面的第八种可能的实现方式中,所述工作节点,还包括:
第四确定模块,用于当确定与所述失效节点不相关时,对接收到的重发数据不做处理。
结合第三方面的第八种可能的实现方式,在第三方面的第九种可能的实现方式中,所述工作节点,还包括:
第三接收模块,用于接收所述上游节点发送的其它数据,所述其它数据中携带有对应的分组标识,所述分组标识为源节点对所述其它数据进行分组编号后添加到所述其它数据中的;
第二获取模块,用于获取预先存储的分组标识;
第五确定模块,用于确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的数据中携带的分组标识;
第一判断模块,用于判断所述其它数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
第二处理模块,用于当所述其它数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致时,对所述其它数据进行处理。
结合第三方面的第九种可能的实现方式,在第三方面的第十种可能的实现方式中,所述工作节点,还包括:
第三获取模块,用于获取预先存储的分组标识;
第六确定模块,用于确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的数据中携带的分组标识;
第二判断模块,用于判断所述其它数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
第七确定模块,用于当所述其它数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致时,确定需要存储状态信息;
第三存储模块,用于根据所述其它数据的处理结果存储状态信息。
结合第三方面的第八种可能的实现方式,在第三方面的第十一种可能的实现方式中,所述工作节点,还包括:
第四接收模块,用于接收所述上游节点发送的信号包,所述信号包中携带有分组标识,所述分组标识为源节点对流入的数据进行分组编号后添加到所述信号包中的;
第四获取模块,用于获取预先存储的分组标识,所述预先存储的分组标识为之前接收到的信号包中携带的分组标识;
第三判断模块,用于判断当前接收到的信号包中携带的分组标识与所述预先存储的分组标识是否一致;
第三处理模块,用于当当前接收到的信号包中携带的分组标识与所述预先存储的分组标识一致时,对所述上游节点发送的后续数据进行处理。
结合第三方面的第十一种可能的实现方式,在第三方面的第十二种可能的实现方式中,所述工作节点,还包括:
第五获取模块,用于获取预先存储的分组标识;
第八确定模块,用于确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的信号包中携带的分组标识;
第四判断模块,用于判断当前接收到的信号包中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
第九确定模块,用于当当前接收到的信号包中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致时,确定需要存储状态信息;
第四存储模块,用于根据接收当前接收的信号包之前接收的其它数据的处理结果存储状态信息。
第四方面,提供了一种源节点,所述源节点包括:
第一获取模块,用于获取分布式流处理***中的失效节点的节点信息;
第二获取模块,用于根据所述失效节点的节点信息获取缓存的数据;
发送模块,用于将缓存的数据作为重发数据发送至下游节点,由所述下游节点根据所述下游节点与所述失效节点是否相关来确定是否处理所述重发数据。
结合第四方面,在第四方面的第一种可能的实现方式中,所述第一获取模块用于接收集中管理实体发送的失效节点的节点信息,所述集中管理实体用于监控所述分布式流处理***中的各个节点的工作状况。
结合第四方面,在第四方面的第二种可能的实现方式中,所述发送模块,包括:
第一添加单元,用于将流入的数据对应的分组标识添加到信号包中;
第一发送单元,用于将携带有分组标识的信号包发送至下游节点。
结合第四方面,在第四方面的第三种可能的实现方式中,所述发送模块,包括:
第二添加单元,用于将缓存的数据作为重发数据,并将所述重发数据对应的分组标识添加到所述重发数据中;
第二发送单元,用于将携带有分组标识的重发数据发送至下游节点。
结合第四方面的第二种或第三种可能的实现方式,在第四方面的第四种可能的实现方式中,所述源节点,还包括:
分组编号模块,用于根据接收数据的时间间隔或数据大小对接收到的数据进行分组编号,得到每个数据对应的分组标识。
第五方面,提供了一种分布式流处理***的容错***,所述***包括:源节点和多个工作节点;
其中,所述工作节点如上述第三方面提供的节点;所述源节点如上述第四方面提供的源节点。
本发明实施例提供的技术方案带来的有益效果是:
通过接收上游节点发送的重发数据,并在确定与失效节点相关后,处理接收到的重发数据,使得在与失效节点相关时才处理上游节点发送的重发数据,不仅不影响其它节点的数据处理效率,而且不需要在本地存储大量备份数据,从而节省了本地资源。另外,由于不需要与上游或下游其它节点频繁交互,因而提高了数据处理的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例提供的一种分布式流处理***的容错方法的实施环境示意图;
图2是本发明实施例提供的一种分布式流处理***的容错***结构示意图;
图3是本发明实施例提供的一种分布式流处理***的流处理网络拓扑路由表的结构示意图;
图4是本发明实施例一提供的一种分布式流处理***的容错方法的方法流程图;
图5是本发明实施例一提供的另一种分布式流处理***的容错方法的流程图;
图6是本发明实施例二提供的一种分布式流处理***的容错方法的方法流程图;
图7是本发明实施例三提供的一种分布式流处理***的容错方法的方法流程图;
图8是本发明实施例四提供的一种工作节点的结构示意图;
图9是本发明实施例五提供的一种源节点的结构示意图;
图10是本发明实施例六提供的一种分布式流处理***的容错***的结构示意图;
图11是本发明实施例七提供的一种工作节点的结构示意图;
图12是本发明实施例八提供的一种源节点的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
如图1所示,其示出了本发明实施例提供的分布式流处理***的容错方法的实施环境结构示意图。该实施环境为一个分布式流处理***,包括源节点和多个工作节点。具体地,如图2所示,为了保证分布式流处理***的正常工作,图1所示的实施环境示意图中配置有收集流应用路由信息模块201、节点管理模块202和存储模块203。
其中,收集流应用路由信息模块201包括集中管理实体,集中管理实体用于监控该分布式流处理***中的各个工作节点以及源节点的工作状况。由于分布式流处理***加载应用的时候会涉及到分配相应的节点及之间的链路关系,因此,集中管理实体存储了该分布式流处理***对应的流处理网络拓扑路由表。如图3所示,其示出了一种流处理网络拓扑路由表的结构意图,该分布式流处理***中的各个工作节点根据该流处理网络拓扑路由表接收并处理由源节点流入的数据。
此外,集中管理实体还存储了备份节点表,该备份节点表存储了***中的各个工作节点的备份节点。当分布式流处理***中的某个工作节点失效后,集中管理实体可以控制备份节点顶替失效节点,保证该分布式流处理***可以快速恢复处理网络。其中,备份节点可以由集中管理实体初始化,后续可以根据***的负载均衡策略和调度策略进行动态调整。
结合图1,节点管理模块202用于管理图1所示的分布式流处理***中的一个源节点和多个工作节点。其中,源节点为分布式流处理***中数据流入的节点,工作节点为该分布式流处理***中除源节点之外的其它所有节点。在图1所示的分布式流处理***中,由源节点统一备份处理过的数据,各个工作节点以及源节点实时保存自己的状态信息。
本发明实施例中,在分布式流处理***正常运行的过程中,源节点对流入的数据进行标识,并按照时间间隔、数据块大小等条件周期性备份,然后将标识后的数据发送到下游节点。各个工作节点接收上游的源节点或上游的工作节点发送的数据,并根据数据的标识信息周期性地存储状态信息,该状态信息至少包括当前的节点状态信息和后续处理数据需要用到的数据结果信息。当该分布式流处理***中的某一工作节点失效后,源节点重发缓存的数据,和失效节点相关的工作节点重新处理所涉及的数据。另外,为了使集中管理实体可以实时监控***中的各个工作节点以及源节点的工作状况,各个工作节点以及源节点定时向集中管理实体上报心跳信息,告知工作状况。
存储模块203用于存储所有和容错相关的信息,包括流处理网络拓扑路由表,备份节点表,各个工作节点及源节点的状态信息等。其中,存储模块203包括但不限于可以通过两种形式实现:第一种是单点存储实体,即所有和容错相关的信息集中存储在某个节点;第二种是分布式存储实体,该存储方式是一种共享式的、多个节点协作式的存储方式。此外,本发明实施例不对存储模块203涉及的存储介质进行限定,存储介质可以是硬盘,也可以是内存等。
实施例一
结合上述内容,本发明实施例提供了一种分布式流处理***的容错方法。以分布式流处理***中的除源节点之外的某个工作节点执行该方法的角度为例,参见图4,本发明实施例提供的方法流程包括:
401:获取分布式流处理***中的失效节点的节点信息,并接收上游节点发送的重发数据,重发数据由源节点始发,上游节点为源节点或上游工作节点;
402:根据失效节点的节点信息确定是否与失效节点相关;
403:如果与失效节点相关,则处理接收到的重发数据,并发送至下游节点。
优选地,获取分布式流处理***中失效节点的节点信息,包括:
接收集中管理实体发送的失效节点的节点信息,集中管理实体用于监控分布式流处理***中的各个节点的工作状况。
优选地,根据失效节点的节点信息确定是否与失效节点相关,包括:
根据失效节点的节点信息查询预先存储的节点关联表,节点关联表中记录了分布式流处理***中的各个节点信息及对应的相关度;
根据查询结果确定是否与失效节点相关。
优选地,处理接收到的重发数据,包括:
获取预先存储的状态信息,预先存储的状态信息至少包括当前的节点状态信息及后续处理数据所需的数据结果信息;
根据预先存储的状态信息处理接收到的重发数据。
优选地,根据预先存储的状态信息处理接收到的重发数据之后,还包括:
接收上游节点发送的信号包,信号包中携带有分组标识,分组标识为源节点对流入的数据进行分组编号后添加到信号包中的;
根据当前接收到的信号包中携带的分组标识确定是否需要存储状态信息;
如果需要存储状态信息,则根据重发数据的处理结果存储状态信息。
优选地,根据当前接收到的信号包中携带的分组标识确定是否需要存储状态信息,包括:
获取预先存储的分组标识,并确定预先存储的分组标识对应的预设分组标识,预先存储的分组标识为之前接收到的信号包中携带的分组标识;
判断当前接收到的信号包中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致;
如果当前接收到的信号包中携带的分组标识与预先存储的分组标识对应的预设分组标识不一致,则确定需要存储状态信息。
优选地,上游节点发送的重发数据中携带有对应的分组标识,分组标识为源节点对重发数据进行分组编号后添加到重发数据中的;
根据预先存储的状态信息处理接收到的重发数据之后,还包括:
根据重发数据中携带的分组标识确定是否需要存储状态信息;
如果需要存储状态信息,则根据重发数据的处理结果存储状态信息。
优选地,根据重发数据中携带的分组标识确定是否需要存储状态信息,包括:
获取预先存储的分组标识,并确定预先存储的分组标识对应的预设分组标识,预先存储的分组标识为之前接收到的数据中携带的分组标识;
判断重发数据中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致;
如果重发数据中携带的分组标识与预先存储的分组标识对应的预设分组标识不一致,则确定需要存储状态信息。
优选地,根据失效节点的节点信息确定是否与失效节点相关之后,还包括:
如果与失效节点不相关,则对接收到的重发数据不做处理。
优选地,对接收到的重发数据不做处理之后,还包括:
接收上游节点发送的其它数据,其它数据中携带有对应的分组标识,分组标识为源节点对其它数据进行分组编号后添加到其它数据中的;
获取预先存储的分组标识,并确定预先存储的分组标识对应的预设分组标识,预先存储的分组标识为之前接收到的数据中携带的分组标识;
判断其它数据中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致;
如果其它数据中携带的分组标识与预先存储的分组标识对应的预设分组标识不一致,则对其它数据进行处理。
优选地,对其它数据进行处理之后,还包括:
获取预先存储的分组标识,并确定预先存储的分组标识对应的预设分组标识,预先存储的分组标识为之前接收到的数据中携带的分组标识;
判断其它数据中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致;
如果其它数据中携带的分组标识与预先存储的分组标识对应的预设分组标识不一致,则确定需要存储状态信息,并根据其它数据的处理结果存储状态信息。
优选地,对接收到的重发数据不做处理之后,还包括:
接收上游节点发送的信号包,信号包中携带有分组标识,分组标识为源节点对流入的数据进行分组编号后添加到信号包中的;
获取预先存储的分组标识,预先存储的分组标识为之前接收到的信号包中携带的分组标识;
判断当前接收到的信号包中携带的分组标识与预先存储的分组标识是否一致;
如果当前接收到的信号包中携带的分组标识与预先存储的分组标识一致,则对上游节点发送的后续数据进行处理。
优选地,对上游节点发送的后续数据进行处理之后,还包括:
获取预先存储的分组标识,并确定预先存储的分组标识对应的预设分组标识,预先存储的分组标识为之前接收到的信号包中携带的分组标识;
判断当前接收到的信号包中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致;
如果当前接收到的信号包中携带的分组标识与预先存储的分组标识对应的预设分组标识不一致,则确定需要存储状态信息,并根据接收当前接收的信号包之前接收的其它数据的处理结果存储状态信息。
以分布式流处理***中的源节点执行该方法的角度为例,参见图5,本发明实施例提供的方法流程包括:
501:获取分布式流处理***中的失效节点的节点信息;
502:根据失效节点的节点信息获取缓存的数据,并将缓存的数据作为重发数据发送至下游节点,由下游节点根据下游节点与失效节点是否相关来确定是否处理重发数据。
优选地,获取分布式流处理***中的失效节点的节点信息,包括:
接收集中管理实体发送的失效节点的节点信息,集中管理实体用于监控分布式流处理***中的各个节点的工作状况。
优选地,将缓存的数据作为重发数据发送至下游节点之后,还包括:
将流入的数据对应的分组标识添加到信号包中,将携带有分组标识的信号包发送至下游节点。
优选地,将缓存的数据作为重发数据发送至下游节点,包括:
将缓存的数据作为重发数据,并将重发数据对应的分组标识添加到重发数据中,将携带有分组标识的重发数据发送至下游节点。
优选地,将缓存的数据作为重发数据发送至下游节点之前,还包括:
根据接收数据的时间间隔或数据大小对接收到的数据进行分组编号,得到每个数据对应的分组标识。
本发明实施例提供的方法,通过接收上游节点发送的重发数据,并在确定与失效节点相关后,处理接收到的重发数据,使得在与失效节点相关时才处理上游节点发送的重发数据,不仅不影响其它节点的数据处理效率,而且不需要在本地存储大量备份数据,从而节省了本地资源。另外,由于不需要与上游或下游其它节点频繁交互,因而提高了数据处理的效率。
实施例二
结合图1所示的实施环境结构示意图、图2所示的分布式流处理***的结构示意图和上述实施例一的内容,本发明实施例提供了一种分布式流处理***的容错方法。为了便于说明,本发明实施例以分布式流处理***中的一个工作节点失效后,源节点在发送重发数据时,根据接收的数据的时间间隔或数据大小对流入的数据进行分组编号,得到每个数据对应的分组标识,并将该分组标识添加到信号包中发送给下游节点,使得下游节点在接收信号包后根据信号包中携带的分组标识进行状态信息存储为例,对本实施例提供的方法进行详细地解释说明。参见图6,本发明实施例提供的方法流程包括:
601:源节点和工作节点获取分布式流处理***中的失效节点的节点信息。
其中,源节点和工作节点获取分布式流处理***中的失效节点的节点信息的方式,可以有多种。由于该分布式流处理***中的集中管理实体可以监控该分布式流处理***中各个节点的工作状况,且各个节点需要定时向集中管理实体上报心跳信息。因此,集中管理实体可以根据各个节点上报的心跳信息实时获取该分布式流处理***中的失效节点的节点信息,并且可以在获取到失效节点的节点信息后将该失效节点的节点信息广播给该分布式流处理***中的源节点和各个工作节点。因此,源节点和工作节点获取分布式流处理***中的失效节点的节点信息可以通过接收集中管理实体发送的失效节点的节点信息来实现。当然,源节点和工作节点也可以通过其它方式来获取分布式流处理***中的失效节点的节点信息,本发明实施例对此不作具体限定。
602:源节点根据失效节点的节点信息获取缓存的数据,并将缓存的数据作为重发数据发送至下游节点。
在分布式流流处理***中,当某一节点失效后,该分布式流处理***可以采取一些措施使***恢复正常工作,从而不影响***进行正常地数据处理。为了保证从失效节点失效到***恢复正常的这段时间内,各个工作节点不会因漏处理数据而使数据处理过程出现错误。因此,当***恢复正常工作后,源节点需要根据失效节点的节点信息获取缓存的数据,并将缓存的数据作为重发数据发送至下游节点。本发明实施例对源节点根据失效节点的节点信息获取缓存的数据以及将缓存的数据作为重发数据发送至下游节点的方式不作具体限定。
其中,分布式流处理***可以采取很多措施来使该***恢复正常工作,例如,可以由***中的集中管理实体控制失效节点的备份节点取代失效节点来继续处理数据;也可以将失效节点的功能迁移到其它工作节点,并在***的流处理网络拓扑路由表刷新后开始继续处理数据;还可以是在失效节点重新启动之后继续处理数据。
优选地,为了在发送重发数据时,便于对重发数据进行管理,以及为了使下游节点后续可以根据源节点发送的重发数据中的分组情况存储状态信息,源节点在将缓存的数据作为重发数据发送至下游节点之前,还包括:根据接收数据的时间间隔或数据大小对接收到的数据进行分组编号,得到每个数据对应的分组标识。另外,为了使下游节点能够很好地区分接收的数据来自于源节点发送的重发数据的哪个分组,源节点将缓存的数据作为重发数据发送至下游节点之后,还包括:将流入的数据对应的分组标识添加到信号包中,将携带有分组标识的信号包发送至下游节点。具体地,源节点在每发完一组数据之后,向下游节点发送一个携带该组数据的分组标识的信号包。因此,当下游节点接收到该信号包后,即可根据该信号包中携带的分组标识获得上一段时间接收的重发数据的分组标识。另外,本发明实施例对源节点将流入的数据对应的分组标识添加到信号包中的方式以及将携带有分组标识的信号包发送至下游节点的方式不作具体限定。
关于源节点根据接收数据的时间间隔或数据大小对接收到的数据进行分组编号的具体实现方法,本发明实施例不作具体限定。具体实施时,当源节点根据时间间隔来为接收的数据进行分组编号时,可以设置一个固定时间间隔,并将每个固定时间间隔内接收的数据分为一组。例如,源节点可以设置10min(分钟)为一个固定时间间隔。在接收数据时,将前10min接收的数据分为第一组,将10min至20min接收的数据分为第二组等等。当源节点根据数据大小来为接收的数据进行分组编号时,可以在接收数据之前,设置每组数据包含的数据的大小,例如,可以设置每组数据包含10个数据。因此,在接收数据时,可以对接收的每个数据进行编号,并将编号为1-10的数据分为第一组,以此类推。例如,可以将接收的前100个数据分别编号为1-100,然后将编号为1-10的数据分为第一组,将编号为11-20的数据分为第二组等等。当然,源节点还可以采用其它方法对接收的数据进行分组编号,本发明实施例对此不作具体限定。
603:工作节点接收上游节点发送的重发数据。
当源节点发送重发数据后,工作节点接收上游节点发送的重发数据。关于工作节点接收上游节点发送的重发数据的方式,本发明实施例不作具体限定。另外,当源节点在发送重发数据时,对发送的重发数据进行分组标识,并在发完每组数据之后,发送了携带该组数据的分组标识的信号包,则工作节点在接收源节点发送的重发数据之后,也将接收源节点发送的信号包。
需要说明的是,如果该工作节点为源节点之下的第一级节点,则该工作节点的上游节点即为源节点;如果该工作节点为源节点之下的第二级节点或第二级以后的其它级节点,则该上游节点为该网络拓扑路由表中该工作节点的上一级工作节点。
604:工作节点根据失效节点的节点信息确定是否与失效节点相关,如果与失效节点相关,则执行步骤605;如果与失效节点不相关,则执行步骤607。
由于本发明实施例提供的方法支持当该分布式流处理***中出现失效节点后,与失效节点相关的工作节点需要重新处理源节点发送的重发数据,而与失效节点不相关的工作节点则不需要处理源节点发送的重发数据。因此,工作节点接收上游节点发送的重发数据后,需要根据失效节点的节点信息确定是否与失效节点相关。
具体地,在分布式流处理***中,当失效节点为工作节点的一级或多级下游节点时,则工作节点确定失效节点和自己相关,否则,工作节点确定失效节点和自己不相关。其中,工作节点根据失效节点的节点信息确定是否与失效节点相关的方式可以有很多种,具体实施时,包括但不限于采用如下方式:
根据失效节点的节点信息查询预先存储的节点关联表,根据查询结果确定是否与失效节点相关。其中,节点关联表中记录了工作节点与分布式流处理***中的其它各个节点的节点信息及对应的相关度。为了便于对节点关联表进行解释说明,结合图3所示的流处理网络拓扑路由表来进行说明。在图3中,编号为1的节点为源节点,节点2-6为其它节点。假设工作节点为节点2,则根据图3获得的工作节点与该分布式流处理***中的其它各个节点的节点关联表如表一所示。在表一中,相关度为0表示该节点与工作节点不相关,相关度为1表示失效节点和工作节点相关,N/A表示工作节点与节点编号对应的节点无拓扑关系。
表一
节点编号 | 相关度 | 流编号 |
1 | 0 | N/A |
3 | 1 | S2 |
4 | 0 | N/A |
5 | 1 | S4 |
6 | 1 | S2 |
当失效节点为节点3时,由表一可知,由于工作节点2与节点3的相关度为1,则确定与失效节点相关;当失效节点为节点4时,由于工作节点2与节点4的相关度为0,则工作节点2确定与失效节点不相关。
当然,工作节点除采用上述方式确定是否与失效节点相关外,还可以采用其它方式。例如,也可以从流处理网络拓扑路由表中提取是否与失效节点相关的信息。其中,从流处理网络拓扑路由表中提取是否与失效节点相关的信息的节点可以是工作节点自身,也可以是其它工作节点在提取到是否与失效节点相关的节点信息后将该节点信息发送给工作节点,本发明实施例对此不作具体限定。
605:工作节点处理接收到的重发数据,并将处理后的重发数据发送至下游节点。
当通过步骤604确定和失效节点相关后,工作节点需要处理接收到的重发数据,并在处理完成后,将处理后的重发数据发送至下游节点。关于工作节点处理接收到的重发数据以及将处理后的重发数据发送至下游节点的方式,本发明实施例不作具体限定。
由于在分布式流处理***中,各个工作节点在处理数据时,均会获得一个数据处理结果,因此,各个工作节点在向下游节点发送重发数据时,会将数据处理结果一并发送至下游节点,使下游节点可以根据该数据处理结果继续处理数据。此外,工作节点在处理数据时,也需要在上游节点发送的数据处理结果的基础上继续处理数据。在本发明实施例中,为了保证能够方便快捷地处理重发数据,工作节点可以实时存储状态信息,该状态信息中包括但不限于当前的节点状态信息及后续处理数据所需的数据结果信息。具体地,工作节点可以在每接收完一组数据之后,存储一次状态信息,保证后续工作节点即可以在之前存储的状态信息的基础上继续处理重发数据。因此,工作节点在处理接收到的重发数据时,可以获取预先存储的状态信息,根据预先存储的状态信息处理接收到的重发数据。其中,状态信息中包括的当前的节点状态信息包括但不限于可以为相连的上游节点、下游节点以及工作节点自身的节点配置信息等。
为了便于对上述工作节点根据预先存储的状态信息处理接收到的重发数据进行解释说明,下面以一个具体的例子对上述过程进行说明。具体地,如果源节点发送的每个重发数据中包含数量不等的计数单元,各个节点的任务是统计数据中包含的计数单元的总个数,且各节点在处理数据中包含的计数单元时,可能会合并或删减计数单元的个数。在这种情况下,工作节点在对接收的重发数据进行处理时,需要在上游节点统计的计数单元的基础上进行统计。在本发明实施例中,为了便于对工作节点的数据处理结果进行统计,工作节点每处理一些数据即存储一次状态信息,后续处理重发数据时,即可在该状态信息中包括的后续处理数据需要用到的数据结果信息的基础上继续处理数据。例如,工作节点可以每处理一组数据,即存储一次状态信息,并在处理下一组数据时,在存储的上一组数据的状态信息的基础上继续进行数据处理。因此,工作节点在处理重发数据时,可以获取上次存储的状态信息中统计的计数单元的个数,并在此计数单元的基础上继续处理数据。
606:工作节点接收上游节点发送的信号包,根据当前接收到的信号包中携带的分组标识确定是否需要存储状态信息,如果需要进行状态存储,则根据重发数据的处理结果存储状态信息,流程结束。
由于状态信息中至少包括当前的节点状态信息及后续处理数据所需的数据结果信息,因此,工作节点需要实时进行状态存储,以保证后续节点能够正常处理数据。又由于如果工作节点对接收的每个数据均进行状态存储的话,会浪费工作节点自身的很多资源,因此,本发明实施例提供的方法支持根据源节点对数据进行的分组情况存储状态信息,并且每处理完一组数据后,存储一次状态信息。由于在该实施例中,源节点通过向下游节点发送携带分组标识的信号包来标识接收的数据的分组情况,所以工作节点可以接收上游节点发送的信号包,根据当前接收到的信号包中携带的分组标识确定是否需要存储状态信息。其中,工作节点根据当前接收到的信号包中携带的分组标识确定是否需要存储状态信息的方式可以有很多种,包括但不限于通过如下方式来实现:
获取预先存储的分组标识,并确定预先存储的分组标识对应的预设分组标识,该预先存储的分组标识为之前接收到的信号包中携带的分组标识;判断当前接收到的信号包中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致;如果当前接收到的信号包中携带的分组标识与预先存储的分组标识对应的预设分组标识不一致,则确定需要存储状态信息。其中,预先存储的分组标识对应的预设分组标识可以为预先存储的分组标识对应的下一个分组标识。例如,预先存储的分组标识为1,如果该分组标识1对应的下一个分组标识为2,则预先存储的分组标识1对应的预设分组标识为分组标识2。
为了便于对上述工作节点根据当前接收到的信号包中携带的分组标识确定是否需要存储状态信息的方式进行解释说明,下面将举例进行说明。
例如,如果工作节点获取预先存储的分组标识,并确定预先存储的分组标识对应的预设分组标识为3,此时,如果工作节点当前接收到的信号包中携带的分组标识为4。由于当前接收到的信号包中携带的分组标识与获取到的预先存储的分组标识对应的预设分组标识3不一致,因此,为了便于对已经接收的第4组数据的处理结果进行存储,工作节点此时需要存储状态信息,以便后续可以在对第4组数据的处理结果上继续处理后续接收到的重发数据。
607:工作节点对接收到的重发数据不做处理,并接收上游节点发送的其它数据,该其它数据包括携带分组标识的信号包。
其中,如果工作节点确定和失效节点不相关,则对接收到的重发数据不做处理,以节省工作节点自身的节点资源。另外,为了节省工作节点自身的存储空间,工作节点可以丢弃接收的重发数据。
由于源节点不断有数据流入,所以源节点除了发送从***中存在失效节点到***重建好这段时间的重发数据之外,还需要发送流入的其它数据,并且源节点对流入的其它数据也会进行分组标识,且在本发明实施例中,源节点在发送其它数据之前,同样以对流入的数据进行分组编号后将对应的分组标识添加到信号包中的方式,即源节点在每发完一组数据之后,发送一个用以表明该组数据的分组标识的信号包来使下游节点明确处理的数据的分组状况。
608:工作节点获取预先存储的分组标识,并确定预先存储的分组标识对应的预设分组标识,判断当前接收到的信号包中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致。
为了保证处理的数据不重不漏,工作节点需要获取预先存储的分组标识,并确定预先存储的分组标识对应的预设分组标识。工作节点在确定预先存储的分组标识对应的预设分组标识后,通过判断当前接收到的信号包中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致来确定是否对后续接收到的是其它数据进行处理,具体参见步骤609。
609:如果当前接收到的信号包中携带的分组标识与预先存储的分组标识对应的预设分组标识一致,则对上游节点发送的后续数据进行处理。
结合上个步骤,如果当前接收到的信号包中携带的分组标识与预先存储的分组标识对应的预设分组标识一致,则说明工作节点后续将会接收上游节点发送的下一组数据,因此,工作节点对上游节点发送的后续数据进行处理。
例如,当工作节点获取到的预先存储的分组标识对应的预设分组标识为3,表明工作节点之前已经处理至第3组数据,即表明工作节点已经处理完成第3组数据。如果工作节点当前接收到的信号包中携带的分组标识为3时,表明上游节点已经发送完第3组数据,将会发送第4组数据。因此,工作节点将会对上游节点发送的后续数据进行处理。
优选地,对上游节点发送的后续数据进行处理之后,为了对后续处理的数据的状态信息进行实时存储,还可以包括:获取预先存储的分组标识,并确定预先存储的分组标识对应的预设分组标识,该预先存储的分组标识为之前接收到的信号包中携带的分组标识;判断当前接收到的信号包中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致;如果当前接收到的信号包中携带的分组标识与预先存储的分组标识对应的预设分组标识不一致,则确定需要存储状态信息,并根据接收当前接收的信号包之前接收的其它数据的处理结果存储状态信息。
其中,上述工作节点确定是否对后续处理的数据进行状态信息存储的方法以及对后续数据进行状态信息存储的原理同步骤606中工作节点确定是否对重发数据进行状态信息存储以及对重发数据进行状态信息的原理相同,具体参见上述步骤606中的内容,在此不再赘述。
本发明实施例提供的方法,通过接收上游节点发送的重发数据,并在确定与失效节点相关后,处理接收到的重发数据,使得在与失效节点相关时才处理上游节点发送的重发数据,不仅不影响其它节点的数据处理效率,而且不需要在本地存储大量备份数据,从而节省了本地资源。另外,由于不需要与上游或下游其它节点频繁交互,因而提高了数据处理的效率。
实施例三
结合图1所示的实施环境的结构示意图、图2所示的分布式流处理***的结构示意图和上述实施例一及实施例二的内容,本发明实施例提供了一种分布式流处理***的容错方法。为了便于说明,本发明实施例以分布式流处理***中的一个工作节点失效后,源节点在发送重发数据时,对重发数据进行分组编号后添加到重发数据中,使得下游节点在接收该携带分组编号的数据后,可以根据数据中携带的分组编号进行状态信息存储为例,对本实施例提供的方法进行详细地解释说明。参见图7,本发明实施例提供的方法流程包括:
701:源节点和工作节点获取分布式流处理***中的失效节点的节点信息。
该步骤的原理同上述实施例二中步骤601的原理一致,具体参见上述实施例二中步骤601,在此不再赘述。
702:源节点根据失效节点的节点信息获取缓存的数据,并将缓存的数据作为重发数据发送至下游节点。
该步骤的原理同上述实施例二中步骤602的原理一致,具体参见上述实施例二中步骤602,在此不再赘述。
需要说明的是,在本发明实施例中,源节点将缓存的数据作为重发数据发送至下游节点时,将缓存的数据作为重发数据,并将重发数据对应的分组标识添加到重发数据中,将携带有分组标识的重发数据发送至下游节点。
具体地,源节点在对流入的数据进行分组后,直接将该分组标识添加到发送的每个重发数据中。因此,下游节点在接收上游节点发送的每个重发数据时,均可以从重发数据携带的分组标识中获得该数据对应的分组编号。
703:工作节点接收上游节点发送的重发数据。
该步骤的原理同上述实施例二中步骤603的原理一致,具体参见上述实施例二中步骤603,在此不再赘述。
704:工作节点根据失效节点的节点信息确定是否与失效节点相关,如果与失效节点相关,则执行步骤705;如果与失效节点不相关,则执行步骤707。
该步骤的原理同上述实施例二中步骤604的原理一致,具体参见上述实施例二中步骤604,在此不再赘述。
705:工作节点处理接收到的重发数据,并将处理后的重发数据发送至下游节点。
该步骤的原理同上述实施例二中步骤605的原理一致,具体参见上述实施例二中步骤605,在此不再赘述。
706:工作节点根据重发数据中携带的分组标识确定是否需要存储状态信息,如果需要存储状态信息,则根据重发数据的处理结果存储状态信息,流程结束。
具体地,当源节点对重发数据进行分组编号后将分组编号添加到重发数据中时,上游节点发送的重发数据中携带有对应的分组标识,则工作节点根据重发数据中携带的分组标识确定是否需要存储状态信息,包括:
获取预先存储的分组标识,并确定预先存储的分组标识对应的预设分组标识,判断重发数据中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致;如果重发数据中携带的分组标识与预先存储的分组标识对应的预设分组标识不一致,则确定需要存储状态信息。
例如,当工作节点确定获取到的预先存储的分组标识对应的预设分组标识为3,表明工作节点已经处理过第3组数据,此时,如果重发数据中携带的分组标识为4,表明当前接收的数据为第4组,为了对处理的第3组数据进行统计,工作节点此时需要存储状态信息,该状态信息包括当前的节点状态信息及后续处理第4组数据所需的数据结果信息。
707:工作节点对接收到的重发数据不做处理,并接收上游节点发送的其它数据,该其它数据中携带有对应的分组标识。
其中,如果工作节点确定和失效节点不相关,则对接收到的重发数据不做处理,以节省工作节点自身的节点资源。另外,为了节省工作节点自身的存储空间,工作节点可以丢弃接收的重发数据。
由于源节点不断有数据流入,所以源节点除发送从***中存在失效节点到***重建好这段时间的重发数据之外,还需要发送流入的其它数据,并且源节点对流入的其它数据也会进行分组标识。在本发明实施例中,源节点在发送其它数据时,将对其它数据的分组标识直接添加在其它数据中发送至下游节点。因此,工作节点接收上游节点发送的其它数据后,可以直接从其它数据中获得其它数据的分组编号。
708:工作节点获取预先存储的分组标识,并确定预先存储的分组标识对应的预设分组标识,判断其它数据中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致。
该步骤的原理同上述实施例二中步骤608的原理一致,具体参见上述实施例二中步骤608,在此不再赘述。
709:如果其它数据中携带的分组标识与预先存储的分组标识对应的预设分组标识不一致,则对其它数据进行处理。
结合上个步骤,如果当前接收到的其它数据中携带的分组标识与预先存储的分组标识对应的预设分组标识部不一致,则说明工作节点当前接收的数据为上游节点发送的下一组数据。因此,工作节点对上游节点发送的其它数据进行处理。
例如,当获取到的预先存储的分组标识对应的预设分组标识为3,表明工作节点之前已经处理至第3组数据。如果工作节点当前接收到的其它数据中携带的分组标识为2,由于工作节点获取到的预先存储的分组标识对应的预设分组标识为3,表明工作节点已经处理至第3组数据,如果再处理第2组数据的话,会造成重复处理,从而浪费节点资源,因此,对接收的其它数据不做处理。如果工作节点当前接收到的其它数据中携带的分组标识为4时,表明此时接收的其它数据为上游节点发送的第4组数据。此时,由于工作节点根据获取到的预先存储的分组标识对应的预设分组标识表明当前只处理至第3组数据,因此,为了使数据处理过程不会漏掉数据,工作节点对上游节点发送的其它数据进行处理。
优选地,对其它数据进行处理之后,为了实时存储其它数据的状态信息,还可以包括:获取预先存储的分组标识,并确定预先存储的分组标识对应的预设分组标识,该预先存储的分组标识为之前接收到的数据中携带的分组标识;判断其它数据中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致;如果其它数据中携带的分组标识与预先存储的分组标识对应的预设分组标识不一致,则确定需要存储状态信息,并根据后续数据的处理结果存储状态信息。
其中,上述工作节点确定是否对处理的其它数据进行状态信息存储的方法以及对其它数据进行状态信息存储的原理同步骤706中工作节点确定是否对重发数据进行状态信息存储以及对重发数据进行状态信息的原理相同,具体参见上述步骤706中的内容,在此不再赘述。
本发明实施例提供的方法,通过接收上游节点发送的重发数据,并在确定与失效节点相关后,处理接收到的重发数据,使得在与失效节点相关时才处理上游节点发送的重发数据,不仅不影响其它节点的数据处理效率,而且不需要在本地存储大量备份数据,从而节省了本地资源。另外,由于不需要与上游或下游其它节点频繁交互,因而提高了数据处理的效率。
实施例四
本发明实施例提供了一种工作节点,该工作节点用于执行上述实施例一至实施例三中工作节点执行的功能。参见图8,该工作节点包括:
第一获取模块801,用于获取分布式流处理***中的失效节点的节点信息;
第一接收模块802,用于接收上游节点发送的重发数据,重发数据由源节点始发,上游节点为源节点或上游工作节点;
第一确定模块803,用于根据失效节点的节点信息确定是否与失效节点相关;
第一处理模块804,用于当与失效节点相关时,处理接收到的重发数据,并发送至下游节点。
优选地,第一获取模块801,用于接收集中管理实体发送的失效节点的节点信息,集中管理实体用于监控分布式流处理***中的各个节点的工作状况。
优选地,第一确定模块803,包括:
查询单元,用于根据失效节点的节点信息查询预先存储的节点关联表,节点关联表中记录了分布式流处理***中的各个节点信息及对应的相关度;
确定单元,用于根据查询结果确定是否与失效节点相关。
优选地,第一处理模块804,包括:
获取单元,用于获取预先存储的状态信息,预先存储的状态信息至少包括当前的节点状态信息及后续处理数据所需的数据结果信息;
处理单元,用于根据预先存储的状态信息处理接收到的重发数据。
优选地,工作节点,还包括:
第二接收模块,用于接收上游节点发送的信号包,信号包中携带有分组标识,分组标识为源节点对流入的数据进行分组编号后添加到信号包中的;
第二确定模块,用于根据当前接收到的信号包中携带的分组标识确定是否需要存储状态信息;
第一存储模块,用于当需要存储状态信息时,根据重发数据的处理结果存储状态信息。
优选地,第二确定模块,包括:
获取单元,用于获取预先存储的分组标识;
第一确定单元,用于确定预先存储的分组标识对应的预设分组标识,预先存储的分组标识为之前接收到的信号包中携带的分组标识;
判断单元,用于判断当前接收到的信号包中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致;
第二确定单元,用于当当前接收到的信号包中携带的分组标识与预先存储的分组标识对应的预设分组标识不一致时,确定需要存储状态信息。
优选地,工作节点,还包括:
第三确定模块,用于当上游节点发送的重发数据中携带有对应的分组标识时,根据重发数据中携带的分组标识确定是否需要存储状态信息,分组标识为源节点对重发数据进行分组编号后添加到重发数据中的;
第二存储模块,用于当需要存储状态信息时,根据重发数据的处理结果存储状态信息。
优选地,第三确定模块,包括:
获取单元,用于获取预先存储的分组标识;
第一确定单元,用于确定预先存储的分组标识对应的预设分组标识,预先存储的分组标识为之前接收到的数据中携带的分组标识;
判断单元,用于判断重发数据中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致;
第二确定单元,用于当重发数据中携带的分组标识与预先存储的分组标识对应的预设分组标识不一致时,确定需要存储状态信息。
优选地,工作节点,还包括:
第四确定模块,用于当确定与失效节点不相关时,对接收到的重发数据不做处理。
优选地,工作节点,还包括:
第三接收模块,用于接收上游节点发送的其它数据,其它数据中携带有对应的分组标识,分组标识为源节点对其它数据进行分组编号后添加到其它数据中的;
第二获取模块,用于获取预先存储的分组标识;
第五确定模块,用于确定预先存储的分组标识对应的预设分组标识,预先存储的分组标识为之前接收到的数据中携带的分组标识;
第一判断模块,用于判断其它数据中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致;
第二处理模块,用于当其它数据中携带的分组标识与预先存储的分组标识对应的预设分组标识不一致时,对其它数据进行处理。
优选地,工作节点,还包括:
第三获取模块,用于获取预先存储的分组标识;
第六确定模块,用于确定预先存储的分组标识对应的预设分组标识,预先存储的分组标识为之前接收到的数据中携带的分组标识;
第二判断模块,用于判断其它数据中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致;
第七确定模块,用于当其它数据中携带的分组标识与预先存储的分组标识对应的预设分组标识不一致时,确定需要存储状态信息;
第三存储模块,用于根据其它数据的处理结果存储状态信息。
优选地,工作节点,还包括:
第四接收模块,用于接收上游节点发送的信号包,信号包中携带有分组标识,分组标识为源节点对流入的数据进行分组编号后添加到信号包中的;
第四获取模块,用于获取预先存储的分组标识,预先存储的分组标识为之前接收到的信号包中携带的分组标识;
第三判断模块,用于判断当前接收到的信号包中携带的分组标识与预先存储的分组标识是否一致;
第三处理模块,用于当当前接收到的信号包中携带的分组标识与预先存储的分组标识一致时,对上游节点发送的后续数据进行处理。
优选地,工作节点,还包括:
第五获取模块,用于获取预先存储的分组标识;
第八确定模块,用于确定预先存储的分组标识对应的预设分组标识,预先存储的分组标识为之前接收到的信号包中携带的分组标识;
第四判断模块,用于判断当前接收到的信号包中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致;
第九确定模块,用于当当前接收到的信号包中携带的分组标识与预先存储的分组标识对应的预设分组标识不一致时,确定需要存储状态信息;
第四存储模块,用于根据接收当前接收的信号包之前接收的其它数据的处理结果存储状态信息。
本发明实施例提供的工作节点,通过接收上游节点发送的重发数据,并在确定与失效节点相关后,处理接收到的重发数据,使得在与失效节点相关时才处理上游节点发送的重发数据,不仅不影响其它节点的数据处理效率,而且不需要在本地存储大量备份数据,从而节省了本地资源。另外,由于不需要与上游或下游其它节点频繁交互,因而提高了数据处理的效率。
实施例五
本发明实施例提供了一种源节点,该源节点用于执行上述实施例一至实施例三中源节点执行的功能。参见图9,该源节点包括:
第一获取模块901,用于获取分布式流处理***中的失效节点的节点信息;
第二获取模块902,用于根据失效节点的节点信息获取缓存的数据;
发送模块903,用于将缓存的数据作为重发数据发送至下游节点,由下游节点根据下游节点与失效节点是否相关来确定是否处理重发数据。
优选地,第一获取模块901,用于接收集中管理实体发送的失效节点的节点信息,集中管理实体用于监控分布式流处理***中的各个节点的工作状况。
优选地,发送模块903,包括:
第一添加单元,用于将流入的数据对应的分组标识添加到信号包中;
第一发送单元,用于将携带有分组标识的信号包发送至下游节点。
优选地,发送模块903,包括:
第二添加单元,用于将缓存的数据作为重发数据,并将重发数据对应的分组标识添加到重发数据中;
第二发送单元,用于将携带有分组标识的重发数据发送至下游节点。
优选地,源节点,还包括:
分组编号模块,用于根据接收数据的时间间隔或数据大小对接收到的数据进行分组编号,得到每个数据对应的分组标识。
本发明实施例提供的源节点,通过根据失效节点的节点信息获取缓存的数据,并将缓存的数据作为重发数据发送至下游的工作节点,使得工作节点接收上游节点发送的重发数据,并在确定与失效节点相关后,处理接收到的重发数据,使得在与失效节点相关时才处理上游节点发送的重发数据,不仅不影响其它节点的数据处理效率,而且不需要在本地存储大量备份数据,从而节省了本地资源。另外,由于不需要与上游或下游其它节点频繁交互,因而提高了数据处理的效率。
实施例六
本发明实施例提供了一种分布式流处理的容错***,参见图10,该***包括:源节点和多个工作节点;
其中,***中的任一工作节点如上述实施例四提供的工作节点,具体参见上述实施例四的内容,在此不再赘述;
源节点如上述实施例五提供的工作节点,具体参见上述实施例五的内容,在此不再赘述。
本发明实施例提供的***,通过接收上游节点发送的重发数据,并在确定与失效节点相关后,处理接收到的重发数据,使得在与失效节点相关时才处理上游节点发送的重发数据,不仅不影响其它节点的数据处理效率,而且不需要在本地存储大量备份数据,从而节省了本地资源。另外,由于不需要与上游或下游其它节点频繁交互,因而提高了数据处理的效率。
实施例七
图11为一个实施方式中工作节点的结构示意图,该工作节点包括至少一个处理器1101、发射机1102和接收机1103。
其中:处理器1101,用于获取分布式流处理***中的失效节点的节点信息;
接收机1103,用于接收上游节点发送的重发数据,重发数据由源节点始发,上游节点为源节点或上游工作节点;
处理器1101,还用于根据失效节点的节点信息确定是否与失效节点相关;当与失效节点相关时,处理接收到的重发数据;
发射机1102,用于将处理后的数据并发送至下游节点。
优选地,接收机1103,还用于接收集中管理实体发送的失效节点的节点信息,集中管理实体用于监控分布式流处理***中的各个节点的工作状况。
优选地,处理器1101,还用于根据失效节点的节点信息查询预先存储的节点关联表,节点关联表中记录了分布式流处理***中的各个节点信息及对应的相关度;根据查询结果确定是否与失效节点相关。
优选地,处理器1101,还用于获取预先存储的状态信息,预先存储的状态信息至少包括当前的节点状态信息及后续处理数据所需的数据结果信息;根据预先存储的状态信息处理接收到的重发数据。
优选地,接收机1103,还用于接收上游节点发送的信号包,信号包中携带有分组标识,分组标识为源节点对流入的数据进行分组编号后添加到信号包中的;
处理器1101,还用于根据当前接收到的信号包中携带的分组标识确定是否需要存储状态信息;当需要存储状态信息时,根据重发数据的处理结果存储状态信息。
优选地,处理器1101,还用于获取预先存储的分组标识;确定预先存储的分组标识对应的预设分组标识,预先存储的分组标识为之前接收到的信号包中携带的分组标识;判断当前接收到的信号包中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致;当当前接收到的信号包中携带的分组标识与预先存储的分组标识对应的预设分组标识不一致时,确定需要存储状态信息。
优选地,处理器1101,还用于当上游节点发送的重发数据中携带有对应的分组标识,分组标识为源节点对重发数据进行分组编号后添加到重发数据中的时,根据重发数据中携带的分组标识确定是否需要存储状态信息;当需要存储状态信息时,根据重发数据的处理结果存储状态信息。
优选地,处理器1101,还用于获取预先存储的分组标识;确定预先存储的分组标识对应的预设分组标识,预先存储的分组标识为之前接收到的数据中携带的分组标识;判断重发数据中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致;当重发数据中携带的分组标识与预先存储的分组标识对应的预设分组标识不一致时,确定需要存储状态信息。
优选地,处理器1101,还用于当确定与失效节点不相关时,对接收到的重发数据不做处理。
优选地,接收机1103,还用于接收上游节点发送的其它数据,其它数据中携带有对应的分组标识,分组标识为源节点对其它数据进行分组编号后添加到其它数据中的;
处理器1101,还用于获取预先存储的分组标识;确定预先存储的分组标识对应的预设分组标识,预先存储的分组标识为之前接收到的数据中携带的分组标识;判断其它数据中携带的分组标识与预先存储的分组标识对应的预设分组标识是否一致;当其它数据中携带的分组标识与预先存储的分组标识对应的预设分组标识不一致时,对其它数据进行处理。
优选地,所述处理器1101,还用于获取预先存储的分组标识;确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的数据中携带的分组标识;判断所述其它数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;当所述其它数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致时,确定需要存储状态信息;根据所述其它数据的处理结果存储状态信息。
优选地,接收机1103,还用于接收上游节点发送的信号包,信号包中携带有分组标识,分组标识为源节点对流入的数据进行分组编号后添加到信号包中的;
处理器1101,还用于获取预先存储的分组标识,预先存储的分组标识为之前接收到的信号包中携带的分组标识;判断当前接收到的信号包中携带的分组标识与预先存储的分组标识是否一致;当当前接收到的信号包中携带的分组标识与预先存储的分组标识一致时,对上游节点发送的后续数据进行处理。
优选地,所述处理器1101,还用于获取预先存储的分组标识;确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的信号包中携带的分组标识;判断当前接收到的信号包中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;当当前接收到的信号包中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致时,确定需要存储状态信息;根据接收当前接收的信号包之前接收的其它数据的处理结果存储状态信息。
本发明实施例提供的工作节点,通过接收上游节点发送的重发数据,并在确定与失效节点相关后,处理接收到的重发数据,使得在与失效节点相关时才处理上游节点发送的重发数据,不仅不影响其它节点的数据处理效率,而且不需要在本地存储大量备份数据,从而节省了本地资源。另外,由于不需要与上游或下游其它节点频繁交互,因而提高了数据处理的效率。
实施例八
图12为一个实施方式中源节点的结构示意图,该源节点包括至少一个处理器1201和发射机1202。
其中:处理器1201,用于获取分布式流处理***中的失效节点的节点信息;根据失效节点的节点信息获取缓存的数据;
发射机1202,用于将缓存的数据作为重发数据发送至下游节点,由下游节点根据下游节点与失效节点是否相关来确定是否处理重发数据。
处理器1201,还用于接收集中管理实体发送的失效节点的节点信息,集中管理实体用于监控分布式流处理***中的各个节点的工作状况。
优选地,处理器1201,还用于将流入的数据对应的分组标识添加到信号包中;
发射机1202,还用于将携带有分组标识的信号包发送至下游节点。
优选地,处理器1201,还用于将缓存的数据作为重发数据,并将重发数据对应的分组标识添加到重发数据中;将携带有分组标识的重发数据发送至下游节点。
优选地,处理器1201,还用于根据接收数据的时间间隔或数据大小对接收到的数据进行分组编号,得到每个数据对应的分组标识。
本发明实施例提供的源节点,通过接收上游节点发送的重发数据,并在确定与失效节点相关后,处理接收到的重发数据,使得在与失效节点相关时才处理上游节点发送的重发数据,不仅不影响其它节点的数据处理效率,而且不需要在本地存储大量备份数据,从而节省了本地资源。另外,由于不需要与上游或下游其它节点频繁交互,因而提高了数据处理的效率。
需要说明的是:上述实施例提供的工作节点和源节点在实现分布式流处理***的容错方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的工作节点、源节点与分布式流处理***的容错方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (37)
1.一种分布式流处理***的容错方法,其特征在于,所述方法包括:
获取分布式流处理***中的失效节点的节点信息,并接收上游节点发送的重发数据,所述重发数据由源节点始发,所述上游节点为所述源节点或上游工作节点;
根据所述失效节点的节点信息确定是否与所述失效节点相关;
如果与所述失效节点相关,则处理接收到的重发数据,并发送至下游节点。
2.根据权利要求1所述的方法,其特征在于,所述获取所述分布式流处理***中失效节点的节点信息,包括:
接收集中管理实体发送的失效节点的节点信息,所述集中管理实体用于监控所述分布式流处理***中的各个节点的工作状况。
3.根据权利要求1所述的方法,其特征在于,所述根据所述失效节点的节点信息确定是否与所述失效节点相关,包括:
根据所述失效节点的节点信息查询预先存储的节点关联表,所述节点关联表中记录了所述分布式流处理***中的各个节点信息及对应的相关度;
根据查询结果确定是否与所述失效节点相关。
4.根据权利要求1所述的方法,其特征在于,所述处理接收到的重发数据,包括:
获取预先存储的状态信息,所述预先存储的状态信息至少包括当前的节点状态信息及后续处理数据所需的数据结果信息;
根据所述预先存储的状态信息处理接收到的重发数据。
5.根据权利要求4所述的方法,其特征在于,所述根据所述预先存储的状态信息处理接收到的重发数据之后,还包括:
接收所述上游节点发送的信号包,所述信号包中携带有分组标识,所述分组标识为源节点对流入的数据进行分组编号后添加到所述信号包中的;
根据当前接收到的信号包中携带的分组标识确定是否需要存储状态信息;
如果需要存储状态信息,则根据所述重发数据的处理结果存储状态信息。
6.根据权利要求5所述的方法,其特征在于,所述根据当前接收到的信号包中携带的分组标识确定是否需要存储状态信息,包括:
获取预先存储的分组标识,并确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的信号包中携带的分组标识;
判断当前接收到的信号包中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
如果当前接收到的信号包中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致,则确定需要存储状态信息。
7.根据权利要求4所述的方法,其特征在于,所述上游节点发送的重发数据中携带有对应的分组标识,所述分组标识为源节点对所述重发数据进行分组编号后添加到所述重发数据中的;
所述根据所述预先存储的状态信息处理接收到的重发数据之后,还包括:
根据所述重发数据中携带的分组标识确定是否需要存储状态信息;
如果需要存储状态信息,则根据所述重发数据的处理结果存储状态信息。
8.根据权利要求7所述的方法,其特征在于,所述根据所述重发数据中携带的分组标识确定是否需要存储状态信息,包括:
获取预先存储的分组标识,并确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的数据中携带的分组标识;
判断所述重发数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
如果所述重发数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致,则确定需要存储状态信息。
9.根据权利要求1所述的方法,其特征在于,所述根据所述失效节点的节点信息确定是否与所述失效节点相关之后,还包括:
如果与所述失效节点不相关,则对接收到的重发数据不做处理。
10.根据权利要求9所述的方法,其特征在于,所述对接收到的重发数据不做处理之后,还包括:
接收所述上游节点发送的其它数据,所述其它数据中携带有对应的分组标识,所述分组标识为源节点对所述其它数据进行分组编号后添加到所述其它数据中的;
获取预先存储的分组标识,并确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的数据中携带的分组标识;
判断所述其它数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
如果所述其它数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致,则对所述其它数据进行处理。
11.根据权利要求10所述的方法,其特征在于,所述对所述其它数据进行处理之后,还包括:
获取预先存储的分组标识,并确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的数据中携带的分组标识;
判断所述其它数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
如果所述其它数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致,则确定需要存储状态信息,并根据所述后续数据的处理结果存储状态信息。
12.根据权利要求9所述的方法,其特征在于,所述对接收到的重发数据不做处理之后,还包括:
接收所述上游节点发送的信号包,所述信号包中携带有分组标识,所述分组标识为源节点对流入的数据进行分组编号后添加到所述信号包中的;
获取预先存储的分组标识,所述预先存储的分组标识为之前接收到的信号包中携带的分组标识;
判断当前接收到的信号包中携带的分组标识与所述预先存储的分组标识是否一致;
如果当前接收到的信号包中携带的分组标识与所述预先存储的分组标识一致,则对所述上游节点发送的后续数据进行处理。
13.根据权利要求12所述的方法,其特征在于,所述对所述上游节点发送的后续数据进行处理之后,还包括:
获取预先存储的分组标识,并确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的信号包中携带的分组标识;
判断当前接收到的信号包中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
如果当前接收到的信号包中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致,则确定需要存储状态信息,并根据接收当前接收的信号包之前接收的其它数据的处理结果存储状态信息。
14.一种分布式流处理***的容错方法,其特征在于,所述方法包括:
获取分布式流处理***中的失效节点的节点信息;
根据所述失效节点的节点信息获取缓存的数据,并将缓存的数据作为重发数据发送至下游节点,由所述下游节点根据所述下游节点与所述失效节点是否相关来确定是否处理所述重发数据。
15.根据权利要求14所述的方法,其特征在于,所述获取分布式流处理***中的失效节点的节点信息,包括:
接收集中管理实体发送的失效节点的节点信息,所述集中管理实体用于监控所述分布式流处理***中的各个节点的工作状况。
16.根据权利要求14所述的方法,其特征在于,所述将缓存的数据作为重发数据发送至下游节点之后,还包括:
将流入的数据对应的分组标识添加到信号包中,将携带有分组标识的信号包发送至下游节点。
17.根据权利要求14所述的方法,其特征在于,所述将缓存的数据作为重发数据发送至下游节点,包括:
将缓存的数据作为重发数据,并将所述重发数据对应的分组标识添加到所述重发数据中,将携带有分组标识的重发数据发送至下游节点。
18.根据权利要求16或17所述的方法,其特征在于,所述将缓存的数据作为重发数据发送至下游节点之前,还包括:
根据接收数据的时间间隔或数据大小对接收到的数据进行分组编号,得到每个数据对应的分组标识。
19.一种工作节点,其特征在于,所述工作节点包括:
第一获取模块,用于获取分布式流处理***中的失效节点的节点信息;
第一接收模块,用于接收上游节点发送的重发数据,所述重发数据由源节点始发,所述上游节点为所述源节点或上游工作节点;
第一确定模块,用于根据所述失效节点的节点信息确定是否与所述失效节点相关;
第一处理模块,用于当与所述失效节点相关时,处理接收到的重发数据,并发送至下游节点。
20.根据权利要求19所述的工作节点,其特征在于,所述第一获取模块,用于接收集中管理实体发送的失效节点的节点信息,所述集中管理实体用于监控所述分布式流处理***中的各个节点的工作状况。
21.根据权利要求19所述的工作节点,其特征在于,所述第一确定模块,包括:
查询单元,用于根据所述失效节点的节点信息查询预先存储的节点关联表,所述节点关联表中记录了所述分布式流处理***中的各个节点信息及对应的相关度;
确定单元,用于根据查询结果确定是否与所述失效节点相关。
22.根据权利要求19所述的工作节点,其特征在于,所述第一处理模块,包括:
获取单元,用于获取预先存储的状态信息,所述预先存储的状态信息至少包括当前的节点状态信息及后续处理数据所需的数据结果信息;
处理单元,用于根据所述预先存储的状态信息处理接收到的重发数据。
23.根据权利要求22所述的工作节点,其特征在于,所述工作节点,还包括:
第二接收模块,用于接收所述上游节点发送的信号包,所述信号包中携带有分组标识,所述分组标识为源节点对流入的数据进行分组编号后添加到所述信号包中的;
第二确定模块,用于根据当前接收到的信号包中携带的分组标识确定是否需要存储状态信息;
第一存储模块,用于当需要存储状态信息时,根据所述重发数据的处理结果存储状态信息。
24.根据权利要求23所述的工作节点,其特征在于,所述第二确定模块,包括:
获取单元,用于获取预先存储的分组标识;
第一确定单元,用于确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的信号包中携带的分组标识;
判断单元,用于判断当前接收到的信号包中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
第二确定单元,用于当当前接收到的信号包中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致时,确定需要存储状态信息。
25.根据权利要求22所述的工作节点,其特征在于,所述工作节点,还包括:
第三确定模块,用于当上游节点发送的重发数据中携带有对应的分组标识时,根据所述重发数据中携带的分组标识确定是否需要存储状态信息,所述分组标识为源节点对所述重发数据进行分组编号后添加到所述重发数据中的;
第二存储模块,用于当需要存储状态信息时,根据所述重发数据的处理结果存储状态信息。
26.根据权利要求25所述的工作节点,其特征在于,所述第三确定模块,包括:
获取单元,用于获取预先存储的分组标识;
第一确定单元,用于确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的数据中携带的分组标识;
判断单元,用于判断所述重发数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
第二确定单元,用于当所述重发数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致时,确定需要存储状态信息。
27.根据权利要求19所述的工作节点,其特征在于,所述工作节点,还包括:
第四确定模块,用于当确定与所述失效节点不相关时,对接收到的重发数据不做处理。
28.根据权利要求27所述的工作节点,其特征在于,所述工作节点,还包括:
第三接收模块,用于接收所述上游节点发送的其它数据,所述其它数据中携带有对应的分组标识,所述分组标识为源节点对所述其它数据进行分组编号后添加到所述其它数据中的;
第二获取模块,用于获取预先存储的分组标识;
第五确定模块,用于确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的数据中携带的分组标识;
第一判断模块,用于判断所述其它数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
第二处理模块,用于当所述其它数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致时,对所述其它数据进行处理。
29.根据权利要求28所述的工作节点,其特征在于,所述工作节点,还包括:
第三获取模块,用于获取预先存储的分组标识;
第六确定模块,用于确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的数据中携带的分组标识;
第二判断模块,用于判断所述其它数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
第七确定模块,用于当所述其它数据中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致时,确定需要存储状态信息;
第三存储模块,用于根据所述其它数据的处理结果存储状态信息。
30.根据权利要求27所述的工作节点,其特征在于,所述工作节点,还包括:
第四接收模块,用于接收所述上游节点发送的信号包,所述信号包中携带有分组标识,所述分组标识为源节点对流入的数据进行分组编号后添加到所述信号包中的;
第四获取模块,用于获取预先存储的分组标识,所述预先存储的分组标识为之前接收到的信号包中携带的分组标识;
第三判断模块,用于判断当前接收到的信号包中携带的分组标识与所述预先存储的分组标识是否一致;
第三处理模块,用于当当前接收到的信号包中携带的分组标识与所述预先存储的分组标识一致时,对所述上游节点发送的后续数据进行处理。
31.根据权利要求30所述的工作节点,其特征在于,所述工作节点,还包括:
第五获取模块,用于获取预先存储的分组标识;
第八确定模块,用于确定所述预先存储的分组标识对应的预设分组标识,所述预先存储的分组标识为之前接收到的信号包中携带的分组标识;
第四判断模块,用于判断当前接收到的信号包中携带的分组标识与所述预先存储的分组标识对应的预设分组标识是否一致;
第九确定模块,用于当当前接收到的信号包中携带的分组标识与所述预先存储的分组标识对应的预设分组标识不一致时,确定需要存储状态信息;
第四存储模块,用于根据接收当前接收的信号包之前接收的其它数据的处理结果存储状态信息。
32.一种源节点,其特征在于,所述源节点包括:
第一获取模块,用于获取分布式流处理***中的失效节点的节点信息;
第二获取模块,用于根据所述失效节点的节点信息获取缓存的数据;
发送模块,用于将缓存的数据作为重发数据发送至下游节点,由所述下游节点根据所述下游节点与所述失效节点是否相关来确定是否处理所述重发数据。
33.根据权利要求32所述的源节点,其特征在于,所述第一获取模块,用于接收集中管理实体发送的失效节点的节点信息,所述集中管理实体用于监控所述分布式流处理***中的各个节点的工作状况。
34.根据权利要求32所述的源节点,其特征在于,所述发送模块,包括:
第一添加单元,用于将流入的数据对应的分组标识添加到信号包中;
第一发送单元,用于将携带有分组标识的信号包发送至下游节点。
35.根据权利要求32所述的源节点,其特征在于,所述发送模块,包括:
第二添加单元,用于将缓存的数据作为重发数据,并将所述重发数据对应的分组标识添加到所述重发数据中;
第二发送单元,用于将携带有分组标识的重发数据发送至下游节点。
36.根据权利要求34或35所述的源节点,其特征在于,所述源节点,还包括:
分组编号模块,用于根据接收数据的时间间隔或数据大小对接收到的数据进行分组编号,得到每个数据对应的分组标识。
37.一种分布式流处理***的容错***,其特征在于,所述***包括多个工作节点和源节点;
其中,所述多个工作节点中的每个工作节点如权利要求19至31中任一项权利要求所述的工作节点;
所述源节点如权利要求32至36中任一项权利要求所述的源节点。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310754620.XA CN104038364B (zh) | 2013-12-31 | 2013-12-31 | 分布式流处理***的容错方法、节点及*** |
PCT/CN2014/082991 WO2015101026A1 (zh) | 2013-12-31 | 2014-07-25 | 分布式流处理***的容错方法、节点及*** |
EP14876066.3A EP2945314B1 (en) | 2013-12-31 | 2014-07-25 | Distributed flow processing system fault tolerance method, nodes and system |
US15/044,077 US10205630B2 (en) | 2013-12-31 | 2016-02-15 | Fault tolerance method for distributed stream processing system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310754620.XA CN104038364B (zh) | 2013-12-31 | 2013-12-31 | 分布式流处理***的容错方法、节点及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104038364A true CN104038364A (zh) | 2014-09-10 |
CN104038364B CN104038364B (zh) | 2015-09-30 |
Family
ID=51468961
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310754620.XA Active CN104038364B (zh) | 2013-12-31 | 2013-12-31 | 分布式流处理***的容错方法、节点及*** |
Country Status (4)
Country | Link |
---|---|
US (1) | US10205630B2 (zh) |
EP (1) | EP2945314B1 (zh) |
CN (1) | CN104038364B (zh) |
WO (1) | WO2015101026A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111597058A (zh) * | 2020-04-17 | 2020-08-28 | 微梦创科网络科技(中国)有限公司 | 一种数据流处理方法及*** |
US11640257B2 (en) | 2016-07-28 | 2023-05-02 | Huawei Technologies Co., Ltd. | Data processing method and apparatus |
WO2024046151A1 (zh) * | 2022-08-31 | 2024-03-07 | 华为技术有限公司 | 数据流处理方法及相关装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10776247B2 (en) | 2018-05-11 | 2020-09-15 | International Business Machines Corporation | Eliminating runtime errors in a stream processing environment |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1965532A (zh) * | 2004-04-30 | 2007-05-16 | 国际商业机器公司 | 具有端到端可靠性的群通信的方法和设备 |
CN101355495A (zh) * | 2008-09-11 | 2009-01-28 | 电子科技大学 | 基于容错容侵的ip可信路由实现方法 |
CN101763321A (zh) * | 2010-02-24 | 2010-06-30 | 华为技术有限公司 | 数据容灾的方法、装置及*** |
CN102833154A (zh) * | 2012-07-30 | 2012-12-19 | 中国联合网络通信集团有限公司 | 基于分组传送网的节点保护方法、节点和*** |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3432664B2 (ja) * | 1996-02-14 | 2003-08-04 | 富士通株式会社 | 通信ノード及び障害復旧方法並びに通信ネットワーク |
US7117273B1 (en) * | 2000-01-25 | 2006-10-03 | Cisco Technology, Inc. | Methods and apparatus for maintaining a map of node relationships for a network |
US7698463B2 (en) * | 2000-09-12 | 2010-04-13 | Sri International | System and method for disseminating topology and link-state information to routing nodes in a mobile ad hoc network |
CA2449532A1 (en) | 2001-06-30 | 2003-01-16 | Nokia, Inc. | Apparatus and method for delivery of packets in multi-hop wireless networks |
US7660239B2 (en) | 2003-04-25 | 2010-02-09 | Alcatel-Lucent Usa Inc. | Network data re-routing |
US7392319B2 (en) | 2004-04-23 | 2008-06-24 | International Business Machines Corporation | Method and apparatus for failure resilient forwarding of data over a computer network |
PL2058988T3 (pl) * | 2007-09-13 | 2012-09-28 | Huawei Tech Co Ltd | Sposób i system wyboru trasy w podsystemie multimedialnym IP |
CN101388831B (zh) * | 2007-09-14 | 2011-09-21 | 华为技术有限公司 | 数据传输方法、节点及网关 |
US8713393B2 (en) | 2007-10-02 | 2014-04-29 | Lantiq Deutschland Gmbh | Retransmission and retransmission request in data communication systems |
US7870425B2 (en) * | 2007-11-23 | 2011-01-11 | International Business Machines Corporation | De-centralized nodal failover handling |
CN101494565B (zh) | 2008-01-24 | 2011-01-26 | ***通信集团公司 | 在分布式无线接入***中处理节点故障的方法 |
CN101635975B (zh) * | 2009-08-04 | 2011-10-26 | 西北大学 | 无线传感器网络数据收集路由方法及装置 |
CN101777020B (zh) | 2009-12-25 | 2012-12-05 | 北京讯鸟软件有限公司 | 一种用于分布式程序的容错方法和*** |
CN101945050B (zh) | 2010-09-25 | 2014-03-26 | 中国科学院计算技术研究所 | 一种基于胖树结构的动态容错方法和*** |
US8856374B2 (en) * | 2010-11-30 | 2014-10-07 | Hstreaming, Inc. | Methods and systems for reconfiguration and repartitioning of a parallel distributed stream process |
US8667084B2 (en) * | 2012-02-23 | 2014-03-04 | Cisco Technology, Inc. | Managing fate-sharing in shared-media communication networks |
CN103024047A (zh) | 2012-12-17 | 2013-04-03 | 江苏乐买到网络科技有限公司 | 一种数据容错方法 |
CN103049348B (zh) | 2012-12-21 | 2016-03-16 | 四川川大智胜软件股份有限公司 | 多服务器化环境下数据容错存储的方法 |
US9319962B2 (en) * | 2013-10-02 | 2016-04-19 | Cisco Technology, Inc. | Local path repair in a wireless deterministic network |
US9317359B2 (en) * | 2013-12-16 | 2016-04-19 | Artesyn Embedded Computing, Inc. | Reliable, low latency hardware and software inter-process communication channel for safety critical system |
-
2013
- 2013-12-31 CN CN201310754620.XA patent/CN104038364B/zh active Active
-
2014
- 2014-07-25 EP EP14876066.3A patent/EP2945314B1/en active Active
- 2014-07-25 WO PCT/CN2014/082991 patent/WO2015101026A1/zh active Application Filing
-
2016
- 2016-02-15 US US15/044,077 patent/US10205630B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1965532A (zh) * | 2004-04-30 | 2007-05-16 | 国际商业机器公司 | 具有端到端可靠性的群通信的方法和设备 |
CN101355495A (zh) * | 2008-09-11 | 2009-01-28 | 电子科技大学 | 基于容错容侵的ip可信路由实现方法 |
CN101763321A (zh) * | 2010-02-24 | 2010-06-30 | 华为技术有限公司 | 数据容灾的方法、装置及*** |
CN102833154A (zh) * | 2012-07-30 | 2012-12-19 | 中国联合网络通信集团有限公司 | 基于分组传送网的节点保护方法、节点和*** |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11640257B2 (en) | 2016-07-28 | 2023-05-02 | Huawei Technologies Co., Ltd. | Data processing method and apparatus |
CN111597058A (zh) * | 2020-04-17 | 2020-08-28 | 微梦创科网络科技(中国)有限公司 | 一种数据流处理方法及*** |
CN111597058B (zh) * | 2020-04-17 | 2023-10-17 | 微梦创科网络科技(中国)有限公司 | 一种数据流处理方法及*** |
WO2024046151A1 (zh) * | 2022-08-31 | 2024-03-07 | 华为技术有限公司 | 数据流处理方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
EP2945314B1 (en) | 2018-03-21 |
EP2945314A1 (en) | 2015-11-18 |
CN104038364B (zh) | 2015-09-30 |
EP2945314A4 (en) | 2016-04-20 |
US10205630B2 (en) | 2019-02-12 |
WO2015101026A1 (zh) | 2015-07-09 |
US20160164719A1 (en) | 2016-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6687847B1 (en) | Failure detector with consensus protocol | |
CN103227838B (zh) | 一种多重负载均衡处理装置与方法 | |
US20120297249A1 (en) | Platform for Continuous Mobile-Cloud Services | |
CN106656537B (zh) | 一种it集群***监控方法、装置、终端及*** | |
CN105357296A (zh) | 一种Docker云平台下弹性缓存*** | |
US11461199B2 (en) | Redundancy method, device, and system | |
Marin et al. | DARX-a framework for the fault-tolerant support of agent software | |
CN101986272A (zh) | 一种云计算环境下的任务调度方法 | |
CN107707619B (zh) | 分布式存储方法及装置 | |
CN104038364B (zh) | 分布式流处理***的容错方法、节点及*** | |
CN109144787A (zh) | 一种数据恢复方法、装置、设备及可读存储介质 | |
Singh et al. | Antecedence graph approach to checkpointing for fault tolerance in mobile agent systems | |
Cao et al. | Checkpointing and rollback of wide-area distributed applications using mobile agents | |
CN103516734A (zh) | 数据处理方法、设备和*** | |
CN107153526B (zh) | 一种流式计算环境下的并行数据回流方法 | |
CN103856511A (zh) | 数据包上传方法、客户端、节点、信息服务器及*** | |
US9830263B1 (en) | Cache consistency | |
CN106911522A (zh) | 一种基于云环境的故障处理方法及*** | |
US20100085871A1 (en) | Resource leak recovery in a multi-node computer system | |
CN105224550A (zh) | 分布式流计算***和方法 | |
CN106815318B (zh) | 一种时序数据库的集群化方法及*** | |
CN112631756A (zh) | 一种应用于航天测控软件的分布式调控方法及装置 | |
US8203937B2 (en) | Global detection of resource leaks in a multi-node computer system | |
CN104516778B (zh) | 一种多任务环境下进程检查点的保存与恢复***及方法 | |
CN104516790B (zh) | 一种分布式环境下检查点记录和恢复的***及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |