一種報告數(shù)據(jù)處理結果的方法、系統(tǒng)及事件追蹤器的制造方法
【專利摘要】本申請公開了一種報告數(shù)據(jù)處理結果的方法、系統(tǒng)及事件追蹤器,通過設置的事件追蹤器來對流水線過程進行實時追蹤,無論是流水線過程處理成功還是處理失敗,最終的處理結果都無需由節(jié)點間依次報告,而是由事件追蹤器直接向第一級節(jié)點報告,可極大地縮短處理結果傳遞至第一級節(jié)點的鏈路。
【專利說明】一種報告數(shù)據(jù)處理結果的方法、系統(tǒng)及事件追蹤器
【技術領域】
[0001]本申請涉及計算機【技術領域】,尤其涉及一種報告數(shù)據(jù)處理結果的方法、系統(tǒng)及事件追蹤器。
【背景技術】
[0002]數(shù)據(jù)流經(jīng)多個節(jié)點并由流經(jīng)的多個節(jié)點分別進行處理的過程可視為流水線過程,所述流水線過程不局限于數(shù)據(jù)流經(jīng)單個程序內部的多個節(jié)點的情況,還可以包括數(shù)據(jù)流經(jīng)多個程序內的節(jié)點形成的流水線,這種流經(jīng)多個程序內的節(jié)點形成的流水線過程多應用在分布式網(wǎng)絡架構中。
[0003]以數(shù)據(jù)流經(jīng)圖1所示的節(jié)點拓撲架構為例,其中,A節(jié)點是流水線中的第一級節(jié)點,負責從外部獲取數(shù)據(jù),并將獲取的數(shù)據(jù)逐級傳輸,直至數(shù)據(jù)流經(jīng)所有的節(jié)點。假設A節(jié)點從外部獲取的數(shù)據(jù)是數(shù)據(jù)a,其流經(jīng)圖1所示的節(jié)點拓撲架構的流水線過程如下:
[0004]1、A節(jié)點對獲取的數(shù)據(jù)a進行處理后,分別生成數(shù)據(jù)b和數(shù)據(jù)C,其中,數(shù)據(jù)b發(fā)送給下一級的B節(jié)點,數(shù)據(jù)c發(fā)送給下一級的C節(jié)點。
[0005]2、B節(jié)點對接收到的數(shù)據(jù)b進行處理后生成數(shù)據(jù)dl,并發(fā)送給下一級的D節(jié)點;C節(jié)點對接收到的數(shù)據(jù)c進行處理后生成數(shù)據(jù)d2,并發(fā)送給下一級的D節(jié)點。
[0006]3、D節(jié)點對接收到的數(shù)據(jù)dl和數(shù)據(jù)d2進行處理后,生成數(shù)據(jù)e并發(fā)送給下一級的E節(jié)點。
[0007]4、E節(jié)點對接收到的數(shù)據(jù)e進行處理,完成本次流水線過程。
[0008]在流水線過程結束后,作為流水線中第一級節(jié)點的A節(jié)點需要知道數(shù)據(jù)流經(jīng)下級各節(jié)點時是否被正確處理,因此,在完成流水線過程后,從最低一級節(jié)點起,依次向上一級節(jié)點報告處理結果。以圖1所示的節(jié)點拓撲架構為例,當E節(jié)點對接收到的數(shù)據(jù)e成功處理后,各級節(jié)點向上一級節(jié)點報告處理結果的過程如下:
[0009]5、E節(jié)點向上一級的D節(jié)點報告的處理結果為數(shù)據(jù)e處理成功。
[0010]6、D節(jié)點向上一級的B節(jié)點報告的處理結果為數(shù)據(jù)dl處理成功,并向上一級的C節(jié)點報告的處理結果為數(shù)據(jù)d2處理成功。
[0011]7、B節(jié)點向上一級的A節(jié)點報告的處理結果為數(shù)據(jù)b處理成功,以及C節(jié)點向上一級的A節(jié)點報告的處理結果為數(shù)據(jù)c處理成功。
[0012]8、A節(jié)點最終確認數(shù)據(jù)a已被成功處理。
[0013]以上在流水線過程結束后(包括流水線過程成功結束和流水線過程失敗結束)報告處理結果的方案中,處理結果(包括處理成功和處理失敗)報告?zhèn)鬟f至第一級節(jié)點的鏈路過長,當應用在分布式網(wǎng)絡架構中,會增加處理結果數(shù)據(jù)包丟失的風險;同時,由于處理結果報告?zhèn)鬟f的鏈路過長,還可能會延長第一級節(jié)點針對處理結果的響應時間,特別是出現(xiàn)某一節(jié)點對接收到的數(shù)據(jù)處理失敗的情況時,處理結果報告?zhèn)鬟f的鏈路過長的缺陷更加明顯。
[0014]例如,E節(jié)點對接收到的數(shù)據(jù)e處理失敗時,E節(jié)點首先向上一級的D節(jié)點報告的處理結果為數(shù)據(jù)e處理失敗,D節(jié)點再向上一級的B節(jié)點和C節(jié)點分別報告的處理結果為數(shù)據(jù)dl、數(shù)據(jù)d2處理失敗,最后再由B節(jié)點和C節(jié)點分別向上一級的A節(jié)點報告的處理結果為數(shù)據(jù)b、數(shù)據(jù)c處理失敗,此時A節(jié)點才能最終確認數(shù)據(jù)a處理失敗。也就是說,E節(jié)點處理失敗的處理結果要經(jīng)過D節(jié)點、C節(jié)點、B節(jié)點后才能達到A節(jié)點,由于報告處理失敗的鏈路過長,會延長第一級節(jié)點對處理失敗的響應時間,出現(xiàn)失敗響應延遲的問題。
【發(fā)明內容】
[0015]本申請實施例提供了一種報告數(shù)據(jù)處理結果的方法、系統(tǒng)及事件追蹤器,用以解決現(xiàn)有技術中存在的在流水線過程結束后,處理結果報告?zhèn)鬟f至第一級節(jié)點的鏈路過長的問題。
[0016]本申請實施例提供了一種報告數(shù)據(jù)處理結果的方法,所述方法包括:
[0017]接收第一級節(jié)點發(fā)送的事件消息,所述事件消息中包括事件標識;
[0018]針對除所述第一級節(jié)點外的其他任意節(jié)點,按照節(jié)點間上下級關系依次執(zhí)行以下操作:
[0019]接收待處理節(jié)點發(fā)送的事件消息,在待處理節(jié)點發(fā)送的事件消息中包含的事件標識與所述第一級節(jié)點發(fā)送的事件標識匹配時,提取出待處理節(jié)點發(fā)送的事件消息中包含的處理結果;
[0020]若提取出的處理結果是處理失敗,則向所述第一級節(jié)點報告數(shù)據(jù)處理失敗;若提取出的處理結果是處理成功,則在存在還未處理的節(jié)點時,針對還未處理的節(jié)點重復執(zhí)行所述操作,在不存在還未處理的節(jié)點時,向所述第一級節(jié)點報告數(shù)據(jù)處理成功。
[0021]從以上方案可以看出,由于本申請實施例方法中由獨立于節(jié)點的其他設備來對流水線過程進行實時追蹤,無論是流水線過程處理成功還是處理失敗,最終的處理結果都無需由節(jié)點間依次報告,而是由對流水線過程實時追蹤的設備直接向第一級節(jié)點報告,可極大地縮短處理結果傳遞至第一級節(jié)點的鏈路。
[0022]優(yōu)選地,所述第一級節(jié)點發(fā)送的事件消息中還包括所述第一級節(jié)點的下一級節(jié)點的節(jié)點信息;
[0023]通過以下方式確定是否存在還未處理的節(jié)點:
[0024]確定所述待處理節(jié)點發(fā)送的事件消息中是否包含所述待處理節(jié)點的下一級節(jié)點的節(jié)點信息,若是,則確定存在還未處理的節(jié)點;
[0025]否則,根據(jù)所述待處理節(jié)點的節(jié)點信息確定所述待處理節(jié)點的上一級節(jié)點,并根據(jù)確定的該上一級節(jié)點作為待處理節(jié)點時發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息,在該節(jié)點信息對應的節(jié)點都已處理過時,確定不存在還未處理的節(jié)點,在該節(jié)點信息對應的節(jié)點沒有全部處理過時,確定存在還未處理的節(jié)點。
[0026]由于從第一級節(jié)點開始,待處理節(jié)點若有下一級節(jié)點,則將下一級節(jié)點的節(jié)點信息包含在事件消息中發(fā)送,因此,可在事件消息中包含下一級節(jié)點的節(jié)點信息時確定還存在未處理的節(jié)點,在事件消息中不包含下一級節(jié)點的節(jié)點信息時,可根據(jù)待處理節(jié)點的上一級節(jié)點發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息確定最低級節(jié)點是否全部處理完畢,即確定出是否還存在未處理的節(jié)點。
[0027]優(yōu)選地,若所述第一級節(jié)點的下一級節(jié)點個數(shù)為I個,則所述第一級節(jié)點發(fā)送的下一級節(jié)點的節(jié)點信息是:第一級節(jié)點為其下一級節(jié)點確定的標識號;
[0028]若所述第一級節(jié)點的下一級節(jié)點個數(shù)大于I個,則所述第一級節(jié)點發(fā)送的下一級節(jié)點的節(jié)點信息是:第一級節(jié)點對每個下一級節(jié)點確定的標識號進行異或操作后得到的標識號。
[0029]由于上一級節(jié)點為下一級節(jié)點確定的標識號可以唯一表示一個節(jié)點,因此,當下一級節(jié)點的個數(shù)為I個時,可用下一級節(jié)點的標識號來表示這I個下一級節(jié)點;當下一級節(jié)點個數(shù)大于I個時,通過將各下一級節(jié)點的標識號進行異或操作后的結果來整體反應所有的下一級節(jié)點。
[0030]優(yōu)選地,在所述待處理節(jié)點有下一級節(jié)點時,發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息為:所述待處理節(jié)點的上一級節(jié)點為該待處理節(jié)點確定的標識號與所述待處理節(jié)點為下一級節(jié)點確定的標識號進行異或操作后得到的標識號;
[0031]在所述待處理節(jié)點沒有下一級節(jié)點且所述待處理節(jié)點的上一級節(jié)點個數(shù)為I個時,所述待處理節(jié)點發(fā)送的事件消息中還包括:所述待處理節(jié)點的上一節(jié)點為該待處理節(jié)點確定的標識號;
[0032]在所述待處理節(jié)點沒有下一級節(jié)點且所述待處理節(jié)點的上一級節(jié)點個數(shù)大于I個時,所述待處理節(jié)點發(fā)送的事件消息中還包括:所述待處理節(jié)點的各上一節(jié)點為該待處理節(jié)點確定的標識號進行異或操作后得到的標識號。
[0033]由于上一級節(jié)點為下一級節(jié)點確定的標識號可以唯一表示一個節(jié)點,因此,待處理節(jié)點根據(jù)是否有下一級節(jié)點以及上一級節(jié)點的數(shù)量對個標識號進行異或操作后,得到的標識號可以從整體上反應上一級節(jié)點為待處理節(jié)點確定的標識號以及待處理節(jié)點為下一級節(jié)點確定的標識號。
[0034]優(yōu)選地,通過以下方式確定節(jié)點是否都已處理過:
[0035]將所述待處理節(jié)點在所述事件消息中包含的標識號與本地已存儲的標識號進行異或操作,所述本地已存儲的標識號為:之前接收到的包含相同事件標識的事件消息中的標識號進行異或操作后得到的標識號;
[0036]若所述待處理節(jié)點在所述事件消息中包含的標識號與本地已存儲的標識號進行異或操作的結果為0,則確定節(jié)點都已處理過;否則,確定存在還未處理過的節(jié)點,并存儲本次異或操作后得到的標識號。
[0037]由于異或操作的原則是相同的數(shù)異或操作后為0,不同的數(shù)異或操作后為1,將待處理節(jié)點發(fā)送的標識號與當前已存儲的標識號進行異或處理后,得到的新的標識號中消除了其上一級節(jié)點為待處理節(jié)點確定的標識號的影響,但包含待處理節(jié)點為下一級節(jié)點確定的標識號以及當前還未處理過的其他節(jié)點的標識號,此時,若新的標識號為0,表示所有的節(jié)點都已處理完畢,若新的標識號不為0,表示還存在未處理過的節(jié)點。
[0038]本申請實施例還提供了一種報告數(shù)據(jù)處理結果的系統(tǒng),所述系統(tǒng)包括數(shù)據(jù)流經(jīng)的多個節(jié)點和事件追蹤器,其中:
[0039]第一級節(jié)點,用于向所述事件追蹤器發(fā)送事件消息,所述事件消息中包括事件標識;
[0040]除所述第一級節(jié)點外的其他任意節(jié)點,用于按照節(jié)點間上下級關系依次作為待處理節(jié)點,用于向所述事件追蹤器發(fā)送事件消息;
[0041]事件追蹤器,用于針對每個待處理節(jié)點執(zhí)行以下操作:
[0042]接收待處理節(jié)點發(fā)送的事件消息,在待處理節(jié)點發(fā)送的事件消息中包含的事件標識與所述第一級節(jié)點發(fā)送的事件標識匹配時,提取出待處理節(jié)點發(fā)送的事件消息中包含的處理結果,若提取出的處理結果是處理失敗,則向所述第一級節(jié)點報告數(shù)據(jù)處理失??;若提取出的處理結果是處理成功,則在存在還未處理的節(jié)點時,針對還未處理的節(jié)點繼續(xù)執(zhí)行所述操作,在不存在還未處理的節(jié)點時,向所述第一級節(jié)點報告數(shù)據(jù)處理成功。
[0043]從以上方案可以看出,由于本申請實施例系統(tǒng)中由獨立于節(jié)點的事件追蹤器來對流水線過程進行實時追蹤,無論是流水線過程處理成功還是處理失敗,最終的處理結果都無需由節(jié)點間依次報告,而是由事件追蹤器直接向第一級節(jié)點報告,可極大地縮短處理結果傳遞至第一級節(jié)點的鏈路。
[0044]優(yōu)選地,所述第一級節(jié)點發(fā)送的事件消息中還包括所述第一級節(jié)點的下一級節(jié)點的節(jié)點信息;
[0045]所述事件追蹤器,具體用于確定所述待處理節(jié)點發(fā)送的事件消息中是否包含所述待處理節(jié)點的下一級節(jié)點的節(jié)點信息,若是,則確定存在還未處理的節(jié)點;
[0046]否則,根據(jù)所述待處理節(jié)點的節(jié)點信息確定所述待處理節(jié)點的上一級節(jié)點,并根據(jù)確定的該上一級節(jié)點作為待處理節(jié)點時發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息,在該節(jié)點信息對應的節(jié)點都已處理過時,確定不存在還未處理的節(jié)點,在該節(jié)點信息對應的節(jié)點沒有全部處理過時,確定存在還未處理的節(jié)點。
[0047]由于從第一級節(jié)點開始,待處理節(jié)點若有下一級節(jié)點,則將下一級節(jié)點的節(jié)點信息包含在事件消息中發(fā)送給事件追蹤器,因此,事件追蹤器可在事件消息中包含下一級節(jié)點的節(jié)點信息時確定還存在未處理的節(jié)點,在事件消息中不包含下一級節(jié)點的節(jié)點信息時,可根據(jù)待處理節(jié)點的上一級節(jié)點發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息確定最低級節(jié)點是否全部處理完畢,即確定出是否還存在未處理的節(jié)點。
[0048]若所述第一級節(jié)點的下一級節(jié)點個數(shù)為I個,則所述第一級節(jié)點發(fā)送的下一級節(jié)點的節(jié)點信息是:第一級節(jié)點為其下一級節(jié)點確定的標識號;
[0049]若所述第一級節(jié)點的下一級節(jié)點個數(shù)大于I個,則所述第一級節(jié)點發(fā)送的下一級節(jié)點的節(jié)點信息是:第一級節(jié)點對每個下一級節(jié)點確定的標識號進行異或操作后得到的標識號。
[0050]由于上一級節(jié)點為下一級節(jié)點確定的標識號可以唯一表示一個節(jié)點,因此,當下一級節(jié)點的個數(shù)為I個時,可用下一級節(jié)點的標識號來表示這I個下一級節(jié)點;當下一級節(jié)點個數(shù)大于I個時,通過將各下一級節(jié)點的標識號進行異或操作后的結果來整體反應所有的下一級節(jié)點。
[0051]在所述待處理節(jié)點有下一級節(jié)點時,發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息為:所述待處理節(jié)點的上一級節(jié)點為該待處理節(jié)點確定的標識號與所述待處理節(jié)點為下一級節(jié)點確定的標識號進行異或操作后得到的標識號;
[0052]在所述待處理節(jié)點沒有下一級節(jié)點且所述待處理節(jié)點的上一級節(jié)點個數(shù)為I個時,所述待處理節(jié)點發(fā)送的事件消息中還包括:所述待處理節(jié)點的上一節(jié)點為該待處理節(jié)點確定的標識號;
[0053]在所述待處理節(jié)點沒有下一級節(jié)點且所述待處理節(jié)點的上一級節(jié)點個數(shù)大于I個時,所述待處理節(jié)點發(fā)送的事件消息中還包括:所述待處理節(jié)點的各上一節(jié)點為該待處理節(jié)點確定的標識號進行異或操作后得到的標識號。
[0054]由于上一級節(jié)點為下一級節(jié)點確定的標識號可以唯一表示一個節(jié)點,因此,待處理節(jié)點根據(jù)是否有下一級節(jié)點以及上一級節(jié)點的數(shù)量對個標識號進行異或操作后,得到的標識號可以從整體上反應上一級節(jié)點為待處理節(jié)點確定的標識號以及待處理節(jié)點為下一級節(jié)點確定的標識號。
[0055]所述事件追蹤器,具體用于將所述待處理節(jié)點在所述事件消息中包含的標識號與本地已存儲的標識號進行異或操作,所述本地已存儲的標識號為:之前接收到的包含相同事件標識的事件消息中的標識號進行異或操作后得到的標識號,若所述待處理節(jié)點在所述事件消息中包含的標識號與本地已存儲的標識號進行異或操作的結果為0,則確定節(jié)點都已處理過;否則,確定存在還未處理過的節(jié)點,并存儲本次異或操作后得到的標識號。
[0056]由于異或操作的原則是相同的數(shù)異或操作后為0,不同的數(shù)異或操作后為1,事件追蹤器將待處理節(jié)點發(fā)送的標識號與當前已存儲的標識號進行異或處理后,得到的新的標識號中消除了其上一級節(jié)點為待處理節(jié)點確定的標識號的影響,但包含待處理節(jié)點為下一級節(jié)點確定的標識號以及當前還未處理過的其他節(jié)點的標識號,此時,若新的標識號為0,表示所有的節(jié)點都已處理完畢,若新的標識號不為0,表示還存在未處理過的節(jié)點。
[0057]本申請實施例還提供一種事件追蹤器,所述事件追蹤器包括接收模塊、匹配模塊、結果確認模塊、解析模塊和報告模塊,其中:
[0058]接收模塊,用于接收數(shù)據(jù)流經(jīng)的多個節(jié)點中的第一級節(jié)點發(fā)送的事件消息,所述事件消息中包括事件標識,以及接收除第一級節(jié)點外的其他任意節(jié)點,按照節(jié)點間上下級關系依次作為待處理節(jié)點時發(fā)送的事件消息;
[0059]匹配模塊,用于針對接收模塊當前接收到的待處理節(jié)點發(fā)送的事件消息,對該待處理節(jié)點發(fā)送的事件消息中包含的事件標識與所述第一級節(jié)點發(fā)送的事件標識進行匹配操作,若匹配,則觸發(fā)結果確認模塊;
[0060]結果確認模塊,用于提取出待處理節(jié)點發(fā)送的事件消息中包含的處理結果,若提取出的處理結果是處理失敗,則觸發(fā)報告模塊,若提取出的處理結果是處理成功,則觸發(fā)解析模塊;
[0061]解析模塊,用于判斷是否還存在未處理的節(jié)點,若是,則觸發(fā)所述接收模塊繼續(xù)接收未處理的節(jié)點作為待處理節(jié)點時發(fā)送的事件消息;否則,觸發(fā)報告模塊;
[0062]報告模塊,用于在受到結果確認模塊的觸發(fā)時,向所述第一級節(jié)點報告數(shù)據(jù)處理失敗,在受到解析模塊的觸發(fā)時,向所述第一級節(jié)點報告數(shù)據(jù)處理成功。
[0063]從以上方案可以看出,由于本申請實施例的事件追蹤器對流水線過程進行實時追蹤,無論是流水線過程處理成功還是處理失敗,最終的處理結果都無需由節(jié)點間依次報告,而是由事件追蹤器直接向第一級節(jié)點報告,可極大地縮短處理結果傳遞至第一級節(jié)點的鏈路。
[0064]優(yōu)選地,所述第一級節(jié)點發(fā)送的事件消息中還包括所述第一級節(jié)點的下一級節(jié)點的節(jié)點信息;
[0065]解析模塊,具體用于確定所述待處理節(jié)點發(fā)送的事件消息中是否包含所述待處理節(jié)點的下一級節(jié)點的節(jié)點信息,若是,則確定存在還未處理的節(jié)點;否則,根據(jù)所述待處理節(jié)點的節(jié)點信息確定所述待處理節(jié)點的上一級節(jié)點,并根據(jù)確定的該上一級節(jié)點作為待處理節(jié)點時發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息,在該節(jié)點信息對應的節(jié)點都已處理過時,確定不存在還未處理的節(jié)點,在該節(jié)點信息對應的節(jié)點沒有全部處理過時,確定存在還未處理的節(jié)點。
[0066]由于從第一級節(jié)點開始,待處理節(jié)點若有下一級節(jié)點,則將下一級節(jié)點的節(jié)點信息包含在事件消息中發(fā)送,因此,事件追蹤器可在事件消息中包含下一級節(jié)點的節(jié)點信息時確定還存在未處理的節(jié)點,在事件消息中不包含下一級節(jié)點的節(jié)點信息時,可根據(jù)待處理節(jié)點的上一級節(jié)點發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息確定最低級節(jié)點是否全部處理完畢,即確定出是否還存在未處理的節(jié)點。
[0067]優(yōu)選地,若所述第一級節(jié)點的下一級節(jié)點個數(shù)為I個,則所述第一級節(jié)點發(fā)送的下一級節(jié)點的節(jié)點信息是:第一級節(jié)點為其下一級節(jié)點確定的標識號;
[0068]若所述第一級節(jié)點的下一級節(jié)點個數(shù)大于I個,則所述第一級節(jié)點發(fā)送的下一級節(jié)點的節(jié)點信息是:第一級節(jié)點對每個下一級節(jié)點確定的標識號進行異或操作后得到的標識號。
[0069]由于上一級節(jié)點為下一級節(jié)點確定的標識號可以唯一表示一個節(jié)點,因此,當下一級節(jié)點的個數(shù)為I個時,可用下一級節(jié)點的標識號來表示這I個下一級節(jié)點;當下一級節(jié)點個數(shù)大于I個時,通過將各下一級節(jié)點的標識號進行異或操作后的結果來整體反應所有的下一級節(jié)點。
[0070]優(yōu)選地,在所述待處理節(jié)點有下一級節(jié)點時,發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息為:所述待處理節(jié)點的上一級節(jié)點為該待處理節(jié)點確定的標識號與所述待處理節(jié)點為下一級節(jié)點確定的標識號進行異或操作后得到的標識號;
[0071]在所述待處理節(jié)點沒有下一級節(jié)點且所述待處理節(jié)點的上一級節(jié)點個數(shù)為I個時,所述待處理節(jié)點發(fā)送的事件消息中還包括:所述待處理節(jié)點的上一節(jié)點為該待處理節(jié)點確定的標識號;
[0072]在所述待處理節(jié)點沒有下一級節(jié)點且所述待處理節(jié)點的上一級節(jié)點個數(shù)大于I個時,所述待處理節(jié)點發(fā)送的事件消息中還包括:所述待處理節(jié)點的各上一節(jié)點為該待處理節(jié)點確定的標識號進行異或操作后得到的標識號。
[0073]由于上一級節(jié)點為下一級節(jié)點確定的標識號可以唯一表示一個節(jié)點,因此,待處理節(jié)點根據(jù)是否有下一級節(jié)點以及上一級節(jié)點的數(shù)量對個標識號進行異或操作后,得到的標識號可以從整體上反應上一級節(jié)點為待處理節(jié)點確定的標識號以及待處理節(jié)點為下一級節(jié)點確定的標識號。
[0074]優(yōu)選地,解析模塊,具體用于將所述待處理節(jié)點在所述事件消息中包含的標識號與本地已存儲的標識號進行異或操作,所述本地已存儲的標識號為:之前接收到的包含相同事件標識的事件消息中的標識號進行異或操作后得到的標識號,若所述待處理節(jié)點在所述事件消息中包含的標識號與本地已存儲的標識號進行異或操作的結果為0,則確定節(jié)點都已處理過;否則,確定存在還未處理過的節(jié)點,并存儲本次異或操作后得到的標識號。
[0075]由于異或操作的原則是相同的數(shù)異或操作后為0,不同的數(shù)異或操作后為1,將待處理節(jié)點發(fā)送的標識號與當前已存儲的標識號進行異或處理后,得到的新的標識號中消除了其上一級節(jié)點為待處理節(jié)點確定的標識號的影響,但包含待處理節(jié)點為下一級節(jié)點確定的標識號以及當前還未處理過的其他節(jié)點的標識號,此時,若新的標識號為O,表示所有的節(jié)點都已處理完畢,若新的標識號不為O,表示還存在未處理過的節(jié)點。
【專利附圖】
【附圖說明】
[0076]圖1為一種節(jié)點拓撲架構示意圖;
[0077]圖2為本申請實施例一中報告數(shù)據(jù)處理結果的方法步驟示意圖;
[0078]圖3為本申請實施例二中報告數(shù)據(jù)處理結果的方法步驟示意圖;
[0079]圖4為本申請實施例三中報告數(shù)據(jù)處理結果的方法步驟示意圖;
[0080]圖5為本申請實施例四中報告數(shù)據(jù)處理結果的系統(tǒng)結構示意圖;
[0081]圖6為本申請實施例五中事件追蹤器的結構示意圖。
【具體實施方式】
[0082]為使本申請實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,本申請所描述的實施例是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
[0083]本申請實施例為例避免由于處理結果(包括處理成功和處理失敗)報告至第一級節(jié)點的鏈路過長所引起的諸如增加處理結果丟包的風險、延長第一級節(jié)點針對處理結果的響應時間等問題,本申請實施例在流水線過程中設置事件追蹤器(acker),由數(shù)據(jù)流經(jīng)的節(jié)點依次向acker發(fā)送本節(jié)點對數(shù)據(jù)處理后的事件消息,當acker識別出某一節(jié)點發(fā)送的事件消息中包含的處理結果是處理失敗時,直接向第一級節(jié)點報告數(shù)據(jù)處理失敗,無需從處理失敗的節(jié)點開始,依次向上一級節(jié)點報告處理失敗的處理結果;當acker識別出某一節(jié)點發(fā)送的事件消息中包含的處理結果是處理成功時,判定當前的流水線過程是否已結束,若已結束,則直接向所述第一級節(jié)點報告數(shù)據(jù)處理成功,無需從最后一個節(jié)點開始,依次向上一級節(jié)點報告處理成功的處理結果,若還未結束,則acker繼續(xù)接收并識別下一個節(jié)點發(fā)送的事件消息,直至出現(xiàn)處理失敗的處理結果或是流水線過程結束。
[0084]由于本申請實施例的方案由額外設置的acker來對流水線過程進行實時追蹤,無論是流水線過程處理成功還是處理失敗,最終的處理結果都無需由節(jié)點間依次報告,而是由acker直接向第一級節(jié)點報告,可極大地縮短處理結果(包括處理成功和處理失敗)傳遞至第一級節(jié)點的鏈路。
[0085]下面結合說明書附圖對本申請實施例的方案進行詳細描述。
[0086]實施例一:
[0087]如圖2所示,為本實施例一中報告數(shù)據(jù)處理結果的方法步驟示意圖,所述方法主要包括以下步驟:
[0088]步驟101:acker接收第一級節(jié)點發(fā)送的事件消息,所述事件消息中包括事件標識。
[0089]以圖1所示的節(jié)點拓撲架構為例,所述第一級節(jié)點即為圖1中的A節(jié)點,第一級節(jié)點從外部獲取數(shù)據(jù)a后,可為本次數(shù)據(jù)的流水線過程生成唯一的事件標識,該事件標識將在數(shù)據(jù)的整個流水線過程中使用,用于標識本次流水線過程。
[0090]優(yōu)選地,第一級節(jié)點可采用uuid (Universally Unique Identifier,通用唯一識別碼)算法生成一個128bit的事件標識,該事件標識可以以Root ID表示。本申請實施例并不對事件標識的生成方式做限定,任何可用于生成唯一事件標識的方式都可應用在本申請實施例的方案中。在本申請之后的各實施例中,acker對不同節(jié)點發(fā)送的事件消息中的內容做的所有操作,都是基于各事件消息中包含相同的事件標識的情況。
[0091]第一級節(jié)點生成事件標識后,可以將所述事件標識包含在事件消息中發(fā)送給acker ;同時,第一級節(jié)點還對獲取的數(shù)據(jù)a進行處理后,分別生成數(shù)據(jù)b和數(shù)據(jù)C,并將所述事件標識攜帶在所述數(shù)據(jù)b中發(fā)送給下一級的B節(jié)點,以及將所述事件標識攜帶在所述數(shù)據(jù)c中發(fā)送給下一級C節(jié)點。
[0092]在本申請實施例的方案中,第一級節(jié)點可以先向acker發(fā)送所述事件消息,再向B節(jié)點和C節(jié)點分別發(fā)送攜帶有事件標識的數(shù)據(jù)b和數(shù)據(jù)C,也可以先向B節(jié)點和C節(jié)點分別發(fā)送攜帶有事件標識的數(shù)據(jù)b和數(shù)據(jù)c,再向acker發(fā)送所述事件消息,也可以并行向B節(jié)點和C節(jié)點以及acker發(fā)送相應的消息,只要確保acker之后在接收到B節(jié)點、C節(jié)點發(fā)送的事件消息之前已接收到A節(jié)點發(fā)送的事件消息即可。
[0093]所述第一級節(jié)點可以在發(fā)送給acker的事件消息中包含特定標識(INIT),用于告知acker當前的事件消息是第一級節(jié)點發(fā)送的,使acker可以區(qū)分第一級點和其他節(jié)點發(fā)送的事件消息。
[0094]以圖1所示的節(jié)點拓撲架構為例,A節(jié)點發(fā)送給acker的事件消息中可以包含RootID和INIT,當acker接收到事件消息后,從中識別出INIT,表示當前接收到的事件消息是第一級節(jié)點發(fā)送的,需在本地存儲當前第一級節(jié)點發(fā)送的事件消息中的Root ID。
[0095]步驟102:acker確定待處理節(jié)點。
[0096]在本申請實施例的方案中,acker在步驟101已經(jīng)接收到了第一級節(jié)點發(fā)送的事件消息,即acker已完成對第一級節(jié)點的事件追蹤,接下來,acker將對除所述第一級節(jié)點外的其他任意節(jié)點,按照節(jié)點間的上下級關系,依次對每個節(jié)點在流水線中的處理過程(即節(jié)點對數(shù)據(jù)的處理)進行事件追蹤,acker當前追蹤的節(jié)點即為待處理節(jié)點。
[0097]步驟103:acker接收待處理節(jié)點發(fā)送的事件消息,所述事件消息中包含事件標識和處理結果。
[0098]數(shù)據(jù)在流經(jīng)各節(jié)點時,從第一級節(jié)點開始,上一級節(jié)點向下一級節(jié)點發(fā)送的數(shù)據(jù)中都將攜帶第一級節(jié)點生成的事件標識。當某一節(jié)點成為待處理節(jié)點時,該待處理節(jié)點對接收到的數(shù)據(jù)處理完畢后,向acker發(fā)送事件消息,并在發(fā)送給acker的事件消息中包含事件標識。
[0099]每一個節(jié)點向acker發(fā)送的事件消息中都包含事件標識的目的是:由于acker可同時追蹤多個流水線過程,且同一節(jié)點也可能同時是多個流水線過程中涉及的節(jié)點,因此,通過上下級節(jié)點間發(fā)送數(shù)據(jù)時攜帶唯一的事件標識、且每個待處理節(jié)點向acker發(fā)送的事件消息中包含事件標識的做法,可以使acker準確定位出當前的待處理節(jié)點是哪一個流水線過程中涉及的節(jié)點。
[0100]當acker對待處理節(jié)點發(fā)送的事件消息中的事件標識進行識別后,會進一步識別出所述事件消息中是否包含處理結果,若是,則可以確定所述待處理節(jié)點是流水線過程中涉及的非第一級節(jié)點;若否,則acker對事件消息中是否包含INIT進行識別,若同時確定事件消息中不包含處理結果和INIT,則acker確定所述待處理節(jié)點不是追蹤的流水線中涉及的節(jié)點,丟棄所述待處理節(jié)點發(fā)送的事件消息,跳轉至步驟102。
[0101]步驟104:acker提取出待處理節(jié)點發(fā)送的事件消息中的事件標識,根據(jù)該事件標識確定所述待處理節(jié)點所在流水線中的第一級節(jié)點。
[0102]由于acker預先存儲了各第一級節(jié)點發(fā)送的事件標識,因此,通過事件標識的匹配,可以確定出所述待處理節(jié)點所在流水線中的第一級節(jié)點。
[0103]步驟105:acker提取出待處理節(jié)點發(fā)送的事件消息中包含的處理結果,若所述處理結果是處理成功,則執(zhí)行步驟106 ;否則,執(zhí)行步驟107。
[0104]步驟106:acker判斷是否還存在未處理的節(jié)點,若是,則跳轉至步驟102,繼續(xù)對流水線過程中的節(jié)點進行追蹤;否則,acker向所述第一級節(jié)點報告數(shù)據(jù)處理成功,完成對流水線的追蹤。
[0105]步驟107:acker向所述第一級節(jié)點報告數(shù)據(jù)處理失敗,完成對流水線的追蹤。
[0106]通過本申請實施例一的方案,由acker實時對流水線中各節(jié)點對數(shù)據(jù)的處理過程進行追蹤,一旦發(fā)現(xiàn)某一節(jié)點對數(shù)據(jù)處理失敗時,立即報告給第一級節(jié)點,在流水線過程成功結束時,acker也直接給第一級節(jié)點報告處理成功,處理結果無需由節(jié)點間依次報告,極大地縮短處理結果傳遞至第一級節(jié)點的鏈路,降低了處理結果丟包的風險,縮小了第一級節(jié)點針對處理結果的響應時間。
[0107]優(yōu)選地,可以在每一節(jié)點(包括第一級節(jié)點和非第一級節(jié)點)向acker發(fā)送的事件消息中包含該節(jié)點的下一級節(jié)點的節(jié)點信息,若該節(jié)點向acker發(fā)送的事件消息中不包含下一級節(jié)點的節(jié)點信息,則可確定該節(jié)點是最后一級節(jié)點,基于此,acker可對流水線過程是否結束進行解析,下面通過實施例二來進行詳細描述。
[0108]實施例二:
[0109]本申請實施例二在實施例一的基礎上,以上一級節(jié)點發(fā)送給acker的事件消息中包含有其下一級節(jié)點的節(jié)點信息為例,描述本申請實施例一的具體實現(xiàn)過程,如圖3所示,主要包括以下步驟:
[0110]步驟201:acker接收第一級節(jié)點發(fā)送的事件消息,所述事件消息中包括事件標識和下一級節(jié)點的節(jié)點信息。
[0111]仍以圖1所示的節(jié)點拓撲架構為例,A節(jié)點向acker發(fā)送的事件消息中除了包含Root ID、INIT外,還可以包含下一級B節(jié)點和C節(jié)點的節(jié)點信息,其目的是使acker獲知當前追蹤的第一級節(jié)點是否有下一級節(jié)點,若有,確認第一級節(jié)點的下一級節(jié)點,以便于在對第一級節(jié)點的下一級節(jié)點進行追蹤時,可以檢查下一級節(jié)點是否全部追蹤完畢。
[0112]步驟202:acker確定待處理節(jié)點。
[0113]本步驟202的實現(xiàn)方式與實施例一中步驟102的實現(xiàn)方式相同。
[0114]步驟203:acker接收待處理節(jié)點發(fā)送的事件消息,根據(jù)其中包含的事件標識確定所述待處理節(jié)點所在流水線中的第一級節(jié)點,以及在其中包含的處理結果是處理成功時,執(zhí)行步驟204 ;否則,執(zhí)行步驟207。
[0115]本步驟203的實現(xiàn)方式與實施例一中步驟103至步驟105的實現(xiàn)方式相同。
[0116]步驟204:acker判斷待處理節(jié)點發(fā)送的事件消息中是否包含下一級節(jié)點的節(jié)點信息,若是,則跳轉至步驟202 ;否則,執(zhí)行步驟205。
[0117]在本步驟204的方案中,若待處理節(jié)點發(fā)送的事件消息中包含有下一級節(jié)點的節(jié)點信息,表示待處理節(jié)點不是最低級節(jié)點,此時還存在未處理的節(jié)點,需跳轉至步驟202,繼續(xù)對未處理的節(jié)點進行追蹤。若待處理節(jié)點發(fā)送的事件消息中不包含有下一級節(jié)點的節(jié)點信息,表示待處理節(jié)點是最低級節(jié)點,此時,需進一步判斷是否還存在未處理的節(jié)點。
[0118]步驟205:acker根據(jù)所述待處理節(jié)點的節(jié)點信息確定所述待處理節(jié)點的上一級節(jié)點,并根據(jù)待處理節(jié)點的上一級節(jié)點發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息,確定該節(jié)點信息對應的節(jié)點是否都已處理過,若是,則執(zhí)行步驟206 ;否則,執(zhí)行步驟202。
[0119]在本步驟205的方案中,由于每一個非最低級的節(jié)點在作為待處理節(jié)點時都會向acker發(fā)送的事件消息中攜帶自身的下一級節(jié)點的節(jié)點信息,同時還攜帶自身的節(jié)點信息,因此,當最低級的節(jié)點作為待處理節(jié)點時,acker可根據(jù)該待處理節(jié)點的節(jié)點確定出待處理節(jié)點的上一級節(jié)點,并根據(jù)該上一級節(jié)點在作為待處理節(jié)點時發(fā)送的事件消息中的下一級節(jié)點的節(jié)點信息,就可確定出最低級的所有節(jié)點,進而判定最低級的所有節(jié)點是否都已追蹤過,若是,則確定當前流水線過程追蹤完畢,否則,還需繼續(xù)對還未處理過的節(jié)點進行追足示O
[0120]仍以圖1所示的節(jié)點拓撲架構為例,若待處理節(jié)點是D節(jié)點,則D節(jié)點向acker發(fā)送的事件消息中可以包含下一級E節(jié)點的節(jié)點信息,因此,acker可直接確定當前還有未追蹤過的節(jié)點,需再次執(zhí)行步驟202。
[0121]若待處理節(jié)點是E節(jié)點,則E節(jié)點向acker發(fā)送的事件消息中不包含下一級節(jié)點的節(jié)點信息,因此,acker可確定E節(jié)點是最低級節(jié)點,但此時還可能有其他最低級節(jié)點還未追蹤過,因此,acker可根據(jù)E節(jié)點的節(jié)點信息確定E節(jié)點的上一級節(jié)點D節(jié)點,并在確定D節(jié)點發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息僅為E節(jié)點時,確定當前流水線過程追蹤完畢,可執(zhí)行步驟206。
[0122]步驟206:acker向所述第一級節(jié)點報告數(shù)據(jù)處理成功,完成對流水線的追蹤。
[0123]步驟207:acker向所述第一級節(jié)點報告數(shù)據(jù)處理失敗,完成對流水線的追蹤。
[0124]在本申請實施例二的方案中,流水線中涉及的各節(jié)點可以在本地記錄下一級節(jié)點的節(jié)點信息,并在作為待處理節(jié)點時,向acker發(fā)送下一級節(jié)點的節(jié)點信息,使acker可以確定當前流水線過程是否追蹤完畢。
[0125]所述下一級節(jié)點的節(jié)點信息可以以狀態(tài)樹的形式存儲在各級節(jié)點內,當然,本申請實施例的方案也不限于以其他方式來反映某一節(jié)點的下一級節(jié)點的節(jié)點信息,例如,本申請實施例也不限于由上一級節(jié)點為下一級節(jié)點生成唯一標識號作為下一級節(jié)點的節(jié)點信息,或是由上一級節(jié)點為下一級的多個節(jié)點分別生成唯一標識號后,將各標識號進行異或操作后得到的標識號作為下一級節(jié)點的節(jié)點信息。
[0126]實施例三:
[0127]本申請實施例三以上一級節(jié)點為下一級的多個節(jié)點分別生成唯一標識號后,將各標識號進行異或操作后得到的標識號作為下一級節(jié)點的節(jié)點信息的情況為例,對本申請實施例一和實施例二的方案做進一步說明,如圖4所示,本申請實施例三的方案主要包括以下步驟:
[0128]步驟301:第一級節(jié)點為其下一級節(jié)點確定標識號。
[0129]若第一級節(jié)點的下一級節(jié)點的數(shù)量為I個,則為這I個下一級節(jié)點確定標識號;若第一級節(jié)點的下一級節(jié)點的數(shù)量為多個,則分別為每個下一級節(jié)點確定標識號。
[0130]仍以圖1所示的節(jié)點拓撲架構為例,A節(jié)點確定下一級節(jié)點分別為B節(jié)點和C節(jié)點,則A節(jié)點可以通過uuid算法分別為B節(jié)點生成標識號_B、為C節(jié)點生成標識號_C。
[0131]在本實施例的方案中,A節(jié)點可以通過uuid算法為B節(jié)點和C節(jié)點生成唯一的標識號,也可以將在路由過程中為各節(jié)點分配的唯一任務標識(task id)作為下一級節(jié)點的標識號。本實施例并不對標識號的內容以及生成方式做限定,只要節(jié)點的標識號能夠唯一表示該節(jié)點即可。
[0132]步驟302:若第一級節(jié)點的下一級節(jié)點的數(shù)量為I個,則第一級節(jié)點將所述下一級節(jié)點的標識號作為下一級節(jié)點的節(jié)點信息包含在事件消息中發(fā)送給acker ;若第一級節(jié)點的下一級節(jié)點的數(shù)量為I個,則第一級節(jié)點對每個下一級節(jié)點確定的標識號進行異或操作后得到的標識號作為下一級節(jié)點的節(jié)點信息包含在事件消息中發(fā)送給acker。
[0133]仍以圖1所示的節(jié)點拓撲架構為例,A節(jié)點為下一級的B節(jié)點生成標識號_B、為C節(jié)點生成標識號_C后,可將標識號_B和標識號_C進行異或操作后得到的標識號作為下一級節(jié)點的節(jié)點信息包含在事件消息中發(fā)送給acker。
[0134]假設A節(jié)點的下一級節(jié)點有3個節(jié)點,分別為B節(jié)點、C節(jié)點和節(jié)點,分別生成的標識號為標識號_B、標識號_C和標識號_(/,則A節(jié)點可將標識號_B和標識號_C進行異或操作,并將操作結果再與標識號_C/進行異或操作,將最終得到的標識號作為下一級節(jié)點的節(jié)點信息包含在事件消息中發(fā)送給acker。對于更多數(shù)量的下一級節(jié)點的標識號操作方式與3個下一級節(jié)點的操作方式相同,此處不再贅述。
[0135]步驟303:acker接收第一級節(jié)點發(fā)送的事件消息,并創(chuàng)建事件標識和下一級節(jié)點標識號的映射關系。
[0136]此時,第一級節(jié)點發(fā)送給acker的事件消息為〈Root ID、INIT、下一級節(jié)點標識號>,這里的下一級節(jié)點標識號是指進行了異或操作后的節(jié)點標識號。
[0137]acker接收到所述事件消息時,識別出事件消息中包含有INIT,則在本地創(chuàng)建Root ID和下一級節(jié)點標識號的映射關系。
[0138]以圖1所示的節(jié)點拓撲架構為例,A節(jié)點發(fā)送給acker的下一級節(jié)點標識號是標識號_B和標識號_C進行異或操作后的標識號。
[0139]步驟304:第一級節(jié)點對數(shù)據(jù)進行處理后,將處理后的數(shù)據(jù)發(fā)送給下一級節(jié)點,并在其中攜帶事件標識和為該下一級節(jié)點確定的標識號。
[0140]仍以圖1所示的節(jié)點拓撲架構為例,A節(jié)點向B節(jié)點發(fā)送數(shù)據(jù)b時,在其中攜帶Root ID和標識號_B,向C節(jié)點發(fā)送數(shù)據(jù)C時,在其中攜帶Root ID和標識號_C。
[0141]需要說明的是,本實施例中的步驟303和步驟304的執(zhí)行先后順序不固定,可以先執(zhí)行步驟303,再執(zhí)行步驟304,也可以是先執(zhí)行步驟304,再執(zhí)行步驟303,還可以是步驟303和步驟304并行執(zhí)行。
[0142]步驟305:當某一節(jié)點作為待處理節(jié)點時,該待處理節(jié)點接收上一級節(jié)點發(fā)送的數(shù)據(jù),并從中提取出Root ID和上一級節(jié)點為待處理節(jié)點確定的標識號。
[0143]仍以圖1所示的節(jié)點拓撲架構為例,當B節(jié)點作為待處理節(jié)點時,B節(jié)點從接收到的數(shù)據(jù)b中提取出A節(jié)點生成的Root ID以及A節(jié)點為B節(jié)點確定的標識號_B。此時,B節(jié)點可創(chuàng)建一個map,在創(chuàng)建的map中存儲Root ID和標識號_B,此時,標識號_B可作為B節(jié)點的輸入(input)存儲在map中。
[0144]當D節(jié)點作為待處理節(jié)點時,其上一級節(jié)點為B節(jié)點和C節(jié)點,B節(jié)點通過uuid算法,為D節(jié)點生成唯一標識號_D1,C節(jié)點通過uuid算法,為D節(jié)點生成唯一標識號_D2,則B節(jié)點將Root ID和標識號_D1攜帶在數(shù)據(jù)dl中發(fā)送給D節(jié)點;C節(jié)點將Root ID和標識號_02攜帶在數(shù)據(jù)d2中發(fā)送給D節(jié)點。此時,D節(jié)點可從接收到的數(shù)據(jù)dl和數(shù)據(jù)d2中提取出Root ID以及B節(jié)點和C節(jié)點為D節(jié)點確定的標識號_D1和標識號_D2,D節(jié)點可創(chuàng)建一個map,在創(chuàng)建的map中存儲Root ID和標識號_D1、標識號_D2。
[0145]步驟306:待處理節(jié)點對接收到的數(shù)據(jù)進行處理后,得到處理結果,在待處理節(jié)點有下一級節(jié)點時,執(zhí)行步驟307,在待處理節(jié)點沒有下一級節(jié)點時,執(zhí)行步驟309或步驟310。
[0146]步驟307:待處理節(jié)點為下一級節(jié)點確定標識號。
[0147]仍以圖1所示的節(jié)點拓撲架構為例,當B節(jié)點作為待處理節(jié)點時,其下一級節(jié)點為D節(jié)點,則B節(jié)點通過uuid算法,為D節(jié)點生成唯一標識號_D1。
[0148]當C節(jié)點作為待處理節(jié)點時,其下一級節(jié)點也為D節(jié)點,則C節(jié)點通過uuid算法,為D節(jié)點生成唯一標識號_D2。
[0149]當D節(jié)點作為待處理節(jié)點時,其下一級節(jié)點為E節(jié)點,則D節(jié)點通過uuid算法,為E節(jié)點生成唯一標識號_E。
[0150]步驟308:待處理節(jié)點將上一級節(jié)點為自身確定的標識號與自身為下一級節(jié)點確定的標識號進行異或操作,將得到的標識號作為待處理節(jié)點的下一級節(jié)點的節(jié)點信息包含在事件消息中發(fā)送給acker,并跳轉至步驟311。
[0151]仍以圖1所示的節(jié)點拓撲架構為例,當B節(jié)點作為待處理節(jié)點時,其上一級的A節(jié)點為B節(jié)點確定的標識號為標識號_B,B節(jié)點為下一級的D節(jié)點確定的標識號為標識號_D1,則B節(jié)點將標識號_B和標識號_D1進行異或操作后得到的標識號作為B節(jié)點下一級節(jié)點的節(jié)點信息,包含在事件消息中發(fā)送給acker。
[0152]當C節(jié)點作為待處理節(jié)點時,其上一級的A節(jié)點為C節(jié)點確定的標識號為標識號_C, C節(jié)點為下一級的D節(jié)點確定的標識號為標識號_D2,則C節(jié)點將標識號_C和標識號_D2進行異或操作后得到的標識號作為C節(jié)點下一級節(jié)點的節(jié)點信息,包含在事件消息中發(fā)送給acker ο
[0153]當D節(jié)點作為待處理節(jié)點時,其上一級的B節(jié)點和C節(jié)點為D節(jié)點確定的標識號為標識號_D1和標識號_D2,D節(jié)點為下一級的E節(jié)點確定的標識號為標識號_E,則D節(jié)點將標識號_D1、標識號_D2進行異或操作后的結果再與標識號_E進行異或操作,最終得到的標識號作為D節(jié)點下一級節(jié)點的節(jié)點信息,包含在事件消息中發(fā)送給acker。
[0154]步驟309:在待處理節(jié)點的上一級節(jié)點個數(shù)為I個時,所述待處理節(jié)點將上一級節(jié)點為自身確定的標識號包含在事件消息中發(fā)送給acker,并跳轉至步驟311。
[0155]當E節(jié)點作為待處理節(jié)點時,其上一級的D節(jié)點為E節(jié)點確定的標識號為標識號_E,則E節(jié)點將標識號_E包含在事件消息中發(fā)送給acker。
[0156]步驟310:在待處理節(jié)點的上一級節(jié)點個數(shù)大于I個時,所述待處理節(jié)點將各上一級節(jié)點為自身確定的標識號進行異或操作后得到的標識號包含在事件消息中發(fā)送給acker,并跳轉至步驟311。
[0157]步驟311:acker解析所述待處理節(jié)點在所述事件消息中包含的處理結果,若處理結果為處理失敗,則向所述第一級節(jié)點報告數(shù)據(jù)處理失敗,若處理結果是處理成功,則執(zhí)行步驟312。
[0158]在本步驟311中,待處理節(jié)點發(fā)送給acker的事件消息中包含的處理結果也可以以ACK或FAIL表示,若acker解析出ACK,表示處理結果是處理成功,若acker解析出FAIL,表示處理結果是處理失敗。
[0159]當acker解析出FAIL,向所述第一級節(jié)點報告數(shù)據(jù)處理失敗的內容可以為〈RootID, FAIL〉。
[0160]步驟312:acker將所述待處理節(jié)點在所述事件消息中包含的標識號與本地已存儲的標識號進行異或操作,若操作結果為0,則執(zhí)行步驟313,否則,執(zhí)行步驟305。
[0161]在本實施例的方案中,acker在接收到第一級節(jié)點發(fā)送的事件消息時,識別出事件消息中包含有INIT,會在本地創(chuàng)建Root ID和第一級節(jié)點的下一級節(jié)點標識號的映射關系。之后,當acker首次接收到待處理節(jié)點發(fā)送的包含相同Root ID的事件消息時,將待處理節(jié)點發(fā)送的事件消息中的標識號與本地存儲的Root ID映射的標識號進行異或操作,若異或操作結果不為0,表示還存在未處理的節(jié)點,將本次異或操作結果更新Root ID映射的標識號。當下一次再有待處理節(jié)點發(fā)送包含相同Root ID的事件消息時,將該事件消息中的標識號與本地存儲的更新后的標識號進行映射操作以執(zhí)行本步驟312的方案,以此類推,在每次執(zhí)行步驟312時,都用acker本地存儲的最新的標識號與待處理節(jié)點發(fā)送的事件消息中的標識號進行異或操作。若異或操作結果為0,表示不存在未處理的節(jié)點,可以向所述第一級節(jié)點報告數(shù)據(jù)處理成功;否則,表示還存在未處理的節(jié)點,需跳轉至步驟305繼續(xù)對未處理的節(jié)點進行追蹤。
[0162]本步驟312的實現(xiàn)原理為:
[0163]由于異或操作的原則是相同的數(shù)異或操作后為0,不同的數(shù)異或操作后為1,即:OxorO=O,IxorO=I,Oxorl=I,Ixorl=O0
[0164]acker首次接收到的標識號是第一級節(jié)點發(fā)送的針對其下一級節(jié)點的標識號,當acker再接收到第一級節(jié)點的下一級節(jié)點作為待處理節(jié)點發(fā)送的標識號時,由于所述待處理節(jié)點發(fā)送的標識號是其上一級節(jié)點為其確定的標識號與其為下一級節(jié)點確定的標識號進行異或操作后的標識號,因此,acker將待處理節(jié)點發(fā)送的標識號與當前已存儲的標識號進行異或處理后,得到的新的標識號中消除了其上一級節(jié)點為待處理節(jié)點確定的標識號的影響,但包含待處理節(jié)點為下一級節(jié)點確定的標識號以及當前還未處理過的其他節(jié)點的標識號。此時,若新的標識號為0,表示所有的節(jié)點都已處理完畢,若新的標識號不為0,則利用新的標識號更新acker本地存儲的標識號,使得下一個待處理節(jié)點發(fā)送事件消息時,可以再次按照上述機制進行循環(huán)操作。
[0165]仍以圖1所示的節(jié)點拓撲架構為例,acker接收并存儲的A節(jié)點發(fā)送的事件消息中包含的標識號為標識號_B和標識號_C異或操作后的標識號。
[0166]當B節(jié)點作為待處理節(jié)點時,其發(fā)送給acker的事件消息中包含的標識號為標識號_B和標識號_D1異或操作后的標識號,此時,acker將本地存儲的標識號與B節(jié)點發(fā)送給acker的標識號進行異或操作后,得到的新的標識號消除了標識號_B,但仍保留了標識號_C和標識號_D1, acker將新的標識號存儲在本地。
[0167]當C節(jié)點作為待處理節(jié)點時,其發(fā)送給acker的事件消息中包含的標識號為標識號_C和標識號_D2異或操作后的標識號,此時,acker將B節(jié)點處理后存儲的標識號與C節(jié)點發(fā)送給acker的標識號進行異或操作后,得到的新的標識號消除了標識號_C,但保留了標識號_D1和標識號_D2,acker將本地得到的新的標識號存儲在本地。
[0168]當D節(jié)點作為待處理節(jié)點時,其發(fā)送給acker的事件消息中包含的標識號為標識號_D1、標識號D2和標識號_E異或操作后的標識號,此時,acker將C節(jié)點處理后存儲的標識號與D節(jié)點發(fā)送給acker的標識號進行異或操作后,得到的新的標識號消除了標識號_D1和標識號_D2,但保留了標識號_E,acker將本地得到的新的標識號存儲在本地。
[0169]當E節(jié)點作為待處理節(jié)點時,其發(fā)送給acker的事件消息中包含的標識號為標識號_E,此時,acker將D節(jié)點處理后存儲的標識號與E節(jié)點發(fā)送給acker的標識號進行異或操作后,得到的新的標識號消除了標識號_E,新的標識號為0,此時,acker確認對流水線的追蹤過程結束。
[0170]步驟313:acker向所述第一級節(jié)點報告數(shù)據(jù)處理成功。
[0171]當acker向所述第一級節(jié)點報告數(shù)據(jù)處理失敗的內容可以為〈Root ID, ACK>。
[0172]基于本申請實施例三的方案,除了能夠得到實施例一和實施例二的效果外,由于待處理節(jié)點向acker發(fā)送的標識號與其上一級節(jié)點為待處理節(jié)點確定的標識號和待處理節(jié)點為其下一級節(jié)點確定的標識號相關,因此,待處理節(jié)點內部無需存儲用于表示待處理節(jié)點的上下級節(jié)點之間關系的狀態(tài)樹。仍以圖1所示的架構為例,基于【背景技術】中描述的流水線過程,各節(jié)點內需要分別維護一個狀態(tài)樹,例如:
[0173]A節(jié)點中維護的狀態(tài)樹為<a,b&c>,表示A節(jié)點接收并處理的數(shù)據(jù)是數(shù)據(jù)a,發(fā)送給下一級B節(jié)點的數(shù)據(jù)是數(shù)據(jù)b,發(fā)送給下一級C節(jié)點的數(shù)據(jù)是數(shù)據(jù)C。
[0174]B節(jié)點中維護的狀態(tài)樹為<b,[A,dl]>,表示B節(jié)點的上一級節(jié)點是A節(jié)點,接收并處理的數(shù)據(jù)是數(shù)據(jù)b,發(fā)送給下一級D節(jié)點的數(shù)據(jù)是數(shù)據(jù)dl。
[0175]C節(jié)點中維護的狀態(tài)樹為〈C,[A,d2]>,表示C節(jié)點的上一級節(jié)點是A節(jié)點,接收并處理的數(shù)據(jù)是數(shù)據(jù)C,發(fā)送給下一級D節(jié)點的數(shù)據(jù)是數(shù)據(jù)d2。
[0176]D節(jié)點中維護的狀態(tài)樹為<dl, [B, e]>, <d2, [C,e]>,表示D節(jié)點的上一級節(jié)點是B節(jié)點和C節(jié)點,接收并處理的數(shù)據(jù)是數(shù)據(jù)dl和數(shù)據(jù)d2,發(fā)送給下一級E節(jié)點的數(shù)據(jù)是數(shù)據(jù)e。
[0177]由于每個節(jié)點都需按照上述事例來維護一個狀態(tài)樹,如果節(jié)點的拓撲架構發(fā)生變化,則節(jié)點內維護的狀態(tài)樹也要發(fā)生變化,這會給整個系統(tǒng)的吞吐量帶來額外的開銷。
[0178]而利用本申請實施例三的方案,待處理節(jié)點的上一級節(jié)點為待處理節(jié)點確定的標識號可攜帶在數(shù)據(jù)中發(fā)送給待處理節(jié)點,待處理節(jié)點的下一級節(jié)點的標識號可由待處理節(jié)點動態(tài)確定,待處理節(jié)點無需再本地維護狀態(tài)樹,即無需維護鏈路信息,不會影響系統(tǒng)的吞吐量。
[0179]實施例四:
[0180]本申請實施例四還描述了一種與實施例一至實施例三屬于同一發(fā)明構思下的報告數(shù)據(jù)處理結果的系統(tǒng),如圖5所示,所述系統(tǒng)包括數(shù)據(jù)流經(jīng)的多個節(jié)點和事件追蹤器,其中:
[0181]第一級節(jié)點,用于向所述事件追蹤器發(fā)送事件消息,所述事件消息中包括事件標識;
[0182]除所述第一級節(jié)點外的其他任意節(jié)點,按照節(jié)點間上下級關系依次作為待處理節(jié)點,用于向所述事件追蹤器發(fā)送事件消息;
[0183]事件追蹤器,用于針對每個待處理節(jié)點執(zhí)行以下操作:
[0184]接收待處理節(jié)點發(fā)送的事件消息,在待處理節(jié)點發(fā)送的事件消息中包含的事件標識與所述第一級節(jié)點發(fā)送的事件標識匹配時,提取出待處理節(jié)點發(fā)送的事件消息中包含的處理結果,若提取出的處理結果是處理失敗,則向所述第一級節(jié)點報告數(shù)據(jù)處理失?。蝗籼崛〕龅奶幚斫Y果是處理成功,則在存在還未處理的節(jié)點時,針對還未處理的節(jié)點繼續(xù)執(zhí)行所述操作,在不存在還未處理的節(jié)點時,向所述第一級節(jié)點報告數(shù)據(jù)處理成功。
[0185]優(yōu)選地,所述第一級節(jié)點發(fā)送的事件消息中還包括所述第一級節(jié)點的下一級節(jié)點的節(jié)點信息;
[0186]所述事件追蹤器,具體用于確定所述待處理節(jié)點發(fā)送的事件消息中是否包含所述待處理節(jié)點的下一級節(jié)點的節(jié)點信息,若是,則確定存在還未處理的節(jié)點;否則,根據(jù)所述待處理節(jié)點的節(jié)點信息確定所述待處理節(jié)點的上一級節(jié)點,并根據(jù)確定的該上一級節(jié)點作為待處理節(jié)點時發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息,在該節(jié)點信息對應的節(jié)點都已處理過時,確定不存在還未處理的節(jié)點,在該節(jié)點信息對應的節(jié)點沒有全部處理過時,確定存在還未處理的節(jié)點。
[0187]優(yōu)選地,若所述第一級節(jié)點的下一級節(jié)點個數(shù)為I個,則所述第一級節(jié)點發(fā)送的下一級節(jié)點的節(jié)點信息是:第一級節(jié)點為其下一級節(jié)點確定的標識號;
[0188]若所述第一級節(jié)點的下一級節(jié)點個數(shù)大于I個,則所述第一級節(jié)點發(fā)送的下一級節(jié)點的節(jié)點信息是:第一級節(jié)點對每個下一級節(jié)點確定的標識號進行異或操作后得到的標識號。
[0189]優(yōu)選地,在所述待處理節(jié)點有下一級節(jié)點時,發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息為:所述待處理節(jié)點的上一級節(jié)點為該待處理節(jié)點確定的標識號與所述待處理節(jié)點為下一級節(jié)點確定的標識號進行異或操作后得到的標識號;
[0190]在所述待處理節(jié)點沒有下一級節(jié)點且所述待處理節(jié)點的上一級節(jié)點個數(shù)為I個時,所述待處理節(jié)點發(fā)送的事件消息中還包括:所述待處理節(jié)點的上一節(jié)點為該待處理節(jié)點確定的標識號;
[0191]在所述待處理節(jié)點沒有下一級節(jié)點且所述待處理節(jié)點的上一級節(jié)點個數(shù)大于I個時,所述待處理節(jié)點發(fā)送的事件消息中還包括:所述待處理節(jié)點的各上一節(jié)點為該待處理節(jié)點確定的標識號進行異或操作后得到的標識號。
[0192]優(yōu)選地,所述事件追蹤器,具體用于將所述待處理節(jié)點在所述事件消息中包含的標識號與本地已存儲的標識號進行異或操作,所述本地已存儲的標識號為:之前接收到的包含相同事件標識的事件消息中的標識號進行異或操作后得到的標識號,若所述待處理節(jié)點在所述事件消息中包含的標識號與本地已存儲的標識號進行異或操作的結果為0,則確定節(jié)點都已處理過;否則,確定存在還未處理過的節(jié)點,并存儲本次異或操作后得到的標識號。
[0193]實施例五:
[0194]本申請實施例五對實施例四中的事件追蹤器的內部結構進行了描述,如圖6所示,所述事件追蹤器包括:接收模塊11、匹配模塊12、結果確認模塊13、解析模塊14和報告模塊15,其中
[0195]接收模塊11用于接收數(shù)據(jù)流經(jīng)的多個節(jié)點中的第一級節(jié)點發(fā)送的事件消息,所述事件消息中包括事件標識,以及接收除第一級節(jié)點外的其他任意節(jié)點,按照節(jié)點間上下級關系依次作為待處理節(jié)點時發(fā)送的事件消息;
[0196]匹配模塊12用于針對接收模塊當前接收到的待處理節(jié)點發(fā)送的事件消息,對該待處理節(jié)點發(fā)送的事件消息中包含的事件標識與所述第一級節(jié)點發(fā)送的事件標識進行匹配操作,若匹配,則觸發(fā)結果確認模塊13 ;
[0197]結果確認模塊13用于提取出待處理節(jié)點發(fā)送的事件消息中包含的處理結果,若提取出的處理結果是處理失敗,則觸發(fā)報告模塊15,若提取出的處理結果是處理成功,則觸發(fā)解析模塊14 ;
[0198]解析模塊14用于判斷是否還存在未處理的節(jié)點,若是,則觸發(fā)所述接收模塊11繼續(xù)接收未處理的節(jié)點作為待處理節(jié)點時發(fā)送的事件消息;否則,觸發(fā)報告模塊15 ;
[0199]報告模塊15用于在受到結果確認模塊13的觸發(fā)時,向所述第一級節(jié)點報告數(shù)據(jù)處理失敗,在受到解析模塊14的觸發(fā)時,向所述第一級節(jié)點報告數(shù)據(jù)處理成功。
[0200]所述第一級節(jié)點發(fā)送的事件消息中還包括所述第一級節(jié)點的下一級節(jié)點的節(jié)點信息;
[0201]解析模塊14具體用于確定所述待處理節(jié)點發(fā)送的事件消息中是否包含所述待處理節(jié)點的下一級節(jié)點的節(jié)點信息,若是,則確定存在還未處理的節(jié)點;否則,根據(jù)所述待處理節(jié)點的節(jié)點信息確定所述待處理節(jié)點的上一級節(jié)點,并根據(jù)確定的該上一級節(jié)點作為待處理節(jié)點時發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息,在該節(jié)點信息對應的節(jié)點都已處理過時,確定不存在還未處理的節(jié)點,在該節(jié)點信息對應的節(jié)點沒有全部處理過時,確定存在還未處理的節(jié)點。
[0202]若所述第一級節(jié)點的下一級節(jié)點個數(shù)為I個,則所述第一級節(jié)點發(fā)送的下一級節(jié)點的節(jié)點信息是:第一級節(jié)點為其下一級節(jié)點確定的標識號;
[0203]若所述第一級節(jié)點的下一級節(jié)點個數(shù)大于I個,則所述第一級節(jié)點發(fā)送的下一級節(jié)點的節(jié)點信息是:第一級節(jié)點對每個下一級節(jié)點確定的標識號進行異或操作后得到的標識號。
[0204]在所述待處理節(jié)點有下一級節(jié)點時,發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息為:所述待處理節(jié)點的上一級節(jié)點為該待處理節(jié)點確定的標識號與所述待處理節(jié)點為下一級節(jié)點確定的標識號進行異或操作后得到的標識號;
[0205]在所述待處理節(jié)點沒有下一級節(jié)點且所述待處理節(jié)點的上一級節(jié)點個數(shù)為I個時,所述待處理節(jié)點發(fā)送的事件消息中還包括:所述待處理節(jié)點的上一節(jié)點為該待處理節(jié)點確定的標識號;
[0206]在所述待處理節(jié)點沒有下一級節(jié)點且所述待處理節(jié)點的上一級節(jié)點個數(shù)大于I個時,所述待處理節(jié)點發(fā)送的事件消息中還包括:所述待處理節(jié)點的各上一節(jié)點為該待處理節(jié)點確定的標識號進行異或操作后得到的標識號。
[0207]解析模塊14具體用于將所述待處理節(jié)點在所述事件消息中包含的標識號與本地已存儲的標識號進行異或操作,所述本地已存儲的標識號為:之前接收到的包含相同事件標識的事件消息中的標識號進行異或操作后得到的標識號,若所述待處理節(jié)點在所述事件消息中包含的標識號與本地已存儲的標識號進行異或操作的結果為O,則確定節(jié)點都已處理過;否則,確定存在還未處理過的節(jié)點,并存儲本次異或操作后得到的標識號。
[0208]本實施例中的事件追蹤器內的各邏輯模塊具有實現(xiàn)實施例一至實施例三中的事件追蹤器的所有功能的能力,此處不再贅述。
[0209]本領域內的技術人員應明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。
[0210]本申請是參照根據(jù)本申請實施例的方法、設備(系統(tǒng))、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0211]這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0212]這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0213]在一個典型的配置中,所述計算機設備包括一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡接口和內存。內存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內存是計算機可讀介質的示例。計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結構、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質的例子包括,但不限于相變內存(PRAM)、靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內存技術、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質,可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質不包括非持續(xù)性的電腦可讀媒體(transitory media),如調制的數(shù)據(jù)信號和載波。
[0214]盡管已描述了本申請的優(yōu)選實施例,但本領域內的技術人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權利要求意欲解釋為包括優(yōu)選實施例以及落入本申請范圍的所有變更和修改。
[0215]顯然,本領域的技術人員可以對本申請進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權利要求及其等同技術的范圍之內,則本申請也意圖包含這些改動和變型在內。
【權利要求】
1.一種報告數(shù)據(jù)處理結果的方法,其特征在于,所述方法包括: 接收第一級節(jié)點發(fā)送的事件消息,所述事件消息中包括事件標識; 針對除所述第一級節(jié)點外的其他任意節(jié)點,按照節(jié)點間上下級關系依次執(zhí)行以下操作: 接收待處理節(jié)點發(fā)送的事件消息,在待處理節(jié)點發(fā)送的事件消息中包含的事件標識與所述第一級節(jié)點發(fā)送的事件標識匹配時,提取出待處理節(jié)點發(fā)送的事件消息中包含的處理結果; 若提取出的處理結果是處理失敗,則向所述第一級節(jié)點報告數(shù)據(jù)處理失敗;若提取出的處理結果是處理成功,則在存在還未處理的節(jié)點時,針對還未處理的節(jié)點重復執(zhí)行所述操作,在不存在還未處理的節(jié)點時,向所述第一級節(jié)點報告數(shù)據(jù)處理成功。
2.如權利要求1所述的方法,其特征在于,所述第一級節(jié)點發(fā)送的事件消息中還包括所述第一級節(jié)點的下一級節(jié)點的節(jié)點信息; 通過以下方式確定是否存在還未處理的節(jié)點: 確定所述待處理節(jié)點發(fā)送的事件消息中是否包含所述待處理節(jié)點的下一級節(jié)點的節(jié)點信息,若是,則確定存在還未處理的節(jié)點; 否則,根據(jù)所述待處理節(jié)點的節(jié)點信息確定所述待處理節(jié)點的上一級節(jié)點,并根據(jù)確定的該上一級節(jié)點作為待處理節(jié)點時發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息,在該節(jié)點信息對應的節(jié)點都已處理過時,確定不存在還未處理的節(jié)點,在該節(jié)點信息對應的節(jié)點沒有全部處理過時,確定存在還未處理的節(jié)點。
3.如權利要求2所述的方法,其特征在于,若所述第一級節(jié)點的下一級節(jié)點個數(shù)為I個,則所述第一級節(jié)點發(fā)送的下一級節(jié)點的節(jié)點信息是:第一級節(jié)點為其下一級節(jié)點確定的標識號; 若所述第一級節(jié)點的下一級節(jié)點個數(shù)大于I個,則所述第一級節(jié)點發(fā)送的下一級節(jié)點的節(jié)點信息是:第一級節(jié)點對每個下一級節(jié)點確定的標識號進行異或操作后得到的標識號。
4.如權利要求3所述的方法,其特征在于,在所述待處理節(jié)點有下一級節(jié)點時,發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息為:所述待處理節(jié)點的上一級節(jié)點為該待處理節(jié)點確定的標識號與所述待處理節(jié)點為下一級節(jié)點確定的標識號進行異或操作后得到的標識號; 在所述待處理節(jié)點沒有下一級節(jié)點且所述待處理節(jié)點的上一級節(jié)點個數(shù)為I個時,所述待處理節(jié)點發(fā)送的事件消息中還包括:所述待處理節(jié)點的上一節(jié)點為該待處理節(jié)點確定的標識號; 在所述待處理節(jié)點沒有下一級節(jié)點且所述待處理節(jié)點的上一級節(jié)點個數(shù)大于I個時,所述待處理節(jié)點發(fā)送的事件消息中還包括:所述待處理節(jié)點的各上一節(jié)點為該待處理節(jié)點確定的標識號進行異或操作后得到的標識號。
5.如權利要求4所述的方法,其特征在于,通過以下方式確定節(jié)點是否都已處理過: 將所述待處理節(jié)點在所述事件消息中包含的標識號與本地已存儲的標識號進行異或操作,所述本地已存儲的標識號為:之前接收到的包含相同事件標識的事件消息中的標識號進行異或操作后得到的標識號; 若所述待處理節(jié)點在所述事件消息中包含的標識號與本地已存儲的標識號進行異或操作的結果為O,則確定節(jié)點都已處理過;否則,確定存在還未處理過的節(jié)點,并存儲本次異或操作后得到的標識號。
6.一種報告數(shù)據(jù)處理結果的系統(tǒng),其特征在于,所述系統(tǒng)包括數(shù)據(jù)流經(jīng)的多個節(jié)點和事件追蹤器,其中: 第一級節(jié)點,用于向所述事件追蹤器發(fā)送事件消息,所述事件消息中包括事件標識; 除所述第一級節(jié)點外的其他任意節(jié)點,用于按照節(jié)點間上下級關系依次作為待處理節(jié)點,用于向所述事件追蹤器發(fā)送事件消息; 事件追蹤器,用于針對每個待處理節(jié)點執(zhí)行以下操作: 接收待處理節(jié)點發(fā)送的事件消息,在待處理節(jié)點發(fā)送的事件消息中包含的事件標識與所述第一級節(jié)點發(fā)送的事件標識匹配時,提取出待處理節(jié)點發(fā)送的事件消息中包含的處理結果,若提取出的處理結果是處理失敗,則向所述第一級節(jié)點報告數(shù)據(jù)處理失??;若提取出的處理結果是處理成功,則在存在還未處理的節(jié)點時,針對還未處理的節(jié)點繼續(xù)執(zhí)行所述操作,在不存在還未處理的節(jié)點時,向所述第一級節(jié)點報告數(shù)據(jù)處理成功。
7.如權利要求6所述的系統(tǒng),其特征在于,所述第一級節(jié)點發(fā)送的事件消息中還包括所述第一級節(jié)點的下一級節(jié)點的節(jié)點信息; 所述事件追蹤器,具體用于確定所述待處理節(jié)點發(fā)送的事件消息中是否包含所述待處理節(jié)點的下一級節(jié)點的節(jié)點信息,若是,則確定存在還未處理的節(jié)點; 否則,根據(jù)所述待處理節(jié)點的節(jié)點信息確定所述待處理節(jié)點的上一級節(jié)點,并根據(jù)確定的該上一級節(jié)點作為待處理節(jié)點時發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息,在該節(jié)點信息對應的節(jié)點都已處理過時,確定不存在還未處理的節(jié)點,在該節(jié)點信息對應的節(jié)點沒有全部處理過時,確定存在還未處理的節(jié)點。
8.如權利要求7所述的系統(tǒng),其特征在于,若所述第一級節(jié)點的下一級節(jié)點個數(shù)為I個,則所述第一級節(jié)點發(fā)送的下一級節(jié)點的節(jié)點信息是:第一級節(jié)點為其下一級節(jié)點確定的標識號; 若所述第一級節(jié)點的下一級節(jié)點個數(shù)大于I個,則所述第一級節(jié)點發(fā)送的下一級節(jié)點的節(jié)點信息是:第一級節(jié)點對每個下一級節(jié)點確定的標識號進行異或操作后得到的標識號。
9.如權利要求8所述的系統(tǒng),其特征在于,在所述待處理節(jié)點有下一級節(jié)點時,發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息為:所述待處理節(jié)點的上一級節(jié)點為該待處理節(jié)點確定的標識號與所述待處理節(jié)點為下一級節(jié)點確定的標識號進行異或操作后得到的標識號; 在所述待處理節(jié)點沒有下一級節(jié)點且所述待處理節(jié)點的上一級節(jié)點個數(shù)為I個時,所述待處理節(jié)點發(fā)送的事件消息中還包括:所述待處理節(jié)點的上一節(jié)點為該待處理節(jié)點確定的標識號; 在所述待處理節(jié)點沒有下一級節(jié)點且所述待處理節(jié)點的上一級節(jié)點個數(shù)大于I個時,所述待處理節(jié)點發(fā)送的事件消息中還包括:所述待處理節(jié)點的各上一節(jié)點為該待處理節(jié)點確定的標識號進行異或操作后得到的標識號。
10.如權利要求9所述的系統(tǒng),其特征在于, 所述事件追蹤器,具體用于將所述待處理節(jié)點在所述事件消息中包含的標識號與本地已存儲的標識號進行異或操作,所述本地已存儲的標識號為:之前接收到的包含相同事件標識的事件消息中的標識號進行異或操作后得到的標識號,若所述待處理節(jié)點在所述事件消息中包含的標識號與本地已存儲的標識號進行異或操作的結果為O,則確定節(jié)點都已處理過;否則,確定存在還未處理過的節(jié)點,并存儲本次異或操作后得到的標識號。
11.一種事件追蹤器,其特征在于,所述事件追蹤器包括接收模塊、匹配模塊、結果確認模塊、解析模塊和報告模塊,其中: 接收模塊,用于接收數(shù)據(jù)流經(jīng)的多個節(jié)點中的第一級節(jié)點發(fā)送的事件消息,所述事件消息中包括事件標識,以及接收除第一級節(jié)點外的其他任意節(jié)點,按照節(jié)點間上下級關系依次作為待處理節(jié)點時發(fā)送的事件消息; 匹配模塊,用于針對接收模塊當前接收到的待處理節(jié)點發(fā)送的事件消息,對該待處理節(jié)點發(fā)送的事件消息中包含的事件標識與所述第一級節(jié)點發(fā)送的事件標識進行匹配操作,若匹配,則觸發(fā)結果確認模塊; 結果確認模塊,用于提取出待處理節(jié)點發(fā)送的事件消息中包含的處理結果,若提取出的處理結果是處理失敗,則觸發(fā)報告模塊,若提取出的處理結果是處理成功,則觸發(fā)解析模塊; 解析模塊,用于判斷是否還存在未處理的節(jié)點,若是,則觸發(fā)所述接收模塊繼續(xù)接收未處理的節(jié)點作為待處理節(jié)點時發(fā)送的事件消息;否則,觸發(fā)報告模塊; 報告模塊,用于在受到結果確認模塊的觸發(fā)時,向所述第一級節(jié)點報告數(shù)據(jù)處理失敗,在受到解析模塊的觸發(fā)時,向所述第一級節(jié)點報告數(shù)據(jù)處理成功。
12.如權利要求11所述的事件追蹤器,其特征在于,所述第一級節(jié)點發(fā)送的事件消息中還包括所述第一級節(jié)點的下一級節(jié)點的節(jié)點信息; 解析模塊,具體用于確定所述待處理節(jié)點發(fā)送的事件消息中是否包含所述待處理節(jié)點的下一級節(jié)點的節(jié)點信息,若是,則確定存在還未處理的節(jié)點;否則,根據(jù)所述待處理節(jié)點的節(jié)點信息確定所述待處理節(jié)點的上一級節(jié)點,并根據(jù)確定的該上一級節(jié)點作為待處理節(jié)點時發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息,在該節(jié)點信息對應的節(jié)點都已處理過時,確定不存在還未處理的節(jié)點,在該節(jié)點信息對應的節(jié)點沒有全部處理過時,確定存在還未處理的節(jié)點。
13.如權利要求12所述的事件追蹤器,其特征在于,若所述第一級節(jié)點的下一級節(jié)點個數(shù)為I個,則所述第一級節(jié)點發(fā)送的下一級節(jié)點的節(jié)點信息是:第一級節(jié)點為其下一級節(jié)點確定的標識號; 若所述第一級節(jié)點的下一級節(jié)點個數(shù)大于I個,則所述第一級節(jié)點發(fā)送的下一級節(jié)點的節(jié)點信息是:第一級節(jié)點對每個下一級節(jié)點確定的標識號進行異或操作后得到的標識號。
14.如權利要求13所述的事件追蹤器,其特征在于,在所述待處理節(jié)點有下一級節(jié)點時,發(fā)送的事件消息中包含的下一級節(jié)點的節(jié)點信息為:所述待處理節(jié)點的上一級節(jié)點為該待處理節(jié)點確定的標識號與所述待處理節(jié)點為下一級節(jié)點確定的標識號進行異或操作后得到的標識號; 在所述待處理節(jié)點沒有下一級節(jié)點且所述待處理節(jié)點的上一級節(jié)點個數(shù)為I個時,所述待處理節(jié)點發(fā)送的事件消息中還包括:所述待處理節(jié)點的上一節(jié)點為該待處理節(jié)點確定的標識號; 在所述待處理節(jié)點沒有下一級節(jié)點且所述待處理節(jié)點的上一級節(jié)點個數(shù)大于I個時,所述待處理節(jié)點發(fā)送的事件消息中還包括:所述待處理節(jié)點的各上一節(jié)點為該待處理節(jié)點確定的標識號進行異或操作后得到的標識號。
15.如權利要求14所述的事件追蹤器,其特征在于, 解析模塊,具體用于將所述待處理節(jié)點在所述事件消息中包含的標識號與本地已存儲的標識號進行異或操作,所述本地已存儲的標識號為:之前接收到的包含相同事件標識的事件消息中的標識號進行異或操作后得到的標識號,若所述待處理節(jié)點在所述事件消息中包含的標識號與本地已存儲的標識號進行異或操作的結果為O,則確定節(jié)點都已處理過;否則,確定存在還未處理過的節(jié)點,并存儲本次異或操作后得到的標識號。
【文檔編號】G06F17/30GK104281627SQ201310293733
【公開日】2015年1月14日 申請日期:2013年7月12日 優(yōu)先權日:2013年7月12日
【發(fā)明者】封仲淹 申請人:阿里巴巴集團控股有限公司