CN104281627A - 一种报告数据处理结果的方法、系统及事件追踪器 - Google Patents
一种报告数据处理结果的方法、系统及事件追踪器 Download PDFInfo
- Publication number
- CN104281627A CN104281627A CN201310293733.4A CN201310293733A CN104281627A CN 104281627 A CN104281627 A CN 104281627A CN 201310293733 A CN201310293733 A CN 201310293733A CN 104281627 A CN104281627 A CN 104281627A
- Authority
- CN
- China
- Prior art keywords
- node
- identification number
- next stage
- pending
- event message
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Mobile Radio Communication Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
Abstract
本申请公开了一种报告数据处理结果的方法、系统及事件追踪器,通过设置的事件追踪器来对流水线过程进行实时追踪,无论是流水线过程处理成功还是处理失败,最终的处理结果都无需由节点间依次报告,而是由事件追踪器直接向第一级节点报告,可极大地缩短处理结果传递至第一级节点的链路。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种报告数据处理结果的方法、系统及事件追踪器。
背景技术
数据流经多个节点并由流经的多个节点分别进行处理的过程可视为流水线过程,所述流水线过程不局限于数据流经单个程序内部的多个节点的情况,还可以包括数据流经多个程序内的节点形成的流水线,这种流经多个程序内的节点形成的流水线过程多应用在分布式网络架构中。
以数据流经图1所示的节点拓扑架构为例,其中,A节点是流水线中的第一级节点,负责从外部获取数据,并将获取的数据逐级传输,直至数据流经所有的节点。假设A节点从外部获取的数据是数据a,其流经图1所示的节点拓扑架构的流水线过程如下:
1、A节点对获取的数据a进行处理后,分别生成数据b和数据c,其中,数据b发送给下一级的B节点,数据c发送给下一级的C节点。
2、B节点对接收到的数据b进行处理后生成数据d1,并发送给下一级的D节点;C节点对接收到的数据c进行处理后生成数据d2,并发送给下一级的D节点。
3、D节点对接收到的数据d1和数据d2进行处理后,生成数据e并发送给下一级的E节点。
4、E节点对接收到的数据e进行处理,完成本次流水线过程。
在流水线过程结束后,作为流水线中第一级节点的A节点需要知道数据流经下级各节点时是否被正确处理,因此,在完成流水线过程后,从最低一级节点起,依次向上一级节点报告处理结果。以图1所示的节点拓扑架构为例,当E节点对接收到的数据e成功处理后,各级节点向上一级节点报告处理结果的过程如下:
5、E节点向上一级的D节点报告的处理结果为数据e处理成功。
6、D节点向上一级的B节点报告的处理结果为数据d1处理成功,并向上一级的C节点报告的处理结果为数据d2处理成功。
7、B节点向上一级的A节点报告的处理结果为数据b处理成功,以及C节点向上一级的A节点报告的处理结果为数据c处理成功。
8、A节点最终确认数据a已被成功处理。
以上在流水线过程结束后(包括流水线过程成功结束和流水线过程失败结束)报告处理结果的方案中,处理结果(包括处理成功和处理失败)报告传递至第一级节点的链路过长,当应用在分布式网络架构中,会增加处理结果数据包丢失的风险;同时,由于处理结果报告传递的链路过长,还可能会延长第一级节点针对处理结果的响应时间,特别是出现某一节点对接收到的数据处理失败的情况时,处理结果报告传递的链路过长的缺陷更加明显。
例如,E节点对接收到的数据e处理失败时,E节点首先向上一级的D节点报告的处理结果为数据e处理失败,D节点再向上一级的B节点和C节点分别报告的处理结果为数据d1、数据d2处理失败,最后再由B节点和C节点分别向上一级的A节点报告的处理结果为数据b、数据c处理失败,此时A节点才能最终确认数据a处理失败。也就是说,E节点处理失败的处理结果要经过D节点、C节点、B节点后才能达到A节点,由于报告处理失败的链路过长,会延长第一级节点对处理失败的响应时间,出现失败响应延迟的问题。
发明内容
本申请实施例提供了一种报告数据处理结果的方法、系统及事件追踪器,用以解决现有技术中存在的在流水线过程结束后,处理结果报告传递至第一级节点的链路过长的问题。
本申请实施例提供了一种报告数据处理结果的方法,所述方法包括:
接收第一级节点发送的事件消息,所述事件消息中包括事件标识;
针对除所述第一级节点外的其他任意节点,按照节点间上下级关系依次执行以下操作:
接收待处理节点发送的事件消息,在待处理节点发送的事件消息中包含的事件标识与所述第一级节点发送的事件标识匹配时,提取出待处理节点发送的事件消息中包含的处理结果;
若提取出的处理结果是处理失败,则向所述第一级节点报告数据处理失败;若提取出的处理结果是处理成功,则在存在还未处理的节点时,针对还未处理的节点重复执行所述操作,在不存在还未处理的节点时,向所述第一级节点报告数据处理成功。
从以上方案可以看出,由于本申请实施例方法中由独立于节点的其他设备来对流水线过程进行实时追踪,无论是流水线过程处理成功还是处理失败,最终的处理结果都无需由节点间依次报告,而是由对流水线过程实时追踪的设备直接向第一级节点报告,可极大地缩短处理结果传递至第一级节点的链路。
优选地,所述第一级节点发送的事件消息中还包括所述第一级节点的下一级节点的节点信息;
通过以下方式确定是否存在还未处理的节点:
确定所述待处理节点发送的事件消息中是否包含所述待处理节点的下一级节点的节点信息,若是,则确定存在还未处理的节点;
否则,根据所述待处理节点的节点信息确定所述待处理节点的上一级节点,并根据确定的该上一级节点作为待处理节点时发送的事件消息中包含的下一级节点的节点信息,在该节点信息对应的节点都已处理过时,确定不存在还未处理的节点,在该节点信息对应的节点没有全部处理过时,确定存在还未处理的节点。
由于从第一级节点开始,待处理节点若有下一级节点,则将下一级节点的节点信息包含在事件消息中发送,因此,可在事件消息中包含下一级节点的节点信息时确定还存在未处理的节点,在事件消息中不包含下一级节点的节点信息时,可根据待处理节点的上一级节点发送的事件消息中包含的下一级节点的节点信息确定最低级节点是否全部处理完毕,即确定出是否还存在未处理的节点。
优选地,若所述第一级节点的下一级节点个数为1个,则所述第一级节点发送的下一级节点的节点信息是:第一级节点为其下一级节点确定的标识号;
若所述第一级节点的下一级节点个数大于1个,则所述第一级节点发送的下一级节点的节点信息是:第一级节点对每个下一级节点确定的标识号进行异或操作后得到的标识号。
由于上一级节点为下一级节点确定的标识号可以唯一表示一个节点,因此,当下一级节点的个数为1个时,可用下一级节点的标识号来表示这1个下一级节点;当下一级节点个数大于1个时,通过将各下一级节点的标识号进行异或操作后的结果来整体反应所有的下一级节点。
优选地,在所述待处理节点有下一级节点时,发送的事件消息中包含的下一级节点的节点信息为:所述待处理节点的上一级节点为该待处理节点确定的标识号与所述待处理节点为下一级节点确定的标识号进行异或操作后得到的标识号;
在所述待处理节点没有下一级节点且所述待处理节点的上一级节点个数为1个时,所述待处理节点发送的事件消息中还包括:所述待处理节点的上一节点为该待处理节点确定的标识号;
在所述待处理节点没有下一级节点且所述待处理节点的上一级节点个数大于1个时,所述待处理节点发送的事件消息中还包括:所述待处理节点的各上一节点为该待处理节点确定的标识号进行异或操作后得到的标识号。
由于上一级节点为下一级节点确定的标识号可以唯一表示一个节点,因此,待处理节点根据是否有下一级节点以及上一级节点的数量对个标识号进行异或操作后,得到的标识号可以从整体上反应上一级节点为待处理节点确定的标识号以及待处理节点为下一级节点确定的标识号。
优选地,通过以下方式确定节点是否都已处理过:
将所述待处理节点在所述事件消息中包含的标识号与本地已存储的标识号进行异或操作,所述本地已存储的标识号为:之前接收到的包含相同事件标识的事件消息中的标识号进行异或操作后得到的标识号;
若所述待处理节点在所述事件消息中包含的标识号与本地已存储的标识号进行异或操作的结果为0,则确定节点都已处理过;否则,确定存在还未处理过的节点,并存储本次异或操作后得到的标识号。
由于异或操作的原则是相同的数异或操作后为0,不同的数异或操作后为1,将待处理节点发送的标识号与当前已存储的标识号进行异或处理后,得到的新的标识号中消除了其上一级节点为待处理节点确定的标识号的影响,但包含待处理节点为下一级节点确定的标识号以及当前还未处理过的其他节点的标识号,此时,若新的标识号为0,表示所有的节点都已处理完毕,若新的标识号不为0,表示还存在未处理过的节点。
本申请实施例还提供了一种报告数据处理结果的系统,所述系统包括数据流经的多个节点和事件追踪器,其中:
第一级节点,用于向所述事件追踪器发送事件消息,所述事件消息中包括事件标识;
除所述第一级节点外的其他任意节点,用于按照节点间上下级关系依次作为待处理节点,用于向所述事件追踪器发送事件消息;
事件追踪器,用于针对每个待处理节点执行以下操作:
接收待处理节点发送的事件消息,在待处理节点发送的事件消息中包含的事件标识与所述第一级节点发送的事件标识匹配时,提取出待处理节点发送的事件消息中包含的处理结果,若提取出的处理结果是处理失败,则向所述第一级节点报告数据处理失败;若提取出的处理结果是处理成功,则在存在还未处理的节点时,针对还未处理的节点继续执行所述操作,在不存在还未处理的节点时,向所述第一级节点报告数据处理成功。
从以上方案可以看出,由于本申请实施例系统中由独立于节点的事件追踪器来对流水线过程进行实时追踪,无论是流水线过程处理成功还是处理失败,最终的处理结果都无需由节点间依次报告,而是由事件追踪器直接向第一级节点报告,可极大地缩短处理结果传递至第一级节点的链路。
优选地,所述第一级节点发送的事件消息中还包括所述第一级节点的下一级节点的节点信息;
所述事件追踪器,具体用于确定所述待处理节点发送的事件消息中是否包含所述待处理节点的下一级节点的节点信息,若是,则确定存在还未处理的节点;
否则,根据所述待处理节点的节点信息确定所述待处理节点的上一级节点,并根据确定的该上一级节点作为待处理节点时发送的事件消息中包含的下一级节点的节点信息,在该节点信息对应的节点都已处理过时,确定不存在还未处理的节点,在该节点信息对应的节点没有全部处理过时,确定存在还未处理的节点。
由于从第一级节点开始,待处理节点若有下一级节点,则将下一级节点的节点信息包含在事件消息中发送给事件追踪器,因此,事件追踪器可在事件消息中包含下一级节点的节点信息时确定还存在未处理的节点,在事件消息中不包含下一级节点的节点信息时,可根据待处理节点的上一级节点发送的事件消息中包含的下一级节点的节点信息确定最低级节点是否全部处理完毕,即确定出是否还存在未处理的节点。
若所述第一级节点的下一级节点个数为1个,则所述第一级节点发送的下一级节点的节点信息是:第一级节点为其下一级节点确定的标识号;
若所述第一级节点的下一级节点个数大于1个,则所述第一级节点发送的下一级节点的节点信息是:第一级节点对每个下一级节点确定的标识号进行异或操作后得到的标识号。
由于上一级节点为下一级节点确定的标识号可以唯一表示一个节点,因此,当下一级节点的个数为1个时,可用下一级节点的标识号来表示这1个下一级节点;当下一级节点个数大于1个时,通过将各下一级节点的标识号进行异或操作后的结果来整体反应所有的下一级节点。
在所述待处理节点有下一级节点时,发送的事件消息中包含的下一级节点的节点信息为:所述待处理节点的上一级节点为该待处理节点确定的标识号与所述待处理节点为下一级节点确定的标识号进行异或操作后得到的标识号;
在所述待处理节点没有下一级节点且所述待处理节点的上一级节点个数为1个时,所述待处理节点发送的事件消息中还包括:所述待处理节点的上一节点为该待处理节点确定的标识号;
在所述待处理节点没有下一级节点且所述待处理节点的上一级节点个数大于1个时,所述待处理节点发送的事件消息中还包括:所述待处理节点的各上一节点为该待处理节点确定的标识号进行异或操作后得到的标识号。
由于上一级节点为下一级节点确定的标识号可以唯一表示一个节点,因此,待处理节点根据是否有下一级节点以及上一级节点的数量对个标识号进行异或操作后,得到的标识号可以从整体上反应上一级节点为待处理节点确定的标识号以及待处理节点为下一级节点确定的标识号。
所述事件追踪器,具体用于将所述待处理节点在所述事件消息中包含的标识号与本地已存储的标识号进行异或操作,所述本地已存储的标识号为:之前接收到的包含相同事件标识的事件消息中的标识号进行异或操作后得到的标识号,若所述待处理节点在所述事件消息中包含的标识号与本地已存储的标识号进行异或操作的结果为0,则确定节点都已处理过;否则,确定存在还未处理过的节点,并存储本次异或操作后得到的标识号。
由于异或操作的原则是相同的数异或操作后为0,不同的数异或操作后为1,事件追踪器将待处理节点发送的标识号与当前已存储的标识号进行异或处理后,得到的新的标识号中消除了其上一级节点为待处理节点确定的标识号的影响,但包含待处理节点为下一级节点确定的标识号以及当前还未处理过的其他节点的标识号,此时,若新的标识号为0,表示所有的节点都已处理完毕,若新的标识号不为0,表示还存在未处理过的节点。
本申请实施例还提供一种事件追踪器,所述事件追踪器包括接收模块、匹配模块、结果确认模块、解析模块和报告模块,其中:
接收模块,用于接收数据流经的多个节点中的第一级节点发送的事件消息,所述事件消息中包括事件标识,以及接收除第一级节点外的其他任意节点,按照节点间上下级关系依次作为待处理节点时发送的事件消息;
匹配模块,用于针对接收模块当前接收到的待处理节点发送的事件消息,对该待处理节点发送的事件消息中包含的事件标识与所述第一级节点发送的事件标识进行匹配操作,若匹配,则触发结果确认模块;
结果确认模块,用于提取出待处理节点发送的事件消息中包含的处理结果,若提取出的处理结果是处理失败,则触发报告模块,若提取出的处理结果是处理成功,则触发解析模块;
解析模块,用于判断是否还存在未处理的节点,若是,则触发所述接收模块继续接收未处理的节点作为待处理节点时发送的事件消息;否则,触发报告模块;
报告模块,用于在受到结果确认模块的触发时,向所述第一级节点报告数据处理失败,在受到解析模块的触发时,向所述第一级节点报告数据处理成功。
从以上方案可以看出,由于本申请实施例的事件追踪器对流水线过程进行实时追踪,无论是流水线过程处理成功还是处理失败,最终的处理结果都无需由节点间依次报告,而是由事件追踪器直接向第一级节点报告,可极大地缩短处理结果传递至第一级节点的链路。
优选地,所述第一级节点发送的事件消息中还包括所述第一级节点的下一级节点的节点信息;
解析模块,具体用于确定所述待处理节点发送的事件消息中是否包含所述待处理节点的下一级节点的节点信息,若是,则确定存在还未处理的节点;否则,根据所述待处理节点的节点信息确定所述待处理节点的上一级节点,并根据确定的该上一级节点作为待处理节点时发送的事件消息中包含的下一级节点的节点信息,在该节点信息对应的节点都已处理过时,确定不存在还未处理的节点,在该节点信息对应的节点没有全部处理过时,确定存在还未处理的节点。
由于从第一级节点开始,待处理节点若有下一级节点,则将下一级节点的节点信息包含在事件消息中发送,因此,事件追踪器可在事件消息中包含下一级节点的节点信息时确定还存在未处理的节点,在事件消息中不包含下一级节点的节点信息时,可根据待处理节点的上一级节点发送的事件消息中包含的下一级节点的节点信息确定最低级节点是否全部处理完毕,即确定出是否还存在未处理的节点。
优选地,若所述第一级节点的下一级节点个数为1个,则所述第一级节点发送的下一级节点的节点信息是:第一级节点为其下一级节点确定的标识号;
若所述第一级节点的下一级节点个数大于1个,则所述第一级节点发送的下一级节点的节点信息是:第一级节点对每个下一级节点确定的标识号进行异或操作后得到的标识号。
由于上一级节点为下一级节点确定的标识号可以唯一表示一个节点,因此,当下一级节点的个数为1个时,可用下一级节点的标识号来表示这1个下一级节点;当下一级节点个数大于1个时,通过将各下一级节点的标识号进行异或操作后的结果来整体反应所有的下一级节点。
优选地,在所述待处理节点有下一级节点时,发送的事件消息中包含的下一级节点的节点信息为:所述待处理节点的上一级节点为该待处理节点确定的标识号与所述待处理节点为下一级节点确定的标识号进行异或操作后得到的标识号;
在所述待处理节点没有下一级节点且所述待处理节点的上一级节点个数为1个时,所述待处理节点发送的事件消息中还包括:所述待处理节点的上一节点为该待处理节点确定的标识号;
在所述待处理节点没有下一级节点且所述待处理节点的上一级节点个数大于1个时,所述待处理节点发送的事件消息中还包括:所述待处理节点的各上一节点为该待处理节点确定的标识号进行异或操作后得到的标识号。
由于上一级节点为下一级节点确定的标识号可以唯一表示一个节点,因此,待处理节点根据是否有下一级节点以及上一级节点的数量对个标识号进行异或操作后,得到的标识号可以从整体上反应上一级节点为待处理节点确定的标识号以及待处理节点为下一级节点确定的标识号。
优选地,解析模块,具体用于将所述待处理节点在所述事件消息中包含的标识号与本地已存储的标识号进行异或操作,所述本地已存储的标识号为:之前接收到的包含相同事件标识的事件消息中的标识号进行异或操作后得到的标识号,若所述待处理节点在所述事件消息中包含的标识号与本地已存储的标识号进行异或操作的结果为0,则确定节点都已处理过;否则,确定存在还未处理过的节点,并存储本次异或操作后得到的标识号。
由于异或操作的原则是相同的数异或操作后为0,不同的数异或操作后为1,将待处理节点发送的标识号与当前已存储的标识号进行异或处理后,得到的新的标识号中消除了其上一级节点为待处理节点确定的标识号的影响,但包含待处理节点为下一级节点确定的标识号以及当前还未处理过的其他节点的标识号,此时,若新的标识号为0,表示所有的节点都已处理完毕,若新的标识号不为0,表示还存在未处理过的节点。
附图说明
图1为一种节点拓扑架构示意图;
图2为本申请实施例一中报告数据处理结果的方法步骤示意图;
图3为本申请实施例二中报告数据处理结果的方法步骤示意图;
图4为本申请实施例三中报告数据处理结果的方法步骤示意图;
图5为本申请实施例四中报告数据处理结果的系统结构示意图;
图6为本申请实施例五中事件追踪器的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,本申请所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例为例避免由于处理结果(包括处理成功和处理失败)报告至第一级节点的链路过长所引起的诸如增加处理结果丢包的风险、延长第一级节点针对处理结果的响应时间等问题,本申请实施例在流水线过程中设置事件追踪器(acker),由数据流经的节点依次向acker发送本节点对数据处理后的事件消息,当acker识别出某一节点发送的事件消息中包含的处理结果是处理失败时,直接向第一级节点报告数据处理失败,无需从处理失败的节点开始,依次向上一级节点报告处理失败的处理结果;当acker识别出某一节点发送的事件消息中包含的处理结果是处理成功时,判定当前的流水线过程是否已结束,若已结束,则直接向所述第一级节点报告数据处理成功,无需从最后一个节点开始,依次向上一级节点报告处理成功的处理结果,若还未结束,则acker继续接收并识别下一个节点发送的事件消息,直至出现处理失败的处理结果或是流水线过程结束。
由于本申请实施例的方案由额外设置的acker来对流水线过程进行实时追踪,无论是流水线过程处理成功还是处理失败,最终的处理结果都无需由节点间依次报告,而是由acker直接向第一级节点报告,可极大地缩短处理结果(包括处理成功和处理失败)传递至第一级节点的链路。
下面结合说明书附图对本申请实施例的方案进行详细描述。
实施例一:
如图2所示,为本实施例一中报告数据处理结果的方法步骤示意图,所述方法主要包括以下步骤:
步骤101:acker接收第一级节点发送的事件消息,所述事件消息中包括事件标识。
以图1所示的节点拓扑架构为例,所述第一级节点即为图1中的A节点,第一级节点从外部获取数据a后,可为本次数据的流水线过程生成唯一的事件标识,该事件标识将在数据的整个流水线过程中使用,用于标识本次流水线过程。
优选地,第一级节点可采用uuid(Universally Unique Identifier,通用唯一识别码)算法生成一个128bit的事件标识,该事件标识可以以Root ID表示。本申请实施例并不对事件标识的生成方式做限定,任何可用于生成唯一事件标识的方式都可应用在本申请实施例的方案中。在本申请之后的各实施例中,acker对不同节点发送的事件消息中的内容做的所有操作,都是基于各事件消息中包含相同的事件标识的情况。
第一级节点生成事件标识后,可以将所述事件标识包含在事件消息中发送给acker;同时,第一级节点还对获取的数据a进行处理后,分别生成数据b和数据c,并将所述事件标识携带在所述数据b中发送给下一级的B节点,以及将所述事件标识携带在所述数据c中发送给下一级C节点。
在本申请实施例的方案中,第一级节点可以先向acker发送所述事件消息,再向B节点和C节点分别发送携带有事件标识的数据b和数据c,也可以先向B节点和C节点分别发送携带有事件标识的数据b和数据c,再向acker发送所述事件消息,也可以并行向B节点和C节点以及acker发送相应的消息,只要确保acker之后在接收到B节点、C节点发送的事件消息之前已接收到A节点发送的事件消息即可。
所述第一级节点可以在发送给acker的事件消息中包含特定标识(INIT),用于告知acker当前的事件消息是第一级节点发送的,使acker可以区分第一级点和其他节点发送的事件消息。
以图1所示的节点拓扑架构为例,A节点发送给acker的事件消息中可以包含Root ID和INIT,当acker接收到事件消息后,从中识别出INIT,表示当前接收到的事件消息是第一级节点发送的,需在本地存储当前第一级节点发送的事件消息中的Root ID。
步骤102:acker确定待处理节点。
在本申请实施例的方案中,acker在步骤101已经接收到了第一级节点发送的事件消息,即acker已完成对第一级节点的事件追踪,接下来,acker将对除所述第一级节点外的其他任意节点,按照节点间的上下级关系,依次对每个节点在流水线中的处理过程(即节点对数据的处理)进行事件追踪,acker当前追踪的节点即为待处理节点。
步骤103:acker接收待处理节点发送的事件消息,所述事件消息中包含事件标识和处理结果。
数据在流经各节点时,从第一级节点开始,上一级节点向下一级节点发送的数据中都将携带第一级节点生成的事件标识。当某一节点成为待处理节点时,该待处理节点对接收到的数据处理完毕后,向acker发送事件消息,并在发送给acker的事件消息中包含事件标识。
每一个节点向acker发送的事件消息中都包含事件标识的目的是:由于acker可同时追踪多个流水线过程,且同一节点也可能同时是多个流水线过程中涉及的节点,因此,通过上下级节点间发送数据时携带唯一的事件标识、且每个待处理节点向acker发送的事件消息中包含事件标识的做法,可以使acker准确定位出当前的待处理节点是哪一个流水线过程中涉及的节点。
当acker对待处理节点发送的事件消息中的事件标识进行识别后,会进一步识别出所述事件消息中是否包含处理结果,若是,则可以确定所述待处理节点是流水线过程中涉及的非第一级节点;若否,则acker对事件消息中是否包含INIT进行识别,若同时确定事件消息中不包含处理结果和INIT,则acker确定所述待处理节点不是追踪的流水线中涉及的节点,丢弃所述待处理节点发送的事件消息,跳转至步骤102。
步骤104:acker提取出待处理节点发送的事件消息中的事件标识,根据该事件标识确定所述待处理节点所在流水线中的第一级节点。
由于acker预先存储了各第一级节点发送的事件标识,因此,通过事件标识的匹配,可以确定出所述待处理节点所在流水线中的第一级节点。
步骤105:acker提取出待处理节点发送的事件消息中包含的处理结果,若所述处理结果是处理成功,则执行步骤106;否则,执行步骤107。
步骤106:acker判断是否还存在未处理的节点,若是,则跳转至步骤102,继续对流水线过程中的节点进行追踪;否则,acker向所述第一级节点报告数据处理成功,完成对流水线的追踪。
步骤107:acker向所述第一级节点报告数据处理失败,完成对流水线的追踪。
通过本申请实施例一的方案,由acker实时对流水线中各节点对数据的处理过程进行追踪,一旦发现某一节点对数据处理失败时,立即报告给第一级节点,在流水线过程成功结束时,acker也直接给第一级节点报告处理成功,处理结果无需由节点间依次报告,极大地缩短处理结果传递至第一级节点的链路,降低了处理结果丢包的风险,缩小了第一级节点针对处理结果的响应时间。
优选地,可以在每一节点(包括第一级节点和非第一级节点)向acker发送的事件消息中包含该节点的下一级节点的节点信息,若该节点向acker发送的事件消息中不包含下一级节点的节点信息,则可确定该节点是最后一级节点,基于此,acker可对流水线过程是否结束进行解析,下面通过实施例二来进行详细描述。
实施例二:
本申请实施例二在实施例一的基础上,以上一级节点发送给acker的事件消息中包含有其下一级节点的节点信息为例,描述本申请实施例一的具体实现过程,如图3所示,主要包括以下步骤:
步骤201:acker接收第一级节点发送的事件消息,所述事件消息中包括事件标识和下一级节点的节点信息。
仍以图1所示的节点拓扑架构为例,A节点向acker发送的事件消息中除了包含Root ID、INIT外,还可以包含下一级B节点和C节点的节点信息,其目的是使acker获知当前追踪的第一级节点是否有下一级节点,若有,确认第一级节点的下一级节点,以便于在对第一级节点的下一级节点进行追踪时,可以检查下一级节点是否全部追踪完毕。
步骤202:acker确定待处理节点。
本步骤202的实现方式与实施例一中步骤102的实现方式相同。
步骤203:acker接收待处理节点发送的事件消息,根据其中包含的事件标识确定所述待处理节点所在流水线中的第一级节点,以及在其中包含的处理结果是处理成功时,执行步骤204;否则,执行步骤207。
本步骤203的实现方式与实施例一中步骤103至步骤105的实现方式相同。
步骤204:acker判断待处理节点发送的事件消息中是否包含下一级节点的节点信息,若是,则跳转至步骤202;否则,执行步骤205。
在本步骤204的方案中,若待处理节点发送的事件消息中包含有下一级节点的节点信息,表示待处理节点不是最低级节点,此时还存在未处理的节点,需跳转至步骤202,继续对未处理的节点进行追踪。若待处理节点发送的事件消息中不包含有下一级节点的节点信息,表示待处理节点是最低级节点,此时,需进一步判断是否还存在未处理的节点。
步骤205:acker根据所述待处理节点的节点信息确定所述待处理节点的上一级节点,并根据待处理节点的上一级节点发送的事件消息中包含的下一级节点的节点信息,确定该节点信息对应的节点是否都已处理过,若是,则执行步骤206;否则,执行步骤202。
在本步骤205的方案中,由于每一个非最低级的节点在作为待处理节点时都会向acker发送的事件消息中携带自身的下一级节点的节点信息,同时还携带自身的节点信息,因此,当最低级的节点作为待处理节点时,acker可根据该待处理节点的节点确定出待处理节点的上一级节点,并根据该上一级节点在作为待处理节点时发送的事件消息中的下一级节点的节点信息,就可确定出最低级的所有节点,进而判定最低级的所有节点是否都已追踪过,若是,则确定当前流水线过程追踪完毕,否则,还需继续对还未处理过的节点进行追踪。
仍以图1所示的节点拓扑架构为例,若待处理节点是D节点,则D节点向acker发送的事件消息中可以包含下一级E节点的节点信息,因此,acker可直接确定当前还有未追踪过的节点,需再次执行步骤202。
若待处理节点是E节点,则E节点向acker发送的事件消息中不包含下一级节点的节点信息,因此,acker可确定E节点是最低级节点,但此时还可能有其他最低级节点还未追踪过,因此,acker可根据E节点的节点信息确定E节点的上一级节点D节点,并在确定D节点发送的事件消息中包含的下一级节点的节点信息仅为E节点时,确定当前流水线过程追踪完毕,可执行步骤206。
步骤206:acker向所述第一级节点报告数据处理成功,完成对流水线的追踪。
步骤207:acker向所述第一级节点报告数据处理失败,完成对流水线的追踪。
在本申请实施例二的方案中,流水线中涉及的各节点可以在本地记录下一级节点的节点信息,并在作为待处理节点时,向acker发送下一级节点的节点信息,使acker可以确定当前流水线过程是否追踪完毕。
所述下一级节点的节点信息可以以状态树的形式存储在各级节点内,当然,本申请实施例的方案也不限于以其他方式来反映某一节点的下一级节点的节点信息,例如,本申请实施例也不限于由上一级节点为下一级节点生成唯一标识号作为下一级节点的节点信息,或是由上一级节点为下一级的多个节点分别生成唯一标识号后,将各标识号进行异或操作后得到的标识号作为下一级节点的节点信息。
实施例三:
本申请实施例三以上一级节点为下一级的多个节点分别生成唯一标识号后,将各标识号进行异或操作后得到的标识号作为下一级节点的节点信息的情况为例,对本申请实施例一和实施例二的方案做进一步说明,如图4所示,本申请实施例三的方案主要包括以下步骤:
步骤301:第一级节点为其下一级节点确定标识号。
若第一级节点的下一级节点的数量为1个,则为这1个下一级节点确定标识号;若第一级节点的下一级节点的数量为多个,则分别为每个下一级节点确定标识号。
仍以图1所示的节点拓扑架构为例,A节点确定下一级节点分别为B节点和C节点,则A节点可以通过uuid算法分别为B节点生成标识号_B、为C节点生成标识号_C。
在本实施例的方案中,A节点可以通过uuid算法为B节点和C节点生成唯一的标识号,也可以将在路由过程中为各节点分配的唯一任务标识(task id)作为下一级节点的标识号。本实施例并不对标识号的内容以及生成方式做限定,只要节点的标识号能够唯一表示该节点即可。
步骤302:若第一级节点的下一级节点的数量为1个,则第一级节点将所述下一级节点的标识号作为下一级节点的节点信息包含在事件消息中发送给acker;若第一级节点的下一级节点的数量为1个,则第一级节点对每个下一级节点确定的标识号进行异或操作后得到的标识号作为下一级节点的节点信息包含在事件消息中发送给acker。
仍以图1所示的节点拓扑架构为例,A节点为下一级的B节点生成标识号_B、为C节点生成标识号_C后,可将标识号_B和标识号_C进行异或操作后得到的标识号作为下一级节点的节点信息包含在事件消息中发送给acker。
假设A节点的下一级节点有3个节点,分别为B节点、C节点和C/节点,分别生成的标识号为标识号_B、标识号_C和标识号_C/,则A节点可将标识号_B和标识号_C进行异或操作,并将操作结果再与标识号_C/进行异或操作,将最终得到的标识号作为下一级节点的节点信息包含在事件消息中发送给acker。对于更多数量的下一级节点的标识号操作方式与3个下一级节点的操作方式相同,此处不再赘述。
步骤303:acker接收第一级节点发送的事件消息,并创建事件标识和下一级节点标识号的映射关系。
此时,第一级节点发送给acker的事件消息为<Root ID、INIT、下一级节点标识号>,这里的下一级节点标识号是指进行了异或操作后的节点标识号。
acker接收到所述事件消息时,识别出事件消息中包含有INIT,则在本地创建Root ID和下一级节点标识号的映射关系。
以图1所示的节点拓扑架构为例,A节点发送给acker的下一级节点标识号是标识号_B和标识号_C进行异或操作后的标识号。
步骤304:第一级节点对数据进行处理后,将处理后的数据发送给下一级节点,并在其中携带事件标识和为该下一级节点确定的标识号。
仍以图1所示的节点拓扑架构为例,A节点向B节点发送数据b时,在其中携带Root ID和标识号_B,向C节点发送数据c时,在其中携带Root ID和标识号_C。
需要说明的是,本实施例中的步骤303和步骤304的执行先后顺序不固定,可以先执行步骤303,再执行步骤304,也可以是先执行步骤304,再执行步骤303,还可以是步骤303和步骤304并行执行。
步骤305:当某一节点作为待处理节点时,该待处理节点接收上一级节点发送的数据,并从中提取出Root ID和上一级节点为待处理节点确定的标识号。
仍以图1所示的节点拓扑架构为例,当B节点作为待处理节点时,B节点从接收到的数据b中提取出A节点生成的Root ID以及A节点为B节点确定的标识号_B。此时,B节点可创建一个map,在创建的map中存储Root ID和标识号_B,此时,标识号_B可作为B节点的输入(input)存储在map中。
当D节点作为待处理节点时,其上一级节点为B节点和C节点,B节点通过uuid算法,为D节点生成唯一标识号_D1,C节点通过uuid算法,为D节点生成唯一标识号_D2,则B节点将Root ID和标识号_D1携带在数据d1中发送给D节点;C节点将Root ID和标识号_D2携带在数据d2中发送给D节点。此时,D节点可从接收到的数据d1和数据d2中提取出Root ID以及B节点和C节点为D节点确定的标识号_D1和标识号_D2,D节点可创建一个map,在创建的map中存储Root ID和标识号_D1、标识号_D2。
步骤306:待处理节点对接收到的数据进行处理后,得到处理结果,在待处理节点有下一级节点时,执行步骤307,在待处理节点没有下一级节点时,执行步骤309或步骤310。
步骤307:待处理节点为下一级节点确定标识号。
仍以图1所示的节点拓扑架构为例,当B节点作为待处理节点时,其下一级节点为D节点,则B节点通过uuid算法,为D节点生成唯一标识号_D1。
当C节点作为待处理节点时,其下一级节点也为D节点,则C节点通过uuid算法,为D节点生成唯一标识号_D2。
当D节点作为待处理节点时,其下一级节点为E节点,则D节点通过uuid算法,为E节点生成唯一标识号_E。
步骤308:待处理节点将上一级节点为自身确定的标识号与自身为下一级节点确定的标识号进行异或操作,将得到的标识号作为待处理节点的下一级节点的节点信息包含在事件消息中发送给acker,并跳转至步骤311。
仍以图1所示的节点拓扑架构为例,当B节点作为待处理节点时,其上一级的A节点为B节点确定的标识号为标识号_B,B节点为下一级的D节点确定的标识号为标识号_D1,则B节点将标识号_B和标识号_D1进行异或操作后得到的标识号作为B节点下一级节点的节点信息,包含在事件消息中发送给acker。
当C节点作为待处理节点时,其上一级的A节点为C节点确定的标识号为标识号_C,C节点为下一级的D节点确定的标识号为标识号_D2,则C节点将标识号_C和标识号_D2进行异或操作后得到的标识号作为C节点下一级节点的节点信息,包含在事件消息中发送给acker。
当D节点作为待处理节点时,其上一级的B节点和C节点为D节点确定的标识号为标识号_D1和标识号_D2,D节点为下一级的E节点确定的标识号为标识号_E,则D节点将标识号_D1、标识号_D2进行异或操作后的结果再与标识号_E进行异或操作,最终得到的标识号作为D节点下一级节点的节点信息,包含在事件消息中发送给acker。
步骤309:在待处理节点的上一级节点个数为1个时,所述待处理节点将上一级节点为自身确定的标识号包含在事件消息中发送给acker,并跳转至步骤311。
当E节点作为待处理节点时,其上一级的D节点为E节点确定的标识号为标识号_E,则E节点将标识号_E包含在事件消息中发送给acker。
步骤310:在待处理节点的上一级节点个数大于1个时,所述待处理节点将各上一级节点为自身确定的标识号进行异或操作后得到的标识号包含在事件消息中发送给acker,并跳转至步骤311。
步骤311:acker解析所述待处理节点在所述事件消息中包含的处理结果,若处理结果为处理失败,则向所述第一级节点报告数据处理失败,若处理结果是处理成功,则执行步骤312。
在本步骤311中,待处理节点发送给acker的事件消息中包含的处理结果也可以以ACK或FAIL表示,若acker解析出ACK,表示处理结果是处理成功,若acker解析出FAIL,表示处理结果是处理失败。
当acker解析出FAIL,向所述第一级节点报告数据处理失败的内容可以为<Root ID,FAIL>。
步骤312:acker将所述待处理节点在所述事件消息中包含的标识号与本地已存储的标识号进行异或操作,若操作结果为0,则执行步骤313,否则,执行步骤305。
在本实施例的方案中,acker在接收到第一级节点发送的事件消息时,识别出事件消息中包含有INIT,会在本地创建Root ID和第一级节点的下一级节点标识号的映射关系。之后,当acker首次接收到待处理节点发送的包含相同Root ID的事件消息时,将待处理节点发送的事件消息中的标识号与本地存储的Root ID映射的标识号进行异或操作,若异或操作结果不为0,表示还存在未处理的节点,将本次异或操作结果更新Root ID映射的标识号。当下一次再有待处理节点发送包含相同Root ID的事件消息时,将该事件消息中的标识号与本地存储的更新后的标识号进行映射操作以执行本步骤312的方案,以此类推,在每次执行步骤312时,都用acker本地存储的最新的标识号与待处理节点发送的事件消息中的标识号进行异或操作。若异或操作结果为0,表示不存在未处理的节点,可以向所述第一级节点报告数据处理成功;否则,表示还存在未处理的节点,需跳转至步骤305继续对未处理的节点进行追踪。
本步骤312的实现原理为:
由于异或操作的原则是相同的数异或操作后为0,不同的数异或操作后为1,即:0xor0=0,1xor0=1,0xor1=1,1xor1=0。
acker首次接收到的标识号是第一级节点发送的针对其下一级节点的标识号,当acker再接收到第一级节点的下一级节点作为待处理节点发送的标识号时,由于所述待处理节点发送的标识号是其上一级节点为其确定的标识号与其为下一级节点确定的标识号进行异或操作后的标识号,因此,acker将待处理节点发送的标识号与当前已存储的标识号进行异或处理后,得到的新的标识号中消除了其上一级节点为待处理节点确定的标识号的影响,但包含待处理节点为下一级节点确定的标识号以及当前还未处理过的其他节点的标识号。此时,若新的标识号为0,表示所有的节点都已处理完毕,若新的标识号不为0,则利用新的标识号更新acker本地存储的标识号,使得下一个待处理节点发送事件消息时,可以再次按照上述机制进行循环操作。
仍以图1所示的节点拓扑架构为例,acker接收并存储的A节点发送的事件消息中包含的标识号为标识号_B和标识号_C异或操作后的标识号。
当B节点作为待处理节点时,其发送给acker的事件消息中包含的标识号为标识号_B和标识号_D1异或操作后的标识号,此时,acker将本地存储的标识号与B节点发送给acker的标识号进行异或操作后,得到的新的标识号消除了标识号_B,但仍保留了标识号_C和标识号_D1,acker将新的标识号存储在本地。
当C节点作为待处理节点时,其发送给acker的事件消息中包含的标识号为标识号_C和标识号_D2异或操作后的标识号,此时,acker将B节点处理后存储的标识号与C节点发送给acker的标识号进行异或操作后,得到的新的标识号消除了标识号_C,但保留了标识号_D1和标识号_D2,acker将本地得到的新的标识号存储在本地。
当D节点作为待处理节点时,其发送给acker的事件消息中包含的标识号为标识号_D1、标识号D2和标识号_E异或操作后的标识号,此时,acker将C节点处理后存储的标识号与D节点发送给acker的标识号进行异或操作后,得到的新的标识号消除了标识号_D1和标识号_D2,但保留了标识号_E,acker将本地得到的新的标识号存储在本地。
当E节点作为待处理节点时,其发送给acker的事件消息中包含的标识号为标识号_E,此时,acker将D节点处理后存储的标识号与E节点发送给acker的标识号进行异或操作后,得到的新的标识号消除了标识号_E,新的标识号为0,此时,acker确认对流水线的追踪过程结束。
步骤313:acker向所述第一级节点报告数据处理成功。
当acker向所述第一级节点报告数据处理失败的内容可以为<Root ID,ACK>。
基于本申请实施例三的方案,除了能够得到实施例一和实施例二的效果外,由于待处理节点向acker发送的标识号与其上一级节点为待处理节点确定的标识号和待处理节点为其下一级节点确定的标识号相关,因此,待处理节点内部无需存储用于表示待处理节点的上下级节点之间关系的状态树。仍以图1所示的架构为例,基于背景技术中描述的流水线过程,各节点内需要分别维护一个状态树,例如:
A节点中维护的状态树为<a,b&c>,表示A节点接收并处理的数据是数据a,发送给下一级B节点的数据是数据b,发送给下一级C节点的数据是数据c。
B节点中维护的状态树为<b,[A,d1]>,表示B节点的上一级节点是A节点,接收并处理的数据是数据b,发送给下一级D节点的数据是数据d1。
C节点中维护的状态树为<c,[A,d2]>,表示C节点的上一级节点是A节点,接收并处理的数据是数据c,发送给下一级D节点的数据是数据d2。
D节点中维护的状态树为<d1,[B,e]>,<d2,[C,e]>,表示D节点的上一级节点是B节点和C节点,接收并处理的数据是数据d1和数据d2,发送给下一级E节点的数据是数据e。
由于每个节点都需按照上述事例来维护一个状态树,如果节点的拓扑架构发生变化,则节点内维护的状态树也要发生变化,这会给整个系统的吞吐量带来额外的开销。
而利用本申请实施例三的方案,待处理节点的上一级节点为待处理节点确定的标识号可携带在数据中发送给待处理节点,待处理节点的下一级节点的标识号可由待处理节点动态确定,待处理节点无需再本地维护状态树,即无需维护链路信息,不会影响系统的吞吐量。
实施例四:
本申请实施例四还描述了一种与实施例一至实施例三属于同一发明构思下的报告数据处理结果的系统,如图5所示,所述系统包括数据流经的多个节点和事件追踪器,其中:
第一级节点,用于向所述事件追踪器发送事件消息,所述事件消息中包括事件标识;
除所述第一级节点外的其他任意节点,按照节点间上下级关系依次作为待处理节点,用于向所述事件追踪器发送事件消息;
事件追踪器,用于针对每个待处理节点执行以下操作:
接收待处理节点发送的事件消息,在待处理节点发送的事件消息中包含的事件标识与所述第一级节点发送的事件标识匹配时,提取出待处理节点发送的事件消息中包含的处理结果,若提取出的处理结果是处理失败,则向所述第一级节点报告数据处理失败;若提取出的处理结果是处理成功,则在存在还未处理的节点时,针对还未处理的节点继续执行所述操作,在不存在还未处理的节点时,向所述第一级节点报告数据处理成功。
优选地,所述第一级节点发送的事件消息中还包括所述第一级节点的下一级节点的节点信息;
所述事件追踪器,具体用于确定所述待处理节点发送的事件消息中是否包含所述待处理节点的下一级节点的节点信息,若是,则确定存在还未处理的节点;否则,根据所述待处理节点的节点信息确定所述待处理节点的上一级节点,并根据确定的该上一级节点作为待处理节点时发送的事件消息中包含的下一级节点的节点信息,在该节点信息对应的节点都已处理过时,确定不存在还未处理的节点,在该节点信息对应的节点没有全部处理过时,确定存在还未处理的节点。
优选地,若所述第一级节点的下一级节点个数为1个,则所述第一级节点发送的下一级节点的节点信息是:第一级节点为其下一级节点确定的标识号;
若所述第一级节点的下一级节点个数大于1个,则所述第一级节点发送的下一级节点的节点信息是:第一级节点对每个下一级节点确定的标识号进行异或操作后得到的标识号。
优选地,在所述待处理节点有下一级节点时,发送的事件消息中包含的下一级节点的节点信息为:所述待处理节点的上一级节点为该待处理节点确定的标识号与所述待处理节点为下一级节点确定的标识号进行异或操作后得到的标识号;
在所述待处理节点没有下一级节点且所述待处理节点的上一级节点个数为1个时,所述待处理节点发送的事件消息中还包括:所述待处理节点的上一节点为该待处理节点确定的标识号;
在所述待处理节点没有下一级节点且所述待处理节点的上一级节点个数大于1个时,所述待处理节点发送的事件消息中还包括:所述待处理节点的各上一节点为该待处理节点确定的标识号进行异或操作后得到的标识号。
优选地,所述事件追踪器,具体用于将所述待处理节点在所述事件消息中包含的标识号与本地已存储的标识号进行异或操作,所述本地已存储的标识号为:之前接收到的包含相同事件标识的事件消息中的标识号进行异或操作后得到的标识号,若所述待处理节点在所述事件消息中包含的标识号与本地已存储的标识号进行异或操作的结果为0,则确定节点都已处理过;否则,确定存在还未处理过的节点,并存储本次异或操作后得到的标识号。
实施例五:
本申请实施例五对实施例四中的事件追踪器的内部结构进行了描述,如图6所示,所述事件追踪器包括:接收模块11、匹配模块12、结果确认模块13、解析模块14和报告模块15,其中
接收模块11用于接收数据流经的多个节点中的第一级节点发送的事件消息,所述事件消息中包括事件标识,以及接收除第一级节点外的其他任意节点,按照节点间上下级关系依次作为待处理节点时发送的事件消息;
匹配模块12用于针对接收模块当前接收到的待处理节点发送的事件消息,对该待处理节点发送的事件消息中包含的事件标识与所述第一级节点发送的事件标识进行匹配操作,若匹配,则触发结果确认模块13;
结果确认模块13用于提取出待处理节点发送的事件消息中包含的处理结果,若提取出的处理结果是处理失败,则触发报告模块15,若提取出的处理结果是处理成功,则触发解析模块14;
解析模块14用于判断是否还存在未处理的节点,若是,则触发所述接收模块11继续接收未处理的节点作为待处理节点时发送的事件消息;否则,触发报告模块15;
报告模块15用于在受到结果确认模块13的触发时,向所述第一级节点报告数据处理失败,在受到解析模块14的触发时,向所述第一级节点报告数据处理成功。
所述第一级节点发送的事件消息中还包括所述第一级节点的下一级节点的节点信息;
解析模块14具体用于确定所述待处理节点发送的事件消息中是否包含所述待处理节点的下一级节点的节点信息,若是,则确定存在还未处理的节点;否则,根据所述待处理节点的节点信息确定所述待处理节点的上一级节点,并根据确定的该上一级节点作为待处理节点时发送的事件消息中包含的下一级节点的节点信息,在该节点信息对应的节点都已处理过时,确定不存在还未处理的节点,在该节点信息对应的节点没有全部处理过时,确定存在还未处理的节点。
若所述第一级节点的下一级节点个数为1个,则所述第一级节点发送的下一级节点的节点信息是:第一级节点为其下一级节点确定的标识号;
若所述第一级节点的下一级节点个数大于1个,则所述第一级节点发送的下一级节点的节点信息是:第一级节点对每个下一级节点确定的标识号进行异或操作后得到的标识号。
在所述待处理节点有下一级节点时,发送的事件消息中包含的下一级节点的节点信息为:所述待处理节点的上一级节点为该待处理节点确定的标识号与所述待处理节点为下一级节点确定的标识号进行异或操作后得到的标识号;
在所述待处理节点没有下一级节点且所述待处理节点的上一级节点个数为1个时,所述待处理节点发送的事件消息中还包括:所述待处理节点的上一节点为该待处理节点确定的标识号;
在所述待处理节点没有下一级节点且所述待处理节点的上一级节点个数大于1个时,所述待处理节点发送的事件消息中还包括:所述待处理节点的各上一节点为该待处理节点确定的标识号进行异或操作后得到的标识号。
解析模块14具体用于将所述待处理节点在所述事件消息中包含的标识号与本地已存储的标识号进行异或操作,所述本地已存储的标识号为:之前接收到的包含相同事件标识的事件消息中的标识号进行异或操作后得到的标识号,若所述待处理节点在所述事件消息中包含的标识号与本地已存储的标识号进行异或操作的结果为0,则确定节点都已处理过;否则,确定存在还未处理过的节点,并存储本次异或操作后得到的标识号。
本实施例中的事件追踪器内的各逻辑模块具有实现实施例一至实施例三中的事件追踪器的所有功能的能力,此处不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,所述计算机设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitory media),如调制的数据信号和载波。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (15)
1.一种报告数据处理结果的方法,其特征在于,所述方法包括:
接收第一级节点发送的事件消息,所述事件消息中包括事件标识;
针对除所述第一级节点外的其他任意节点,按照节点间上下级关系依次执行以下操作:
接收待处理节点发送的事件消息,在待处理节点发送的事件消息中包含的事件标识与所述第一级节点发送的事件标识匹配时,提取出待处理节点发送的事件消息中包含的处理结果;
若提取出的处理结果是处理失败,则向所述第一级节点报告数据处理失败;若提取出的处理结果是处理成功,则在存在还未处理的节点时,针对还未处理的节点重复执行所述操作,在不存在还未处理的节点时,向所述第一级节点报告数据处理成功。
2.如权利要求1所述的方法,其特征在于,所述第一级节点发送的事件消息中还包括所述第一级节点的下一级节点的节点信息;
通过以下方式确定是否存在还未处理的节点:
确定所述待处理节点发送的事件消息中是否包含所述待处理节点的下一级节点的节点信息,若是,则确定存在还未处理的节点;
否则,根据所述待处理节点的节点信息确定所述待处理节点的上一级节点,并根据确定的该上一级节点作为待处理节点时发送的事件消息中包含的下一级节点的节点信息,在该节点信息对应的节点都已处理过时,确定不存在还未处理的节点,在该节点信息对应的节点没有全部处理过时,确定存在还未处理的节点。
3.如权利要求2所述的方法,其特征在于,若所述第一级节点的下一级节点个数为1个,则所述第一级节点发送的下一级节点的节点信息是:第一级节点为其下一级节点确定的标识号;
若所述第一级节点的下一级节点个数大于1个,则所述第一级节点发送的下一级节点的节点信息是:第一级节点对每个下一级节点确定的标识号进行异或操作后得到的标识号。
4.如权利要求3所述的方法,其特征在于,在所述待处理节点有下一级节点时,发送的事件消息中包含的下一级节点的节点信息为:所述待处理节点的上一级节点为该待处理节点确定的标识号与所述待处理节点为下一级节点确定的标识号进行异或操作后得到的标识号;
在所述待处理节点没有下一级节点且所述待处理节点的上一级节点个数为1个时,所述待处理节点发送的事件消息中还包括:所述待处理节点的上一节点为该待处理节点确定的标识号;
在所述待处理节点没有下一级节点且所述待处理节点的上一级节点个数大于1个时,所述待处理节点发送的事件消息中还包括:所述待处理节点的各上一节点为该待处理节点确定的标识号进行异或操作后得到的标识号。
5.如权利要求4所述的方法,其特征在于,通过以下方式确定节点是否都已处理过:
将所述待处理节点在所述事件消息中包含的标识号与本地已存储的标识号进行异或操作,所述本地已存储的标识号为:之前接收到的包含相同事件标识的事件消息中的标识号进行异或操作后得到的标识号;
若所述待处理节点在所述事件消息中包含的标识号与本地已存储的标识号进行异或操作的结果为0,则确定节点都已处理过;否则,确定存在还未处理过的节点,并存储本次异或操作后得到的标识号。
6.一种报告数据处理结果的系统,其特征在于,所述系统包括数据流经的多个节点和事件追踪器,其中:
第一级节点,用于向所述事件追踪器发送事件消息,所述事件消息中包括事件标识;
除所述第一级节点外的其他任意节点,用于按照节点间上下级关系依次作为待处理节点,用于向所述事件追踪器发送事件消息;
事件追踪器,用于针对每个待处理节点执行以下操作:
接收待处理节点发送的事件消息,在待处理节点发送的事件消息中包含的事件标识与所述第一级节点发送的事件标识匹配时,提取出待处理节点发送的事件消息中包含的处理结果,若提取出的处理结果是处理失败,则向所述第一级节点报告数据处理失败;若提取出的处理结果是处理成功,则在存在还未处理的节点时,针对还未处理的节点继续执行所述操作,在不存在还未处理的节点时,向所述第一级节点报告数据处理成功。
7.如权利要求6所述的系统,其特征在于,所述第一级节点发送的事件消息中还包括所述第一级节点的下一级节点的节点信息;
所述事件追踪器,具体用于确定所述待处理节点发送的事件消息中是否包含所述待处理节点的下一级节点的节点信息,若是,则确定存在还未处理的节点;
否则,根据所述待处理节点的节点信息确定所述待处理节点的上一级节点,并根据确定的该上一级节点作为待处理节点时发送的事件消息中包含的下一级节点的节点信息,在该节点信息对应的节点都已处理过时,确定不存在还未处理的节点,在该节点信息对应的节点没有全部处理过时,确定存在还未处理的节点。
8.如权利要求7所述的系统,其特征在于,若所述第一级节点的下一级节点个数为1个,则所述第一级节点发送的下一级节点的节点信息是:第一级节点为其下一级节点确定的标识号;
若所述第一级节点的下一级节点个数大于1个,则所述第一级节点发送的下一级节点的节点信息是:第一级节点对每个下一级节点确定的标识号进行异或操作后得到的标识号。
9.如权利要求8所述的系统,其特征在于,在所述待处理节点有下一级节点时,发送的事件消息中包含的下一级节点的节点信息为:所述待处理节点的上一级节点为该待处理节点确定的标识号与所述待处理节点为下一级节点确定的标识号进行异或操作后得到的标识号;
在所述待处理节点没有下一级节点且所述待处理节点的上一级节点个数为1个时,所述待处理节点发送的事件消息中还包括:所述待处理节点的上一节点为该待处理节点确定的标识号;
在所述待处理节点没有下一级节点且所述待处理节点的上一级节点个数大于1个时,所述待处理节点发送的事件消息中还包括:所述待处理节点的各上一节点为该待处理节点确定的标识号进行异或操作后得到的标识号。
10.如权利要求9所述的系统,其特征在于,
所述事件追踪器,具体用于将所述待处理节点在所述事件消息中包含的标识号与本地已存储的标识号进行异或操作,所述本地已存储的标识号为:之前接收到的包含相同事件标识的事件消息中的标识号进行异或操作后得到的标识号,若所述待处理节点在所述事件消息中包含的标识号与本地已存储的标识号进行异或操作的结果为0,则确定节点都已处理过;否则,确定存在还未处理过的节点,并存储本次异或操作后得到的标识号。
11.一种事件追踪器,其特征在于,所述事件追踪器包括接收模块、匹配模块、结果确认模块、解析模块和报告模块,其中:
接收模块,用于接收数据流经的多个节点中的第一级节点发送的事件消息,所述事件消息中包括事件标识,以及接收除第一级节点外的其他任意节点,按照节点间上下级关系依次作为待处理节点时发送的事件消息;
匹配模块,用于针对接收模块当前接收到的待处理节点发送的事件消息,对该待处理节点发送的事件消息中包含的事件标识与所述第一级节点发送的事件标识进行匹配操作,若匹配,则触发结果确认模块;
结果确认模块,用于提取出待处理节点发送的事件消息中包含的处理结果,若提取出的处理结果是处理失败,则触发报告模块,若提取出的处理结果是处理成功,则触发解析模块;
解析模块,用于判断是否还存在未处理的节点,若是,则触发所述接收模块继续接收未处理的节点作为待处理节点时发送的事件消息;否则,触发报告模块;
报告模块,用于在受到结果确认模块的触发时,向所述第一级节点报告数据处理失败,在受到解析模块的触发时,向所述第一级节点报告数据处理成功。
12.如权利要求11所述的事件追踪器,其特征在于,所述第一级节点发送的事件消息中还包括所述第一级节点的下一级节点的节点信息;
解析模块,具体用于确定所述待处理节点发送的事件消息中是否包含所述待处理节点的下一级节点的节点信息,若是,则确定存在还未处理的节点;否则,根据所述待处理节点的节点信息确定所述待处理节点的上一级节点,并根据确定的该上一级节点作为待处理节点时发送的事件消息中包含的下一级节点的节点信息,在该节点信息对应的节点都已处理过时,确定不存在还未处理的节点,在该节点信息对应的节点没有全部处理过时,确定存在还未处理的节点。
13.如权利要求12所述的事件追踪器,其特征在于,若所述第一级节点的下一级节点个数为1个,则所述第一级节点发送的下一级节点的节点信息是:第一级节点为其下一级节点确定的标识号;
若所述第一级节点的下一级节点个数大于1个,则所述第一级节点发送的下一级节点的节点信息是:第一级节点对每个下一级节点确定的标识号进行异或操作后得到的标识号。
14.如权利要求13所述的事件追踪器,其特征在于,在所述待处理节点有下一级节点时,发送的事件消息中包含的下一级节点的节点信息为:所述待处理节点的上一级节点为该待处理节点确定的标识号与所述待处理节点为下一级节点确定的标识号进行异或操作后得到的标识号;
在所述待处理节点没有下一级节点且所述待处理节点的上一级节点个数为1个时,所述待处理节点发送的事件消息中还包括:所述待处理节点的上一节点为该待处理节点确定的标识号;
在所述待处理节点没有下一级节点且所述待处理节点的上一级节点个数大于1个时,所述待处理节点发送的事件消息中还包括:所述待处理节点的各上一节点为该待处理节点确定的标识号进行异或操作后得到的标识号。
15.如权利要求14所述的事件追踪器,其特征在于,
解析模块,具体用于将所述待处理节点在所述事件消息中包含的标识号与本地已存储的标识号进行异或操作,所述本地已存储的标识号为:之前接收到的包含相同事件标识的事件消息中的标识号进行异或操作后得到的标识号,若所述待处理节点在所述事件消息中包含的标识号与本地已存储的标识号进行异或操作的结果为0,则确定节点都已处理过;否则,确定存在还未处理过的节点,并存储本次异或操作后得到的标识号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310293733.4A CN104281627B (zh) | 2013-07-12 | 2013-07-12 | 一种报告数据处理结果的方法、系统及事件追踪器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310293733.4A CN104281627B (zh) | 2013-07-12 | 2013-07-12 | 一种报告数据处理结果的方法、系统及事件追踪器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104281627A true CN104281627A (zh) | 2015-01-14 |
CN104281627B CN104281627B (zh) | 2018-12-21 |
Family
ID=52256503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310293733.4A Active CN104281627B (zh) | 2013-07-12 | 2013-07-12 | 一种报告数据处理结果的方法、系统及事件追踪器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104281627B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105323151A (zh) * | 2015-11-16 | 2016-02-10 | 东软集团股份有限公司 | 一种消息处理可靠性追踪方法及装置 |
WO2016206600A1 (zh) * | 2015-06-26 | 2016-12-29 | 北京奇虎科技有限公司 | 一种信息流数据的处理方法和装置 |
WO2017049861A1 (zh) * | 2015-09-25 | 2017-03-30 | 中兴通讯股份有限公司 | 数据处理状态监控方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101442758A (zh) * | 2007-11-19 | 2009-05-27 | 华为技术有限公司 | 故障诊断方法及装置 |
CN102209041A (zh) * | 2011-07-13 | 2011-10-05 | 上海红神信息技术有限公司 | 一种调度方法、装置及系统 |
WO2012112763A1 (en) * | 2011-02-18 | 2012-08-23 | Ab Initio Technology Llc | Restarting data processing systems |
-
2013
- 2013-07-12 CN CN201310293733.4A patent/CN104281627B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101442758A (zh) * | 2007-11-19 | 2009-05-27 | 华为技术有限公司 | 故障诊断方法及装置 |
WO2012112763A1 (en) * | 2011-02-18 | 2012-08-23 | Ab Initio Technology Llc | Restarting data processing systems |
CN102209041A (zh) * | 2011-07-13 | 2011-10-05 | 上海红神信息技术有限公司 | 一种调度方法、装置及系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016206600A1 (zh) * | 2015-06-26 | 2016-12-29 | 北京奇虎科技有限公司 | 一种信息流数据的处理方法和装置 |
WO2017049861A1 (zh) * | 2015-09-25 | 2017-03-30 | 中兴通讯股份有限公司 | 数据处理状态监控方法和装置 |
CN106559278A (zh) * | 2015-09-25 | 2017-04-05 | 中兴通讯股份有限公司 | 数据处理状态监控方法和装置 |
US10680974B2 (en) | 2015-09-25 | 2020-06-09 | Zte Corporation | Method and device for monitoring data processing status |
CN106559278B (zh) * | 2015-09-25 | 2020-09-15 | 中兴通讯股份有限公司 | 数据处理状态监控方法和装置 |
CN105323151A (zh) * | 2015-11-16 | 2016-02-10 | 东软集团股份有限公司 | 一种消息处理可靠性追踪方法及装置 |
CN105323151B (zh) * | 2015-11-16 | 2018-09-14 | 东软集团股份有限公司 | 一种消息处理可靠性追踪方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104281627B (zh) | 2018-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109345388B (zh) | 区块链智能合约验证方法、装置及存储介质 | |
US20220197953A1 (en) | Model pushing method and device, model requesting method and device, storage medium and electronic device | |
US10305776B2 (en) | Network verification | |
US20160092290A1 (en) | Processing data errors for a data processing system | |
CN113259168B (zh) | 一种故障根因分析方法及装置 | |
CN112181804B (zh) | 一种参数校验方法、设备以及存储介质 | |
CN104346365A (zh) | 确定与特定业务相关的关联日志的方法和装置 | |
CN104360920A (zh) | 一种接口自动化测试方法及装置 | |
CN108572986B (zh) | 一种数据更新的方法及节点设备 | |
CN109871290B (zh) | 应用于Java的调用堆栈追踪方法、装置和存储介质 | |
CN110493345A (zh) | 基于区块链的物联网终端软件升级方法及系统 | |
CN110855458B (zh) | 配置命令生成方法及设备 | |
CN105335310A (zh) | 一种接口定义方法和数据传输方法及装置 | |
CN110932910A (zh) | 一种软件故障的日志记录方法及装置 | |
CN107579851A (zh) | 确定资源编排模板的执行顺序的方法和装置 | |
CN104281627A (zh) | 一种报告数据处理结果的方法、系统及事件追踪器 | |
CN111831574B (zh) | 回归测试规划方法、装置、计算机系统和介质 | |
CN110275992B (zh) | 应急处理方法、装置、服务器及计算机可读存储介质 | |
US7913209B1 (en) | Determining a cycle basis of a directed graph | |
CA3138761A1 (en) | Method, device, computer equipment and storage medium for verifying inter-system data admission | |
CN112905437B (zh) | 一种测试用例的方法、装置及存储介质 | |
CN111224981B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN116506340A (zh) | 流量链路的测试方法、装置、电子设备及存储介质 | |
CN112579472B (zh) | 测试用例的自动生成方法及装置 | |
Luo et al. | Clustering and tailoring user session data for testing web applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20191211 Address after: P.O. Box 31119, grand exhibition hall, hibiscus street, 802 West Bay Road, Grand Cayman, Cayman Islands Patentee after: Innovative advanced technology Co., Ltd Address before: Cayman Islands Grand Cayman capital building, a four storey No. 847 mailbox Patentee before: Alibaba Group Holding Co., Ltd. |