当前位置: 首页 > 专利查询>伊姆西公司专利>正文

用于分布式处理系统中基于指纹的状态检测方法及设备技术方案

技术编号:15054017 阅读:89 留言:0更新日期:2017-04-06 00:15
本公开的实施例提供了一种分布式处理系统中基于指纹的状态检测方法和设备。所述方法包括:在根节点处,基于待传送的输出消息标识生成并发送初始指纹;在中间节点处,基于所接收的输入消息标识、待传送的输出消息标识以及所接收的指纹,生成并发送更新后的指纹;在叶节点处,将最终更新的指纹发送到任务跟踪点;以及在所述任务跟踪点处,基于所述最终更新的指纹获得状态信息。由于这种方法不从每个节点处产生流量,而是通常仅从叶节点处产生跟踪流量,因此所述方法在保证了对数据处理的可靠性的同时大幅降低了跟踪上的开销。

【技术实现步骤摘要】

本公开的实施例涉及分布式数据处理领域,并更为具体地涉及用于分布式处理系统中基于指纹的状态检测方法及设备。
技术介绍
分布式数据处理系统,特别是实时流系统(real-timestreamingsystem)正受到广泛关注。诸如PivotalSpringXD、Storm、SparkStreaming、Samza之类的现代实时流系统正被广泛地应用于电子商务、ETL、大数据分析等。提供一种处理能力可靠从而使得即使在节点处或网络中出现任何故障的情况下仍能确保对每个数据项目(或消息)的成功处理是十分重要的。对于这种分布式系统而言,特别是对于具有成千上万个节点或中间连接的大型系统而言,关键的挑战在于如何以高效的方式、最低的成本和对性能的最小影响来检测故障。图1图示了一般性的分布式处理系统的拓扑图。如图1所示的分布式处理系统的拓扑通常以有向非循环图(DAG)的方式行进。在所示的拓扑中:执行特定逻辑的节点被实施为过程/线程并被部署在多个主机中;边界表示待处理的消息。上游节点和下游节点具有“发布-订阅”的关系,可以添加更多的节点用于平衡或性能调节和/或处理流水线。存在下面两种具有不同作用的节点:(a)根节点,其是从外部源(诸如,消息源、记录或数据库等)获取消息的任务。所获取的原始消息被称作根消息(RootMsg)。通常,拓扑具有一个根节点,根节点可能包含或可能不包含处理逻辑,并且将根消息分开或分派到下游工作节点;以及(b)工作节点,其用于处理输入消息并通常生成用于进一步的处理的新消息。可根据特定要求配置节点之间的消息分布,所述特定要求包括诸如随机、打乱、哈希划分等。最为常见的是,除叶节点外,这些工作节点是内存中运行的进程,线程或者容器,其产生的中间数据往往不需要永久性保存。所述叶节点不包含新消息,并且可选地,所述叶节点将最终结果存储到永久性存储装置中,诸如存储在数据库或分布式文件系统(HDFS)中。任务跟踪是一种中央监控任务,其跟踪每条RootMsg的处理状态以及其他系统层状态,如性能等。关于可靠的数据处理,存在下面两种方式:(a)“准确一次”的方式,其中在理想情况下,消息仅被准确地处理一次;以及(b)“至少一次”的方式,其中消息被处理但可以被处理多于一次。在实践中,“至少一次”的方式是更为实际的实现方式。具体而言,一旦检测到故障,则向分布式系统重该发根消息并对其进行重新处理。这种方式被一些应用(例如,满足幂等性的应用)所接受而可能不适于其他应用,例如,最终数据不能重复的应用,此时建议在叶节点处保存结果并构建逻辑以检测可能的任何重复处理并采取相应的动作(例如,丢弃重复处理的结果)。上述两种方式的任意方式中,关键的挑战之一在于如何在最低成本情况下以可靠的且可调节的方式来检测进程故障,特别是考虑到可能存在成千上万、甚至更多的节点,且端到端(end-end)的响应时间是很重要的情况。下面将呈现现有技术中的两种方法:方法一是针对每一个输入消息、从每个工作节点汇报状态,然后任务跟踪点会通过跟踪每个发送的消息及其继承关系来监控状态。在分布式处理系统正常处理的情况下,在给定时间阈值(或超时设定)内,所有从消息源导出的消息(例如,如图1中所示的消息B、C、…M等)都应当被成功处理。这种方法简单直接但效率较低,这是因为每个输入消息都将承受额外的汇报流量,且任务跟踪逻辑在消息关系以及状态监控方面十分复杂,因此消耗了较多的内存和CPU。方法二是一种改进的方法,也被称作基于异或(XOR)的算法,其大幅降低了任务跟踪的复杂性和内存使用。下面将详细说明该方法。下面等式示出了该方法的思想:AxorAxorBxorBxorCxorC…=0(1)其中,A、B或C等为“成对”出现的消息标识(或消息ID)。在理想情况下,每条消息都应准确地成对出现,即,发送出一次并接收到一次。只要没有超时(即,在预定的时间阈值内),接收顺序则不影响最终结果。在出现故障的情况下,例如,在某些消息丢失、节点崩溃、超时发生等的情况下,所监控到的状态一定为“非零”,从而将触发消息的重发。图2图示了一个基于XOR运算的状态检查的具体示例。其中,0、1、2、…10为节点,并且A、B、…N为消息标识。首先,需要指出如下方面:·每个节点具有唯一标识;·每一条信息(包括根信息和新获得的信息)都被分配有随机生成的唯一标识(例如,64位标识);·每一条新获得的消息具有嵌入在载荷中的元数据,诸如<RootNodeID,RootMsgID>,其用于表示该消息的来源;并且·Status是用来表示跟踪状态的值。其次,可以注意到,作为常用的优化技术,可以在工作节点处成批地(或成组地)发送所处理的消息。如图2中所示,在节点9处,可以通过将例如消息标识聚集在一起来作为一个流量{JxorKxorLxorM本文档来自技高网...

【技术保护点】
一种分布式处理系统中基于指纹的状态检测方法,包括:在根节点处,基于待传送的输出消息标识生成并发送初始指纹;在中间节点处,基于所接收的输入消息标识、待传送的输出消息标识以及所接收的指纹,生成并发送更新后的指纹;在叶节点处,将最终更新的指纹发送到任务跟踪点;以及在所述任务跟踪点处,基于所述最终更新的指纹获得状态信息。

【技术特征摘要】
1.一种分布式处理系统中基于指纹的状态检测方法,包括:在根节点处,基于待传送的输出消息标识生成并发送初始指纹;在中间节点处,基于所接收的输入消息标识、待传送的输出消息标识以及所接收的指纹,生成并发送更新后的指纹;在叶节点处,将最终更新的指纹发送到任务跟踪点;以及在所述任务跟踪点处,基于所述最终更新的指纹获得状态信息。2.根据权利要求1所述的方法,其中在根节点处,基于待传送的输出消息标识生成并发送初始指纹包括:接收根消息并且基于所述待传送的输出消息标识生成并发送所述初始指纹;在所述任务跟踪点处,基于所述最终更新的指纹获得状态信息还包括:基于所述状态信息,确定是否对所述根消息进行重新发送。3.根据权利要求1所述的方法,其中所述指纹表示在所有节点处的针对输入消息标识和输出消息标识的上下文信息。4.根据权利要求1所述的方法,其中所述输入消息标识和所述输出消息标识是由所述分布式处理系统指定的消息标识。5.根据权利要求1所述的方法,其中在根节点处,基于待传送的输出消息标识生成并发送初始指纹包括:基于所述输出消息标识之间的异或运算生成所述初始指纹;并且将所述初始指纹连同所述输出消息标识发送到直接相连的下游节点。6.根据权利要求1所述的方法,其中在中间节点处,基于所接收的输入消息标识、待传送的输出消息标识以及所接收的指纹,生成并发送更新后的指纹包括:以递归的方式,基于所接收的输入消息标识、所述待传送的输出
\t消息标识以及所接收的指纹的异或运算结果,生成所述更新后的指纹;并且将所述更新后的指纹连同所述输出消息标识发送到直接相连的下游节点。7.根据权利要求1所述的方法,其中在中间节点处,基于所接收的输入消息标识、待传送的输出消息标识以及所接收的指纹,生成并发送更新后的指纹包括:当与所述中间节点直接相连的下游节点的数目为偶数时,所述中间节点也向所述任务跟踪点发送所述更新后的指纹。8.根据权利要求1所述的方法,其中在叶节点处,将最终更新的指纹发送到任务跟踪点包括:将在预定的时间阈值内接收到的最终更新的指纹连同所接收的输入消息标识发送到所述任务跟踪点处。9.根据权利要求1所述的方法,其中在所述任务跟踪点处,基于所述最终更新的指纹获得状态信息包括:基于所接收的最终指纹与所接收的输入消息标识之间的异或运算获得所述状态信息。10.根据权利要求9所述的方法,其中当与所述中间节点直接相连的下游节点的数目为偶数时,所接收的最终指纹还包括从所述中间节点处接收到的更新后的指纹。11.根据权利要求2所述的方法,其中基于所述状态信息,确定是否对所述根消息进行重新发送包括:当接收到指示故障的状态信息时,重新发送所述根消息到所述根节点并重复上述方法。12.一种分布式...

【专利技术属性】
技术研发人员:赵军平张峰豪曹逾陶隽孙宇熙
申请(专利权)人:伊姆西公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1