分布式流處理系統(tǒng)的容錯方法、節(jié)點及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種分布式流處理系統(tǒng)的容錯方法、節(jié)點及系統(tǒng),屬于計算機(jī)【技術(shù)領(lǐng)域】。該方法包括:獲取失效節(jié)點的節(jié)點信息,并接收上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù),重發(fā)數(shù)據(jù)由源節(jié)點始發(fā);根據(jù)失效節(jié)點的節(jié)點信息確定是否與失效節(jié)點相關(guān);如果與失效節(jié)點相關(guān),則處理接收到的重發(fā)數(shù)據(jù),并發(fā)送至下游節(jié)點。本發(fā)明通過接收上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù),并在確定與失效節(jié)點相關(guān)后,處理接收到的重發(fā)數(shù)據(jù),使得在與失效節(jié)點相關(guān)時才處理上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù),不僅不影響其它節(jié)點的數(shù)據(jù)處理效率,而且不需要在本地存儲大量備份數(shù)據(jù),從而節(jié)省了本地資源。另外,由于不需要與上游或下游其它節(jié)點頻繁交互,因而提高了數(shù)據(jù)處理的效率。
【專利說明】分布式流處理系統(tǒng)的容錯方法、節(jié)點及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)【技術(shù)領(lǐng)域】,特別涉及一種分布式流處理系統(tǒng)的容錯方法、節(jié)點及系統(tǒng)。
【背景技術(shù)】
[0002]隨著分布式計算技術(shù)在各個應(yīng)用領(lǐng)域的不斷擴(kuò)展,分布式流處理系統(tǒng)被廣泛應(yīng)用在眾多領(lǐng)域,例如,金融管理、網(wǎng)絡(luò)監(jiān)視、通訊數(shù)據(jù)管理、WEB應(yīng)用、傳感器網(wǎng)絡(luò)數(shù)據(jù)處理等。分布式流處理系統(tǒng)是指采用分布式系統(tǒng)處理數(shù)據(jù)流業(yè)務(wù)的互聯(lián)網(wǎng)軟件系統(tǒng),而分布式流處理系統(tǒng)的容錯是指在系統(tǒng)內(nèi)部出現(xiàn)故障的情況下,仍然能夠向外部環(huán)境提供正確服務(wù)的能力。分布式流處理系統(tǒng)的容錯方法是增強(qiáng)系統(tǒng)可靠性和可用性的主要手段,在系統(tǒng)內(nèi)的部分工作節(jié)點發(fā)生失效時,系統(tǒng)能自動從失效中恢復(fù)過來,并且不會對分布式系統(tǒng)整個應(yīng)用系統(tǒng)的正常運(yùn)行產(chǎn)生嚴(yán)重影響。
[0003]現(xiàn)有技術(shù)中,應(yīng)用于分布式流處理系統(tǒng)的容錯方法通常有如下幾種:
[0004](I)分布式流處理系統(tǒng)采用集中式數(shù)據(jù)備份,具體為:在源節(jié)點備份數(shù)據(jù),當(dāng)系統(tǒng)的流處理網(wǎng)絡(luò)重新建好后,源節(jié)點對失效前的一段數(shù)據(jù)進(jìn)行重發(fā),系統(tǒng)中的每個工作節(jié)點重新接收并處理源節(jié)點或上游各個工作節(jié)點重新發(fā)送的數(shù)據(jù)。(2)分布式流處理系統(tǒng)采用分布式數(shù)據(jù)備份,具體為:系統(tǒng)中的每個工作節(jié)點均備份前一段時間處理過的數(shù)據(jù),當(dāng)系統(tǒng)的流處理網(wǎng)絡(luò)重新建好后,系統(tǒng)中的各個工作節(jié)點將備份的數(shù)據(jù)重新發(fā)送至下游的各個工作節(jié)點,下游的各個工作節(jié)點重新接收并處理上游各個工作節(jié)點重新發(fā)送的數(shù)據(jù),并在成功接收上游工作節(jié)點重新發(fā)送的數(shù)據(jù)后,向上游工作節(jié)點發(fā)送數(shù)據(jù)處理完成消息。當(dāng)上游工作節(jié)點收到下游工作節(jié)點的數(shù)據(jù)處理完成消息后,上游工作節(jié)點將備份的數(shù)據(jù)刪除。
[0005]在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
[0006]針對上述第(I)種方法,當(dāng)系統(tǒng)的流處理網(wǎng)絡(luò)重新建好后,系統(tǒng)需要進(jìn)行整網(wǎng)回退,由源節(jié)點重新發(fā)送數(shù)據(jù),其它每個工作節(jié)點重新接收并處理源節(jié)點或上游工作節(jié)點重新發(fā)送的數(shù)據(jù),導(dǎo)致整網(wǎng)的數(shù)據(jù)處理效率被拖低,影響數(shù)據(jù)處理效率的同時,浪費(fèi)節(jié)點資源。針對上述第(2)種方法,每個工作節(jié)點均需要備份處理過的數(shù)據(jù),存儲開銷大。另外,由于上游工作節(jié)點和下游工作節(jié)點需要進(jìn)行頻繁交互,導(dǎo)致數(shù)據(jù)處理效率低。
【發(fā)明內(nèi)容】
[0007]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實施例提供了一種分布式流處理系統(tǒng)的容錯方法、節(jié)點及系統(tǒng)。所述技術(shù)方案如下:
[0008]第一方面,提供了一種分布式流處理系統(tǒng)的容錯方法,所述方法包括:
[0009]獲取分布式流處理系統(tǒng)中的失效節(jié)點的節(jié)點信息,并接收上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù),所述重發(fā)數(shù)據(jù)由源節(jié)點始發(fā),所述上游節(jié)點為所述源節(jié)點或上游工作節(jié)點;
[0010]根據(jù)所述失效節(jié)點的節(jié)點信息確定是否與所述失效節(jié)點相關(guān);
[0011]如果與所述失效節(jié)點相關(guān),則處理接收到的重發(fā)數(shù)據(jù),并發(fā)送至下游節(jié)點。[0012]結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,所述獲取所述分布式流處理系統(tǒng)中失效節(jié)點的節(jié)點信息,包括:
[0013]接收集中管理實體發(fā)送的失效節(jié)點的節(jié)點信息,所述集中管理實體用于監(jiān)控所述分布式流處理系統(tǒng)中的各個節(jié)點的工作狀況。
[0014]結(jié)合第一方面,在第一方面的第二種可能的實現(xiàn)方式中,所述根據(jù)所述失效節(jié)點的節(jié)點信息確定是否與所述失效節(jié)點相關(guān),包括:
[0015]根據(jù)所述失效節(jié)點的節(jié)點信息查詢預(yù)先存儲的節(jié)點關(guān)聯(lián)表,所述節(jié)點關(guān)聯(lián)表中記錄了所述分布式流處理系統(tǒng)中的各個節(jié)點信息及對應(yīng)的相關(guān)度;
[0016]根據(jù)查詢結(jié)果確定是否與所述失效節(jié)點相關(guān)。
[0017]結(jié)合第一方面,在第一方面的第三種可能的實現(xiàn)方式中,所述處理接收到的重發(fā)數(shù)據(jù),包括:
[0018]獲取預(yù)先存儲的狀態(tài)信息,所述預(yù)先存儲的狀態(tài)信息至少包括當(dāng)前的節(jié)點狀態(tài)信息及后續(xù)處理數(shù)據(jù)所需的數(shù)據(jù)結(jié)果信息;
[0019]根據(jù)所述預(yù)先存儲的狀態(tài)信息處理接收到的重發(fā)數(shù)據(jù)。
[0020]結(jié)合第一方面的第三種可能的實現(xiàn)方式,在第一方面的第四種可能的實現(xiàn)方式中,所述根據(jù)所述預(yù)先存儲的狀態(tài)信息處理接收到的重發(fā)數(shù)據(jù)之后,還包括:
[0021]接收所述上游節(jié)點發(fā)送的信號包,所述信號包中攜帶有分組標(biāo)識,所述分組標(biāo)識為源節(jié)點對流入的數(shù)據(jù)進(jìn)行分組編號后添加到所述信號包中的;
[0022]根據(jù)當(dāng)前接收到的信號包中攜帶的分組標(biāo)識確定是否需要存儲狀態(tài)信息;
[0023]如果需要存儲狀態(tài)信息,則根據(jù)所述重發(fā)數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
[0024]結(jié)合第一方面的第四種可能的實現(xiàn)方式,在第一方面的第五種可能的實現(xiàn)方式中,所述根據(jù)當(dāng)前接收到的信號包中攜帶的分組標(biāo)識確定是否需要存儲狀態(tài)信息,包括:
[0025]獲取預(yù)先存儲的分組標(biāo)識,并確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的信號包中攜帶的分組標(biāo)識;
[0026]判斷當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致;
[0027]如果當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致,則確定需要存儲狀態(tài)信息。
[0028]結(jié)合第一方面的第三種可能的實現(xiàn)方式,在第一方面的第六種可能的實現(xiàn)方式中,所述上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù)中攜帶有對應(yīng)的分組標(biāo)識,所述分組標(biāo)識為源節(jié)點對所述重發(fā)數(shù)據(jù)進(jìn)行分組編號后添加到所述重發(fā)數(shù)據(jù)中的;
[0029]所述根據(jù)所述預(yù)先存儲的狀態(tài)信息處理接收到的重發(fā)數(shù)據(jù)之后,還包括:
[0030]根據(jù)所述重發(fā)數(shù)據(jù)中攜帶的分組標(biāo)識確定是否需要存儲狀態(tài)信息;
[0031]如果需要存儲狀態(tài)信息,則根據(jù)所述重發(fā)數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
[0032]結(jié)合第一方面的第六種可能的實現(xiàn)方式,在第一方面的第七種可能的實現(xiàn)方式中,所述根據(jù)所述重發(fā)數(shù)據(jù)中攜帶的分組標(biāo)識確定是否需要存儲狀態(tài)信息,包括:
[0033]獲取預(yù)先存儲的分組標(biāo)識,并確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的數(shù)據(jù)中攜帶的分組標(biāo)識;
[0034]判斷所述重發(fā)數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致;
[0035]如果所述重發(fā)數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致,則確定需要存儲狀態(tài)信息。
[0036]結(jié)合第一方面,在第一方面的第八種可能的實現(xiàn)方式中,所述根據(jù)所述失效節(jié)點的節(jié)點信息確定是否與所述失效節(jié)點相關(guān)之后,還包括:
[0037]如果與所述失效節(jié)點不相關(guān),則對接收到的重發(fā)數(shù)據(jù)不做處理。
[0038]結(jié)合第一方面的第八種可能的實現(xiàn)方式,在第一方面的第九種可能的實現(xiàn)方式中,所述對接收到的重發(fā)數(shù)據(jù)不做處理之后,還包括:
[0039]接收所述上游節(jié)點發(fā)送的其它數(shù)據(jù),所述其它數(shù)據(jù)中攜帶有對應(yīng)的分組標(biāo)識,所述分組標(biāo)識為源節(jié)點對所述其它數(shù)據(jù)進(jìn)行分組編號后添加到所述其它數(shù)據(jù)中的;
[0040]獲取預(yù)先存儲的分組標(biāo)識,并確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的數(shù)據(jù)中攜帶的分組標(biāo)識;
[0041]判斷所述其它數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致;
[0042]如果所述其它數(shù) 據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致,則對所述其它數(shù)據(jù)進(jìn)行處理。
[0043]結(jié)合第一方面的第九種可能的實現(xiàn)方式,在第一方面的第十種可能的實現(xiàn)方式中,所述對所述其它數(shù)據(jù)進(jìn)行處理之后,還包括:
[0044]獲取預(yù)先存儲的分組標(biāo)識,并確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的數(shù)據(jù)中攜帶的分組標(biāo)識;
[0045]判斷所述其它數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致;
[0046]如果所述其它數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致,則確定需要存儲狀態(tài)信息,并根據(jù)所述其它數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
[0047]結(jié)合第一方面的第八種可能的實現(xiàn)方式,在第一方面的第十一種可能的實現(xiàn)方式中,所述對接收到的重發(fā)數(shù)據(jù)不做處理之后,還包括:
[0048]接收所述上游節(jié)點發(fā)送的信號包,所述信號包中攜帶有分組標(biāo)識,所述分組標(biāo)識為源節(jié)點對流入的數(shù)據(jù)進(jìn)行分組編號后添加到所述信號包中的;
[0049]獲取預(yù)先存儲的分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的信號包中攜帶的分組標(biāo)識;
[0050]判斷當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識是否一致;
[0051]如果當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識一致,則對所述上游節(jié)點發(fā)送的后續(xù)數(shù)據(jù)進(jìn)行處理。
[0052]結(jié)合第一方面的第十一種可能的實現(xiàn)方式,在第一方面的第十二種可能的實現(xiàn)方式中,所述對所述上游節(jié)點發(fā)送的后續(xù)數(shù)據(jù)進(jìn)行處理之后,還包括:
[0053]獲取預(yù)先存儲的分組標(biāo)識,并確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的信號包中攜帶的分組標(biāo)識;
[0054]判斷當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致;
[0055]如果當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致,則確定需要存儲狀態(tài)信息,并根據(jù)接收當(dāng)前接收的信號包之前接收的其它數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
[0056]第二方面,提供了一種分布式流處理系統(tǒng)的容錯方法,所述方法包括:
[0057]獲取分布式流處理系統(tǒng)中的失效節(jié)點的節(jié)點信息;
[0058]根據(jù)所述失效節(jié)點的節(jié)點信息獲取緩存的數(shù)據(jù),并將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點,由所述下游節(jié)點根據(jù)所述下游節(jié)點與所述失效節(jié)點是否相關(guān)來確定是否處理所述重發(fā)數(shù)據(jù)。
[0059]結(jié)合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,所述獲取分布式流處理系統(tǒng)中的失效節(jié)點的節(jié)點信息,包括:
[0060]接收集中管理實體發(fā)送的失效節(jié)點的節(jié)點信息,所述集中管理實體用于監(jiān)控所述分布式流處理系統(tǒng)中的各個節(jié)點的工作狀況。
[0061]結(jié)合第二方面,在第二方面的第二種可能的實現(xiàn)方式中,所述將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點之后,還包括:
[0062]將流入的數(shù)據(jù)對應(yīng)的分組標(biāo)識添加到信號包中,將攜帶有分組標(biāo)識的信號包發(fā)送至下游節(jié)點。
[0063]結(jié)合第二方面,在第二方面的第三種可能的實現(xiàn)方式中,所述將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點,包括:
[0064]將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù),并將所述重發(fā)數(shù)據(jù)對應(yīng)的分組標(biāo)識添加到所述重發(fā)數(shù)據(jù)中,將攜帶有分組標(biāo)識的重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點。
[0065]結(jié)合第二方面的第二種或第三種可能的實現(xiàn)方式,在第二方面的第四種可能的實現(xiàn)方式中,所述將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點之前,還包括:
[0066]根據(jù)接收數(shù)據(jù)的時間間隔或數(shù)據(jù)大小對接收到的數(shù)據(jù)進(jìn)行分組編號,得到每個數(shù)據(jù)對應(yīng)的分組標(biāo)識。
[0067]第三方面,提供了一種工作節(jié)點,所述工作節(jié)點包括:
[0068]第一獲取模塊,用于獲取分布式流處理系統(tǒng)中的失效節(jié)點的節(jié)點信息;
[0069]第一接收模塊,用于接收上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù),所述重發(fā)數(shù)據(jù)由源節(jié)點始發(fā),所述上游節(jié)點為源節(jié)點或上游工作節(jié)點;
[0070]第一確定模塊,用于根據(jù)所述失效節(jié)點的節(jié)點信息確定是否與所述失效節(jié)點相關(guān);
[0071]第一處理模塊,用于當(dāng)與所述失效節(jié)點相關(guān)時,處理接收到的重發(fā)數(shù)據(jù),并發(fā)送至下游節(jié)點。
[0072]結(jié)合第三方面,在第三方面的第一種可能的實現(xiàn)方式中,所述第一獲取模塊,用于接收集中管理實體發(fā)送的失效節(jié)點的節(jié)點信息,所述集中管理實體用于監(jiān)控所述分布式流處理系統(tǒng)中的各個節(jié)點的工作狀況。
[0073]結(jié)合第三方面,在第三方面的第二種可能的實現(xiàn)方式中,所述第一確定模塊,包括:
[0074]查詢單元,用于根據(jù)所述失效節(jié)點的節(jié)點信息查詢預(yù)先存儲的節(jié)點關(guān)聯(lián)表,所述節(jié)點關(guān)聯(lián)表中記錄了所述分布式流處理系統(tǒng)中的各個節(jié)點信息及對應(yīng)的相關(guān)度;
[0075]確定單元,用于根據(jù)查詢結(jié)果確定是否與所述失效節(jié)點相關(guān)。
[0076]結(jié)合第三方面,在第三方面的第三種可能的實現(xiàn)方式中,所述第一處理模塊,包括:
[0077]獲取單元,用于獲取預(yù)先存儲的狀態(tài)信息,所述預(yù)先存儲的狀態(tài)信息至少包括當(dāng)前的節(jié)點狀態(tài)信息及后續(xù)處理數(shù)據(jù)所需的數(shù)據(jù)結(jié)果信息;
[0078]處理單元,用于根據(jù)所述預(yù)先存儲的狀態(tài)信息處理接收到的重發(fā)數(shù)據(jù)。
[0079]結(jié)合第三方面的第三種可能的實現(xiàn)方式,在第三方面的第四種可能的實現(xiàn)方式中,所述工作節(jié)點,還包括:
[0080]第二接收模塊,用于接收所述上游節(jié)點發(fā)送的信號包,所述信號包中攜帶有分組標(biāo)識,所述分組標(biāo)識為源節(jié)點對流入的數(shù)據(jù)進(jìn)行分組編號后添加到所述信號包中的;
[0081]第二確定模塊,用于根據(jù)當(dāng)前接收到的信號包中攜帶的分組標(biāo)識確定是否需要存儲狀態(tài)信息;
[0082]第一存儲模塊,用于當(dāng)需要存儲狀態(tài)信息時,根據(jù)所述重發(fā)數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
[0083]結(jié)合第三方面的第四種可能的實現(xiàn)方式,在第三方面的第五種可能的實現(xiàn)方式中,所述第二確定模塊,包括:
[0084]獲取單元,用于獲取預(yù)先存儲的分組標(biāo)識;
[0085]第一確定單元,用于確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的信號包中攜帶的分組標(biāo)識;
[0086]判斷單元,用于判斷當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致;
[0087]第二確定單元,用于當(dāng)當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致時,確定需要存儲狀態(tài)信息。
[0088]結(jié)合第三方面的第三種可能的實現(xiàn)方式,在第三方面的第六種可能的實現(xiàn)方式中,所述工作節(jié)點,還包括:
[0089]第三確定模塊,用于當(dāng)上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù)中攜帶有對應(yīng)的分組標(biāo)識時,,根據(jù)所述重發(fā)數(shù)據(jù)中攜帶的分組標(biāo)識確定是否需要存儲狀態(tài)信息,所述分組標(biāo)識為源節(jié)點對所述重發(fā)數(shù)據(jù)進(jìn)行分組編號后添加到所述重發(fā)數(shù)據(jù)中的;
[0090]第二存儲模塊,用于當(dāng)需要存儲狀態(tài)信息時,根據(jù)所述重發(fā)數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
[0091]結(jié)合第三方面的第六種可能的實現(xiàn)方式,在第三方面的第七種可能的實現(xiàn)方式中,所述第三確定模塊,包括:
[0092]獲取單元,用于獲取預(yù)先存儲的分組標(biāo)識;
[0093]第一確定單元,用于確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的數(shù)據(jù)中攜帶的分組標(biāo)識;
[0094]判斷單元,用于判斷所述重發(fā)數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致;
[0095]第二確定單元,用于當(dāng)所述重發(fā)數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致時,確定需要存儲狀態(tài)信息。
[0096]結(jié)合第三方面,在第三方面的第八種可能的實現(xiàn)方式中,所述工作節(jié)點,還包括:
[0097]第四確定模塊,用于當(dāng)確定與所述失效節(jié)點不相關(guān)時,對接收到的重發(fā)數(shù)據(jù)不做處理。
[0098]結(jié)合第三方面的第八種可能的實現(xiàn)方式,在第三方面的第九種可能的實現(xiàn)方式中,所述工作節(jié)點,還包括:
[0099]第三接收模塊,用于接收所述上游節(jié)點發(fā)送的其它數(shù)據(jù),所述其它數(shù)據(jù)中攜帶有對應(yīng)的分組標(biāo)識,所述分組標(biāo)識為源節(jié)點對所述其它數(shù)據(jù)進(jìn)行分組編號后添加到所述其它數(shù)據(jù)中的;
[0100]第二獲取模塊,用于獲取預(yù)先存儲的分組標(biāo)識;
[0101]第五確定模塊,用于確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的數(shù)據(jù)中攜帶的分組標(biāo)識;
[0102]第一判斷模塊,用于判斷所述其它數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致;
[0103]第二處理模塊,用于當(dāng)所述其它數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致時,對所述其它數(shù)據(jù)進(jìn)行處理。
[0104]結(jié)合第三方面的第九種可能的實現(xiàn)方式,在第三方面的第十種可能的實現(xiàn)方式中,所述工作節(jié)點,還包括:
[0105]第三獲取模塊,用于獲取預(yù)先存儲的分組標(biāo)識;
[0106]第六確定模塊,用于確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的數(shù)據(jù)中攜帶的分組標(biāo)識;
[0107]第二判斷模塊,用于判斷所述其它數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致;
[0108]第七確定模塊,用于當(dāng)所述其它數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致時,確定需要存儲狀態(tài)信息;
[0109]第三存儲模塊,用于根據(jù)所述其它數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
[0110]結(jié)合第三方面的第八種可能的實現(xiàn)方式,在第三方面的第十一種可能的實現(xiàn)方式中,所述工作節(jié)點,還包括:
[0111]第四接收模塊,用于接收所述上游節(jié)點發(fā)送的信號包,所述信號包中攜帶有分組標(biāo)識,所述分組標(biāo)識為源節(jié)點對流入的數(shù)據(jù)進(jìn)行分組編號后添加到所述信號包中的;
[0112]第四獲取模塊,用于獲取預(yù)先存儲的分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的信號包中攜帶的分組標(biāo)識;
[0113]第三判斷模塊,用于判斷當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識是否一致;
[0114]第三處理模塊,用于當(dāng)當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識一致時,對所述上游節(jié)點發(fā)送的后續(xù)數(shù)據(jù)進(jìn)行處理。
[0115]結(jié)合第三方面的第十一種可能的實現(xiàn)方式,在第三方面的第十二種可能的實現(xiàn)方式中,所述工作節(jié)點,還包括:
[0116]第五獲取模塊,用于獲取預(yù)先存儲的分組標(biāo)識;[0117]第八確定模塊,用于確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的信號包中攜帶的分組標(biāo)識;
[0118]第四判斷模塊,用于判斷當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致;
[0119]第九確定模塊,用于當(dāng)當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致時,確定需要存儲狀態(tài)信息;
[0120]第四存儲模塊,用于根據(jù)接收當(dāng)前接收的信號包之前接收的其它數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
[0121]第四方面,提供了一種源節(jié)點,所述源節(jié)點包括:
[0122]第一獲取模塊,用于獲取分布式流處理系統(tǒng)中的失效節(jié)點的節(jié)點信息;
[0123]第二獲取模塊,用于根據(jù)所述失效節(jié)點的節(jié)點信息獲取緩存的數(shù)據(jù);
[0124]發(fā)送模塊,用于將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點,由所述下游節(jié)點根據(jù)所述下游節(jié)點與所述失效節(jié)點是否相關(guān)來確定是否處理所述重發(fā)數(shù)據(jù)。
[0125]結(jié)合第四方面,在第四方面的第一種可能的實現(xiàn)方式中,所述第一獲取模塊用于接收集中管理實體發(fā)送的失效節(jié)點的節(jié)點信息,所述集中管理實體用于監(jiān)控所述分布式流處理系統(tǒng)中的各個節(jié)點的工作狀況。
[0126]結(jié)合第四方面,在第四方面的第二種可能的實現(xiàn)方式中,所述發(fā)送模塊,包括:
[0127]第一添加單元,用于將流入的數(shù)據(jù)對應(yīng)的分組標(biāo)識添加到信號包中;
[0128]第一發(fā)送單元,用于將攜帶有分組標(biāo)識的信號包發(fā)送至下游節(jié)點。
[0129]結(jié)合第四方面,在第四方面的第三種可能的實現(xiàn)方式中,所述發(fā)送模塊,包括:
[0130]第二添加單元,用于將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù),并將所述重發(fā)數(shù)據(jù)對應(yīng)的分組標(biāo)識添加到所述重發(fā)數(shù)據(jù)中;
[0131]第二發(fā)送單元,用于將攜帶有分組標(biāo)識的重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點。
[0132]結(jié)合第四方面的第二種或第三種可能的實現(xiàn)方式,在第四方面的第四種可能的實現(xiàn)方式中,所述源節(jié)點,還包括:
[0133]分組編號模塊,用于根據(jù)接收數(shù)據(jù)的時間間隔或數(shù)據(jù)大小對接收到的數(shù)據(jù)進(jìn)行分組編號,得到每個數(shù)據(jù)對應(yīng)的分組標(biāo)識。
[0134]第五方面,提供了一種分布式流處理系統(tǒng)的容錯系統(tǒng),所述系統(tǒng)包括:源節(jié)點和多個工作節(jié)點;
[0135]其中,所述工作節(jié)點如上述第三方面提供的節(jié)點;所述源節(jié)點如上述第四方面提供的源節(jié)點。
[0136]本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:
[0137]通過接收上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù),并在確定與失效節(jié)點相關(guān)后,處理接收到的重發(fā)數(shù)據(jù),使得在與失效節(jié)點相關(guān)時才處理上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù),不僅不影響其它節(jié)點的數(shù)據(jù)處理效率,而且不需要在本地存儲大量備份數(shù)據(jù),從而節(jié)省了本地資源。另外,由于不需要與上游或下游其它節(jié)點頻繁交互,因而提高了數(shù)據(jù)處理的效率。
【專利附圖】
【附圖說明】
[0138]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
[0139]圖1是本發(fā)明實施例提供的一種分布式流處理系統(tǒng)的容錯方法的實施環(huán)境示意圖;
[0140]圖2是本發(fā)明實施例提供的一種分布式流處理系統(tǒng)的容錯系統(tǒng)結(jié)構(gòu)示意圖;
[0141]圖3是本發(fā)明實施例提供的一種分布式流處理系統(tǒng)的流處理網(wǎng)絡(luò)拓?fù)渎酚杀淼慕Y(jié)構(gòu)示意圖;
[0142]圖4是本發(fā)明實施例一提供的一種分布式流處理系統(tǒng)的容錯方法的方法流程圖;
[0143]圖5是本發(fā)明實施例一提供的另一種分布式流處理系統(tǒng)的容錯方法的流程圖;
[0144]圖6是本發(fā)明實施例二提供的一種分布式流處理系統(tǒng)的容錯方法的方法流程圖;
[0145]圖7是本發(fā)明實施例三提供的一種分布式流處理系統(tǒng)的容錯方法的方法流程圖;
[0146]圖8是本發(fā)明實施例四提供的一種工作節(jié)點的結(jié)構(gòu)示意圖;
[0147]圖9是本發(fā)明實施例五提供的一種源節(jié)點的結(jié)構(gòu)示意圖;
[0148]圖10是本發(fā)明實施例六提供的一種分布式流處理系統(tǒng)的容錯系統(tǒng)的結(jié)構(gòu)示意圖;
[0149]圖11是本發(fā)明實施例七提供的一種工作節(jié)點的結(jié)構(gòu)示意圖;
[0150]圖12是本發(fā)明實施例八提供的一種源節(jié)點的結(jié)構(gòu)示意圖。
【具體實施方式】
[0151]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進(jìn)一步地詳細(xì)描述。
[0152]如圖1所示,其示出了本發(fā)明實施例提供的分布式流處理系統(tǒng)的容錯方法的實施環(huán)境結(jié)構(gòu)示意圖。該實施環(huán)境為一個分布式流處理系統(tǒng),包括源節(jié)點和多個工作節(jié)點。具體地,如圖2所示,為了保證分布式流處理系統(tǒng)的正常工作,圖1所示的實施環(huán)境示意圖中配置有收集流應(yīng)用路由信息模塊201、節(jié)點管理模塊202和存儲模塊203。
[0153]其中,收集流應(yīng)用路由信息模塊201包括集中管理實體,集中管理實體用于監(jiān)控該分布式流處理系統(tǒng)中的各個工作節(jié)點以及源節(jié)點的工作狀況。由于分布式流處理系統(tǒng)加載應(yīng)用的時候會涉及到分配相應(yīng)的節(jié)點及之間的鏈路關(guān)系,因此,集中管理實體存儲了該分布式流處理系統(tǒng)對應(yīng)的流處理網(wǎng)絡(luò)拓?fù)渎酚杀?。如圖3所示,其示出了一種流處理網(wǎng)絡(luò)拓?fù)渎酚杀淼慕Y(jié)構(gòu)意圖,該分布式流處理系統(tǒng)中的各個工作節(jié)點根據(jù)該流處理網(wǎng)絡(luò)拓?fù)渎酚杀斫邮詹⑻幚碛稍垂?jié)點流入的數(shù)據(jù)。
[0154]此外,集中管理實體還存儲了備份節(jié)點表,該備份節(jié)點表存儲了系統(tǒng)中的各個工作節(jié)點的備份節(jié)點。當(dāng)分布式流處理系統(tǒng)中的某個工作節(jié)點失效后,集中管理實體可以控制備份節(jié)點頂替失效節(jié)點,保證該分布式流處理系統(tǒng)可以快速恢復(fù)處理網(wǎng)絡(luò)。其中,備份節(jié)點可以由集中管理實體初始化,后續(xù)可以根據(jù)系統(tǒng)的負(fù)載均衡策略和調(diào)度策略進(jìn)行動態(tài)調(diào)
難
iF.0
[0155]結(jié)合圖1,節(jié)點管理模塊202用于管理圖1所示的分布式流處理系統(tǒng)中的一個源節(jié)點和多個工作節(jié)點。其中,源節(jié)點為分布式流處理系統(tǒng)中數(shù)據(jù)流入的節(jié)點,工作節(jié)點為該分布式流處理系統(tǒng)中除源節(jié)點之外的其它所有節(jié)點。在圖1所示的分布式流處理系統(tǒng)中,由源節(jié)點統(tǒng)一備份處理過的數(shù)據(jù),各個工作節(jié)點以及源節(jié)點實時保存自己的狀態(tài)信息。
[0156]本發(fā)明實施例中,在分布式流處理系統(tǒng)正常運(yùn)行的過程中,源節(jié)點對流入的數(shù)據(jù)進(jìn)行標(biāo)識,并按照時間間隔、數(shù)據(jù)塊大小等條件周期性備份,然后將標(biāo)識后的數(shù)據(jù)發(fā)送到下游節(jié)點。各個工作節(jié)點接收上游的源節(jié)點或上游的工作節(jié)點發(fā)送的數(shù)據(jù),并根據(jù)數(shù)據(jù)的標(biāo)識信息周期性地存儲狀態(tài)信息,該狀態(tài)信息至少包括當(dāng)前的節(jié)點狀態(tài)信息和后續(xù)處理數(shù)據(jù)需要用到的數(shù)據(jù)結(jié)果信息。當(dāng)該分布式流處理系統(tǒng)中的某一工作節(jié)點失效后,源節(jié)點重發(fā)緩存的數(shù)據(jù),和失效節(jié)點相關(guān)的工作節(jié)點重新處理所涉及的數(shù)據(jù)。另外,為了使集中管理實體可以實時監(jiān)控系統(tǒng)中的各個工作節(jié)點以及源節(jié)點的工作狀況,各個工作節(jié)點以及源節(jié)點定時向集中管理實體上報心跳信息,告知工作狀況。
[0157]存儲模塊203用于存儲所有和容錯相關(guān)的信息,包括流處理網(wǎng)絡(luò)拓?fù)渎酚杀?,備份?jié)點表,各個工作節(jié)點及源節(jié)點的狀態(tài)信息等。其中,存儲模塊203包括但不限于可以通過兩種形式實現(xiàn):第一種是單點存儲實體,即所有和容錯相關(guān)的信息集中存儲在某個節(jié)點;第二種是分布式存儲實體,該存儲方式是一種共享式的、多個節(jié)點協(xié)作式的存儲方式。此夕卜,本發(fā)明實施例不對存儲模塊203涉及的存儲介質(zhì)進(jìn)行限定,存儲介質(zhì)可以是硬盤,也可以是內(nèi)存等。
[0158]實施例一
[0159]結(jié)合上述內(nèi)容,本發(fā)明實施例提供了一種分布式流處理系統(tǒng)的容錯方法。以分布式流處理系統(tǒng)中的除源節(jié)點之外的某個工作節(jié)點執(zhí)行該方法的角度為例,參見圖4,本發(fā)明實施例提供的方法流程包括:
[0160]401:獲取分布式流處理系統(tǒng)中的失效節(jié)點的節(jié)點信息,并接收上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù),重發(fā)數(shù)據(jù)由源節(jié)點始發(fā),上游節(jié)點為源節(jié)點或上游工作節(jié)點;
[0161]402:根據(jù)失效節(jié)點的節(jié)點信息確定是否與失效節(jié)點相關(guān);
[0162]403:如果與失效節(jié)點相關(guān),則處理接收到的重發(fā)數(shù)據(jù),并發(fā)送至下游節(jié)點。
[0163]優(yōu)選地,獲取分布式流處理系統(tǒng)中失效節(jié)點的節(jié)點信息,包括:
[0164]接收集中管理實體發(fā)送的失效節(jié)點的節(jié)點信息,集中管理實體用于監(jiān)控分布式流處理系統(tǒng)中的各個節(jié)點的工作狀況。
[0165]優(yōu)選地,根據(jù)失效節(jié)點的節(jié)點信息確定是否與失效節(jié)點相關(guān),包括:
[0166]根據(jù)失效節(jié)點的節(jié)點信息查詢預(yù)先存儲的節(jié)點關(guān)聯(lián)表,節(jié)點關(guān)聯(lián)表中記錄了分布式流處理系統(tǒng)中的各個節(jié)點信息及對應(yīng)的相關(guān)度;
[0167]根據(jù)查詢結(jié)果確定是否與失效節(jié)點相關(guān)。
[0168]優(yōu)選地,處理接收到的重發(fā)數(shù)據(jù),包括:
[0169]獲取預(yù)先存儲的狀態(tài)信息,預(yù)先存儲的狀態(tài)信息至少包括當(dāng)前的節(jié)點狀態(tài)信息及后續(xù)處理數(shù)據(jù)所需的數(shù)據(jù)結(jié)果信息;
[0170]根據(jù)預(yù)先存儲的狀態(tài)信息處理接收到的重發(fā)數(shù)據(jù)。
[0171]優(yōu)選地,根據(jù)預(yù)先存儲的狀態(tài)信息處理接收到的重發(fā)數(shù)據(jù)之后,還包括:
[0172]接收上游節(jié)點發(fā)送的信號包,信號包中攜帶有分組標(biāo)識,分組標(biāo)識為源節(jié)點對流入的數(shù)據(jù)進(jìn)行分組編號后添加到信號包中的;
[0173]根據(jù)當(dāng)前接收到的信號包中攜帶的分組標(biāo)識確定是否需要存儲狀態(tài)信息;[0174]如果需要存儲狀態(tài)信息,則根據(jù)重發(fā)數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
[0175]優(yōu)選地,根據(jù)當(dāng)前接收到的信號包中攜帶的分組標(biāo)識確定是否需要存儲狀態(tài)信息,包括:
[0176]獲取預(yù)先存儲的分組標(biāo)識,并確定預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,預(yù)先存儲的分組標(biāo)識為之前接收到的信號包中攜帶的分組標(biāo)識;
[0177]判斷當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致;
[0178]如果當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致,則確定需要存儲狀態(tài)信息。
[0179]優(yōu)選地,上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù)中攜帶有對應(yīng)的分組標(biāo)識,分組標(biāo)識為源節(jié)點對重發(fā)數(shù)據(jù)進(jìn)行分組編號后添加到重發(fā)數(shù)據(jù)中的;
[0180]根據(jù)預(yù)先存儲的狀態(tài)信息處理接收到的重發(fā)數(shù)據(jù)之后,還包括:
[0181]根據(jù)重發(fā)數(shù)據(jù)中攜帶的分組標(biāo)識確定是否需要存儲狀態(tài)信息;
[0182]如果需要存儲狀態(tài)信息,則根據(jù)重發(fā)數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
[0183]優(yōu)選地,根據(jù)重發(fā)數(shù)據(jù)中攜帶的分組標(biāo)識確定是否需要存儲狀態(tài)信息,包括:
[0184]獲取預(yù)先存儲的分組標(biāo)識,并確定預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,預(yù)先存儲的分組標(biāo)識為之前接收到的數(shù)據(jù)中攜帶的分組標(biāo)識;
[0185]判斷重發(fā)數(shù)據(jù)中攜帶的分組標(biāo)識與預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是
否一致;
[0186]如果重發(fā)數(shù)據(jù)中攜帶的分組標(biāo)識與預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致,則確定需要存儲狀態(tài)信息。
[0187]優(yōu)選地,根據(jù)失效節(jié)點的節(jié)點信息確定是否與失效節(jié)點相關(guān)之后,還包括:
[0188]如果與失效節(jié)點不相關(guān),則對接收到的重發(fā)數(shù)據(jù)不做處理。
[0189]優(yōu)選地,對接收到的重發(fā)數(shù)據(jù)不做處理之后,還包括:
[0190]接收上游節(jié)點發(fā)送的其它數(shù)據(jù),其它數(shù)據(jù)中攜帶有對應(yīng)的分組標(biāo)識,分組標(biāo)識為源節(jié)點對其它數(shù)據(jù)進(jìn)行分組編號后添加到其它數(shù)據(jù)中的;
[0191]獲取預(yù)先存儲的分組標(biāo)識,并確定預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,預(yù)先存儲的分組標(biāo)識為之前接收到的數(shù)據(jù)中攜帶的分組標(biāo)識;
[0192]判斷其它數(shù)據(jù)中攜帶的分組標(biāo)識與預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是
否一致;
[0193]如果其它數(shù)據(jù)中攜帶的分組標(biāo)識與預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致,則對其它數(shù)據(jù)進(jìn)行處理。
[0194]優(yōu)選地,對其它數(shù)據(jù)進(jìn)行處理之后,還包括:
[0195]獲取預(yù)先存儲的分組標(biāo)識,并確定預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,預(yù)先存儲的分組標(biāo)識為之前接收到的數(shù)據(jù)中攜帶的分組標(biāo)識;
[0196]判斷其它數(shù)據(jù)中攜帶的分組標(biāo)識與預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是
否一致;
[0197]如果其它數(shù)據(jù)中攜帶的分組標(biāo)識與預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致,則確定需要存儲狀態(tài)信息,并根據(jù)其它數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。[0198]優(yōu)選地,對接收到的重發(fā)數(shù)據(jù)不做處理之后,還包括:
[0199]接收上游節(jié)點發(fā)送的信號包,信號包中攜帶有分組標(biāo)識,分組標(biāo)識為源節(jié)點對流入的數(shù)據(jù)進(jìn)行分組編號后添加到信號包中的;
[0200]獲取預(yù)先存儲的分組標(biāo)識,預(yù)先存儲的分組標(biāo)識為之前接收到的信號包中攜帶的分組標(biāo)識;
[0201]判斷當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與預(yù)先存儲的分組標(biāo)識是否一致;
[0202]如果當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與預(yù)先存儲的分組標(biāo)識一致,則對上游節(jié)點發(fā)送的后續(xù)數(shù)據(jù)進(jìn)行處理。
[0203]優(yōu)選地,對上游節(jié)點發(fā)送的后續(xù)數(shù)據(jù)進(jìn)行處理之后,還包括:
[0204]獲取預(yù)先存儲的分組標(biāo)識,并確定預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,預(yù)先存儲的分組標(biāo)識為之前接收到的信號包中攜帶的分組標(biāo)識;
[0205]判斷當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致;
[0206]如果當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致,則確定需要存儲狀態(tài)信息,并根據(jù)接收當(dāng)前接收的信號包之前接收的其它數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
[0207]以分布式流處理系統(tǒng)中的源節(jié)點執(zhí)行該方法的角度為例,參見圖5,本發(fā)明實施例提供的方法流程包括:
[0208]501:獲取分布式流處理系統(tǒng)中的失效節(jié)點的節(jié)點信息;
[0209]502:根據(jù)失效節(jié)點的節(jié)點信息獲取緩存的數(shù)據(jù),并將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點,由下游節(jié)點根據(jù)下游節(jié)點與失效節(jié)點是否相關(guān)來確定是否處理重發(fā)數(shù)據(jù)。
[0210]優(yōu)選地,獲取分布式流處理系統(tǒng)中的失效節(jié)點的節(jié)點信息,包括:
[0211]接收集中管理實體發(fā)送的失效節(jié)點的節(jié)點信息,集中管理實體用于監(jiān)控分布式流處理系統(tǒng)中的各個節(jié)點的工作狀況。
[0212]優(yōu)選地,將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點之后,還包括:
[0213]將流入的數(shù)據(jù)對應(yīng)的分組標(biāo)識添加到信號包中,將攜帶有分組標(biāo)識的信號包發(fā)送至下游節(jié)點。
[0214]優(yōu)選地,將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點,包括:
[0215]將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù),并將重發(fā)數(shù)據(jù)對應(yīng)的分組標(biāo)識添加到重發(fā)數(shù)據(jù)中,將攜帶有分組標(biāo)識的重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點。
[0216]優(yōu)選地,將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點之前,還包括:
[0217]根據(jù)接收數(shù)據(jù)的時間間隔或數(shù)據(jù)大小對接收到的數(shù)據(jù)進(jìn)行分組編號,得到每個數(shù)據(jù)對應(yīng)的分組標(biāo)識。
[0218]本發(fā)明實施例提供的方法,通過接收上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù),并在確定與失效節(jié)點相關(guān)后,處理接收到的重發(fā)數(shù)據(jù),使得在與失效節(jié)點相關(guān)時才處理上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù),不僅不影響其它節(jié)點的數(shù)據(jù)處理效率,而且不需要在本地存儲大量備份數(shù)據(jù),從而節(jié)省了本地資源。另外,由于不需要與上游或下游其它節(jié)點頻繁交互,因而提高了數(shù)據(jù)處理的效率。
[0219]實施例二[0220]結(jié)合圖1所示的實施環(huán)境結(jié)構(gòu)示意圖、圖2所示的分布式流處理系統(tǒng)的結(jié)構(gòu)示意圖和上述實施例一的內(nèi)容,本發(fā)明實施例提供了一種分布式流處理系統(tǒng)的容錯方法。為了便于說明,本發(fā)明實施例以分布式流處理系統(tǒng)中的一個工作節(jié)點失效后,源節(jié)點在發(fā)送重發(fā)數(shù)據(jù)時,根據(jù)接收的數(shù)據(jù)的時間間隔或數(shù)據(jù)大小對流入的數(shù)據(jù)進(jìn)行分組編號,得到每個數(shù)據(jù)對應(yīng)的分組標(biāo)識,并將該分組標(biāo)識添加到信號包中發(fā)送給下游節(jié)點,使得下游節(jié)點在接收信號包后根據(jù)信號包中攜帶的分組標(biāo)識進(jìn)行狀態(tài)信息存儲為例,對本實施例提供的方法進(jìn)行詳細(xì)地解釋說明。參見圖6,本發(fā)明實施例提供的方法流程包括:
[0221]601:源節(jié)點和工作節(jié)點獲取分布式流處理系統(tǒng)中的失效節(jié)點的節(jié)點信息。
[0222]其中,源節(jié)點和工作節(jié)點獲取分布式流處理系統(tǒng)中的失效節(jié)點的節(jié)點信息的方式,可以有多種。由于該分布式流處理系統(tǒng)中的集中管理實體可以監(jiān)控該分布式流處理系統(tǒng)中各個節(jié)點的工作狀況,且各個節(jié)點需要定時向集中管理實體上報心跳信息。因此,集中管理實體可以根據(jù)各個節(jié)點上報的心跳信息實時獲取該分布式流處理系統(tǒng)中的失效節(jié)點的節(jié)點信息,并且可以在獲取到失效節(jié)點的節(jié)點信息后將該失效節(jié)點的節(jié)點信息廣播給該分布式流處理系統(tǒng)中的源節(jié)點和各個工作節(jié)點。因此,源節(jié)點和工作節(jié)點獲取分布式流處理系統(tǒng)中的失效節(jié)點的節(jié)點信息可以通過接收集中管理實體發(fā)送的失效節(jié)點的節(jié)點信息來實現(xiàn)。當(dāng)然,源節(jié)點和工作節(jié)點也可以通過其它方式來獲取分布式流處理系統(tǒng)中的失效節(jié)點的節(jié)點信息,本發(fā)明實施例對此不作具體限定。
[0223]602:源節(jié)點根據(jù)失效節(jié)點的節(jié)點信息獲取緩存的數(shù)據(jù),并將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點。
[0224]在分布式流流處理系統(tǒng)中,當(dāng)某一節(jié)點失效后,該分布式流處理系統(tǒng)可以采取一些措施使系統(tǒng)恢復(fù)正常工作,從而不影響系統(tǒng)進(jìn)行正常地數(shù)據(jù)處理。為了保證從失效節(jié)點失效到系統(tǒng)恢復(fù)正常的這段時間內(nèi),各個工作節(jié)點不會因漏處理數(shù)據(jù)而使數(shù)據(jù)處理過程出現(xiàn)錯誤。因此,當(dāng)系統(tǒng)恢復(fù)正常工作后,源節(jié)點需要根據(jù)失效節(jié)點的節(jié)點信息獲取緩存的數(shù)據(jù),并將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點。本發(fā)明實施例對源節(jié)點根據(jù)失效節(jié)點的節(jié)點信息獲取緩存的數(shù)據(jù)以及將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點的方式不作具體限定。
[0225]其中,分布式流處理系統(tǒng)可以采取很多措施來使該系統(tǒng)恢復(fù)正常工作,例如,可以由系統(tǒng)中的集中管理實體控制失效節(jié)點的備份節(jié)點取代失效節(jié)點來繼續(xù)處理數(shù)據(jù);也可以將失效節(jié)點的功能遷移到其它工作節(jié)點,并在系統(tǒng)的流處理網(wǎng)絡(luò)拓?fù)渎酚杀硭⑿潞箝_始繼續(xù)處理數(shù)據(jù);還可以是在失效節(jié)點重新啟動之后繼續(xù)處理數(shù)據(jù)。
[0226]優(yōu)選地,為了在發(fā)送重發(fā)數(shù)據(jù)時,便于對重發(fā)數(shù)據(jù)進(jìn)行管理,以及為了使下游節(jié)點后續(xù)可以根據(jù)源節(jié)點發(fā)送的重發(fā)數(shù)據(jù)中的分組情況存儲狀態(tài)信息,源節(jié)點在將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點之前,還包括:根據(jù)接收數(shù)據(jù)的時間間隔或數(shù)據(jù)大小對接收到的數(shù)據(jù)進(jìn)行分組編號,得到每個數(shù)據(jù)對應(yīng)的分組標(biāo)識。另外,為了使下游節(jié)點能夠很好地區(qū)分接收的數(shù)據(jù)來自于源節(jié)點發(fā)送的重發(fā)數(shù)據(jù)的哪個分組,源節(jié)點將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點之后,還包括:將流入的數(shù)據(jù)對應(yīng)的分組標(biāo)識添加到信號包中,將攜帶有分組標(biāo)識的信號包發(fā)送至下游節(jié)點。具體地,源節(jié)點在每發(fā)完一組數(shù)據(jù)之后,向下游節(jié)點發(fā)送一個攜帶該組數(shù)據(jù)的分組標(biāo)識的信號包。因此,當(dāng)下游節(jié)點接收到該信號包后,即可根據(jù)該信號包中攜帶的分組標(biāo)識獲得上一段時間接收的重發(fā)數(shù)據(jù)的分組標(biāo)識。另外,本發(fā)明實施例對源節(jié)點將流入的數(shù)據(jù)對應(yīng)的分組標(biāo)識添加到信號包中的方式以及將攜帶有分組標(biāo)識的信號包發(fā)送至下游節(jié)點的方式不作具體限定。
[0227]關(guān)于源節(jié)點根據(jù)接收數(shù)據(jù)的時間間隔或數(shù)據(jù)大小對接收到的數(shù)據(jù)進(jìn)行分組編號的具體實現(xiàn)方法,本發(fā)明實施例不作具體限定。具體實施時,當(dāng)源節(jié)點根據(jù)時間間隔來為接收的數(shù)據(jù)進(jìn)行分組編號時,可以設(shè)置一個固定時間間隔,并將每個固定時間間隔內(nèi)接收的數(shù)據(jù)分為一組。例如,源節(jié)點可以設(shè)置1min(分鐘)為一個固定時間間隔。在接收數(shù)據(jù)時,將前1min接收的數(shù)據(jù)分為第一組,將1min至20min接收的數(shù)據(jù)分為第二組等等。當(dāng)源節(jié)點根據(jù)數(shù)據(jù)大小來為接收的數(shù)據(jù)進(jìn)行分組編號時,可以在接收數(shù)據(jù)之前,設(shè)置每組數(shù)據(jù)包含的數(shù)據(jù)的大小,例如,可以設(shè)置每組數(shù)據(jù)包含10個數(shù)據(jù)。因此,在接收數(shù)據(jù)時,可以對接收的每個數(shù)據(jù)進(jìn)行編號,并將編號為ι-?ο的數(shù)據(jù)分為第一組,以此類推。例如,可以將接收的前100個數(shù)據(jù)分別編號為1-100,然后將編號為1-10的數(shù)據(jù)分為第一組,將編號為11-20的數(shù)據(jù)分為第二組等等。當(dāng)然,源節(jié)點還可以采用其它方法對接收的數(shù)據(jù)進(jìn)行分組編號,本發(fā)明實施例對此不作具體限定。
[0228]603:工作節(jié)點接收上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù)。
[0229]當(dāng)源節(jié)點發(fā)送重發(fā)數(shù)據(jù)后,工作節(jié)點接收上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù)。關(guān)于工作節(jié)點接收上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù)的方式,本發(fā)明實施例不作具體限定。另外,當(dāng)源節(jié)點在發(fā)送重發(fā)數(shù)據(jù)時,對發(fā)送 的重發(fā)數(shù)據(jù)進(jìn)行分組標(biāo)識,并在發(fā)完每組數(shù)據(jù)之后,發(fā)送了攜帶該組數(shù)據(jù)的分組標(biāo)識的信號包,則工作節(jié)點在接收源節(jié)點發(fā)送的重發(fā)數(shù)據(jù)之后,也將接收源節(jié)點發(fā)送的信號包。
[0230]需要說明的是,如果該工作節(jié)點為源節(jié)點之下的第一級節(jié)點,則該工作節(jié)點的上游節(jié)點即為源節(jié)點;如果該工作節(jié)點為源節(jié)點之下的第二級節(jié)點或第二級以后的其它級節(jié)點,則該上游節(jié)點為該網(wǎng)絡(luò)拓?fù)渎酚杀碇性摴ぷ鞴?jié)點的上一級工作節(jié)點。
[0231]604:工作節(jié)點根據(jù)失效節(jié)點的節(jié)點信息確定是否與失效節(jié)點相關(guān),如果與失效節(jié)點相關(guān),則執(zhí)行步驟605 ;如果與失效節(jié)點不相關(guān),則執(zhí)行步驟607。
[0232]由于本發(fā)明實施例提供的方法支持當(dāng)該分布式流處理系統(tǒng)中出現(xiàn)失效節(jié)點后,與失效節(jié)點相關(guān)的工作節(jié)點需要重新處理源節(jié)點發(fā)送的重發(fā)數(shù)據(jù),而與失效節(jié)點不相關(guān)的工作節(jié)點則不需要處理源節(jié)點發(fā)送的重發(fā)數(shù)據(jù)。因此,工作節(jié)點接收上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù)后,需要根據(jù)失效節(jié)點的節(jié)點信息確定是否與失效節(jié)點相關(guān)。
[0233]具體地,在分布式流處理系統(tǒng)中,當(dāng)失效節(jié)點為工作節(jié)點的一級或多級下游節(jié)點時,則工作節(jié)點確定失效節(jié)點和自己相關(guān),否則,工作節(jié)點確定失效節(jié)點和自己不相關(guān)。其中,工作節(jié)點根據(jù)失效節(jié)點的節(jié)點信息確定是否與失效節(jié)點相關(guān)的方式可以有很多種,具體實施時,包括但不限于采用如下方式:
[0234]根據(jù)失效節(jié)點的節(jié)點信息查詢預(yù)先存儲的節(jié)點關(guān)聯(lián)表,根據(jù)查詢結(jié)果確定是否與失效節(jié)點相關(guān)。其中,節(jié)點關(guān)聯(lián)表中記錄了工作節(jié)點與分布式流處理系統(tǒng)中的其它各個節(jié)點的節(jié)點信息及對應(yīng)的相關(guān)度。為了便于對節(jié)點關(guān)聯(lián)表進(jìn)行解釋說明,結(jié)合圖3所示的流處理網(wǎng)絡(luò)拓?fù)渎酚杀韥磉M(jìn)行說明。在圖3中,編號為I的節(jié)點為源節(jié)點,節(jié)點2-6為其它節(jié)點。假設(shè)工作節(jié)點為節(jié)點2,則根據(jù)圖3獲得的工作節(jié)點與該分布式流處理系統(tǒng)中的其它各個節(jié)點的節(jié)點關(guān)聯(lián)表如表一所示。在表一中,相關(guān)度為O表示該節(jié)點與工作節(jié)點不相關(guān),相關(guān)度為I表示失效節(jié)點和工作節(jié)點相關(guān),N/A表示工作節(jié)點與節(jié)點編號對應(yīng)的節(jié)點無拓?fù)潢P(guān)系。
[0235]表一
[0236]
【權(quán)利要求】
1.一種分布式流處理系統(tǒng)的容錯方法,其特征在于,所述方法包括: 獲取分布式流處理系統(tǒng)中的失效節(jié)點的節(jié)點信息,并接收上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù),所述重發(fā)數(shù)據(jù)由源節(jié)點始發(fā),所述上游節(jié)點為所述源節(jié)點或上游工作節(jié)點; 根據(jù)所述失效節(jié)點的節(jié)點信息確定是否與所述失效節(jié)點相關(guān); 如果與所述失效節(jié)點相關(guān),則處理接收到的重發(fā)數(shù)據(jù),并發(fā)送至下游節(jié)點。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取所述分布式流處理系統(tǒng)中失效節(jié)點的節(jié)點信息,包括: 接收集中管理實體發(fā)送的失效節(jié)點的節(jié)點信息,所述集中管理實體用于監(jiān)控所述分布式流處理系統(tǒng)中的各個節(jié)點的工作狀況。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述失效節(jié)點的節(jié)點信息確定是否與所述失效節(jié)點相關(guān),包括: 根據(jù)所述失效節(jié)點的節(jié)點信息查詢預(yù)先存儲的節(jié)點關(guān)聯(lián)表,所述節(jié)點關(guān)聯(lián)表中記錄了所述分布式流處理系統(tǒng)中的各個節(jié)點信息及對應(yīng)的相關(guān)度; 根據(jù)查詢結(jié)果確定是否與所述失效節(jié)點相關(guān)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述處理接收到的重發(fā)數(shù)據(jù),包括: 獲取預(yù)先存儲的狀態(tài)信息,所述預(yù)先存儲的狀態(tài)信息至少包括當(dāng)前的節(jié)點狀態(tài)信息及后續(xù)處理數(shù)據(jù)所需的數(shù)據(jù)結(jié)果信息; 根據(jù)所述預(yù)先存儲的狀態(tài)信息處理接收到的重發(fā)數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)所述預(yù)先存儲的狀態(tài)信息處理接收到的重發(fā)數(shù)據(jù)之后,還包括: 接收所述上游節(jié)點發(fā)送的信號包,所述信號包中攜帶有分組標(biāo)識,所述分組標(biāo)識為源節(jié)點對流入的數(shù)據(jù)進(jìn)行分組編號后添加到所述信號包中的; 根據(jù)當(dāng)前接收到的信號包中攜帶的分組標(biāo)識確定是否需要存儲狀態(tài)信息; 如果需要存儲狀態(tài)信息,則根據(jù)所述重發(fā)數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述根據(jù)當(dāng)前接收到的信號包中攜帶的分組標(biāo)識確定是否需要存儲狀態(tài)信息,包括: 獲取預(yù)先存儲的分組標(biāo)識,并確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的信號包中攜帶的分組標(biāo)識; 判斷當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致; 如果當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致,則確定需要存儲狀態(tài)信息。
7.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù)中攜帶有對應(yīng)的分組標(biāo)識,所述分組標(biāo)識為源節(jié)點對所述重發(fā)數(shù)據(jù)進(jìn)行分組編號后添加到所述重發(fā)數(shù)據(jù)中的; 所述根據(jù)所述預(yù)先存儲的狀態(tài)信息處理接收到的重發(fā)數(shù)據(jù)之后,還包括: 根據(jù)所述重發(fā)數(shù)據(jù)中攜帶的分組標(biāo)識確定是否需要存儲狀態(tài)信息; 如果需要存儲狀態(tài)信息,則根據(jù)所述重發(fā)數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述根據(jù)所述重發(fā)數(shù)據(jù)中攜帶的分組標(biāo)識確定是否需要存儲狀態(tài)息,包括: 獲取預(yù)先存儲的分組標(biāo)識,并確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的數(shù)據(jù)中攜帶的分組標(biāo)識; 判斷所述重發(fā)數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致; 如果所述重發(fā)數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致,則確定需要存儲狀態(tài)信息。
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述失效節(jié)點的節(jié)點信息確定是否與所述失效節(jié)點相關(guān)之后,還包括: 如果與所述失效節(jié)點不相關(guān),則對接收到的重發(fā)數(shù)據(jù)不做處理。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述對接收到的重發(fā)數(shù)據(jù)不做處理之后,還包括: 接收所述上游節(jié)點發(fā)送的其它數(shù)據(jù),所述其它數(shù)據(jù)中攜帶有對應(yīng)的分組標(biāo)識,所述分組標(biāo)識為源節(jié)點對所述其它數(shù)據(jù)進(jìn)行分組編號后添加到所述其它數(shù)據(jù)中的; 獲取預(yù)先存儲的分組標(biāo)識,并確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的數(shù)據(jù)中攜帶的分組標(biāo)識; 判斷所述其它數(shù)據(jù)中 攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致; 如果所述其它數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致,則對所述其它數(shù)據(jù)進(jìn)行處理。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,所述對所述其它數(shù)據(jù)進(jìn)行處理之后,還包括: 獲取預(yù)先存儲的分組標(biāo)識,并確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的數(shù)據(jù)中攜帶的分組標(biāo)識; 判斷所述其它數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致; 如果所述其它數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致,則確定需要存儲狀態(tài)信息,并根據(jù)所述后續(xù)數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
12.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述對接收到的重發(fā)數(shù)據(jù)不做處理之后,還包括: 接收所述上游節(jié)點發(fā)送的信號包,所述信號包中攜帶有分組標(biāo)識,所述分組標(biāo)識為源節(jié)點對流入的數(shù)據(jù)進(jìn)行分組編號后添加到所述信號包中的; 獲取預(yù)先存儲的分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的信號包中攜帶的分組標(biāo)識; 判斷當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識是否一致;如果當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識一致,則對所述上游節(jié)點發(fā)送的后續(xù)數(shù)據(jù)進(jìn)行處理。
13.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述對所述上游節(jié)點發(fā)送的后續(xù)數(shù)據(jù)進(jìn)行處理之后,還包括:獲取預(yù)先存儲的分組標(biāo)識,并確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的信號包中攜帶的分組標(biāo)識; 判斷當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致; 如果當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致,則確定需要存儲狀態(tài)信息,并根據(jù)接收當(dāng)前接收的信號包之前接收的其它數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
14.一種分布式流處理系統(tǒng)的容錯方法,其特征在于,所述方法包括: 獲取分布式流處理系統(tǒng)中的失效節(jié)點的節(jié)點信息; 根據(jù)所述失效節(jié)點的節(jié)點信息獲取緩存的數(shù)據(jù),并將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點,由所述下游節(jié)點根據(jù)所述下游節(jié)點與所述失效節(jié)點是否相關(guān)來確定是否處理所述重發(fā)數(shù)據(jù)。
15.根據(jù)權(quán)利要求14所述的方法,其特征在于,所述獲取分布式流處理系統(tǒng)中的失效節(jié)點的節(jié)點信息,包括: 接收集中管理實體發(fā)送的失效節(jié)點的節(jié)點信息,所述集中管理實體用于監(jiān)控所述分布式流處理系統(tǒng)中的各個 節(jié)點的工作狀況。
16.根據(jù)權(quán)利要求14所述的方法,其特征在于,所述將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點之后,還包括: 將流入的數(shù)據(jù)對應(yīng)的分組標(biāo)識添加到信號包中,將攜帶有分組標(biāo)識的信號包發(fā)送至下游節(jié)點。
17.根據(jù)權(quán)利要求14所述的方法,其特征在于,所述將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點,包括: 將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù),并將所述重發(fā)數(shù)據(jù)對應(yīng)的分組標(biāo)識添加到所述重發(fā)數(shù)據(jù)中,將攜帶有分組標(biāo)識的重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點。
18.根據(jù)權(quán)利要求16或17所述的方法,其特征在于,所述將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點之前,還包括: 根據(jù)接收數(shù)據(jù)的時間間隔或數(shù)據(jù)大小對接收到的數(shù)據(jù)進(jìn)行分組編號,得到每個數(shù)據(jù)對應(yīng)的分組標(biāo)識。
19.一種工作節(jié)點,其特征在于,所述工作節(jié)點包括: 第一獲取模塊,用于獲取分布式流處理系統(tǒng)中的失效節(jié)點的節(jié)點信息; 第一接收模塊,用于接收上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù),所述重發(fā)數(shù)據(jù)由源節(jié)點始發(fā),所述上游節(jié)點為所述源節(jié)點或上游工作節(jié)點; 第一確定模塊,用于根據(jù)所述失效節(jié)點的節(jié)點信息確定是否與所述失效節(jié)點相關(guān); 第一處理模塊,用于當(dāng)與所述失效節(jié)點相關(guān)時,處理接收到的重發(fā)數(shù)據(jù),并發(fā)送至下游節(jié)點。
20.根據(jù)權(quán)利要求19所述的工作節(jié)點,其特征在于,所述第一獲取模塊,用于接收集中管理實體發(fā)送的失效節(jié)點的節(jié)點信息,所述集中管理實體用于監(jiān)控所述分布式流處理系統(tǒng)中的各個節(jié)點的工作狀況。
21.根據(jù)權(quán)利要求19所述的工作節(jié)點,其特征在于,所述第一確定模塊,包括:查詢單元,用于根據(jù)所述失效節(jié)點的節(jié)點信息查詢預(yù)先存儲的節(jié)點關(guān)聯(lián)表,所述節(jié)點關(guān)聯(lián)表中記錄了所述分布式流處理系統(tǒng)中的各個節(jié)點信息及對應(yīng)的相關(guān)度; 確定單元,用于根據(jù)查詢結(jié)果確定是否與所述失效節(jié)點相關(guān)。
22.根據(jù)權(quán)利要求19所述的工作節(jié)點,其特征在于,所述第一處理模塊,包括: 獲取單元,用于獲取預(yù)先存儲的狀態(tài)信息,所述預(yù)先存儲的狀態(tài)信息至少包括當(dāng)前的節(jié)點狀態(tài)信息及后續(xù)處理數(shù)據(jù)所需的數(shù)據(jù)結(jié)果信息; 處理單元,用于根據(jù)所述預(yù)先存儲的狀態(tài)信息處理接收到的重發(fā)數(shù)據(jù)。
23.根據(jù)權(quán)利要求22所述的工作節(jié)點,其特征在于,所述工作節(jié)點,還包括: 第二接收模塊,用于接收所述上游節(jié)點發(fā)送的信號包,所述信號包中攜帶有分組標(biāo)識,所述分組標(biāo)識為源節(jié)點對流入的數(shù)據(jù)進(jìn)行分組編號后添加到所述信號包中的; 第二確定模塊,用于根據(jù)當(dāng)前接收到的信號包中攜帶的分組標(biāo)識確定是否需要存儲狀態(tài)息; 第一存儲模塊,用于當(dāng)需要存儲狀態(tài)信息時,根據(jù)所述重發(fā)數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
24.根據(jù)權(quán)利要求23所述的工作節(jié)點,其特征在于,所述第二確定模塊,包括: 獲取單元,用于獲取預(yù)先存儲的分組標(biāo)識; 第一確定單元,用于確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的信號包中攜帶的分組標(biāo)識; 判斷單元,用于判斷當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致; 第二確定單元,用于當(dāng)當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致時,確定需要存儲狀態(tài)信息。
25.根據(jù)權(quán)利要求22所述的工作節(jié)點,其特征在于,所述工作節(jié)點,還包括: 第三確定模塊,用于當(dāng)上游節(jié)點發(fā)送的重發(fā)數(shù)據(jù)中攜帶有對應(yīng)的分組標(biāo)識時,根據(jù)所述重發(fā)數(shù)據(jù)中攜帶的分組標(biāo)識確定是否需要存儲狀態(tài)信息,所述分組標(biāo)識為源節(jié)點對所述重發(fā)數(shù)據(jù)進(jìn)行分組編號后添加到所述重發(fā)數(shù)據(jù)中的; 第二存儲模塊,用于當(dāng)需要存儲狀態(tài)信息時,根據(jù)所述重發(fā)數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
26.根據(jù)權(quán)利要求25所述的工作節(jié)點,其特征在于,所述第三確定模塊,包括: 獲取單元,用于獲取預(yù)先存儲的分組標(biāo)識; 第一確定單元,用于確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的數(shù)據(jù)中攜帶的分組標(biāo)識; 判斷單元,用于判斷所述重發(fā)數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致; 第二確定單元,用于當(dāng)所述重發(fā)數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致時,確定需要存儲狀態(tài)信息。
27.根據(jù)權(quán)利要求19所述的工作節(jié)點,其特征在于,所述工作節(jié)點,還包括: 第四確定模塊,用于當(dāng)確定與所述失效節(jié)點不相關(guān)時,對接收到的重發(fā)數(shù)據(jù)不做處理。
28.根據(jù)權(quán)利要求27所述的工作節(jié)點,其特征在于,所述工作節(jié)點,還包括:第三接收模塊,用于接收所述上游節(jié)點發(fā)送的其它數(shù)據(jù),所述其它數(shù)據(jù)中攜帶有對應(yīng)的分組標(biāo)識,所述分組標(biāo)識為源節(jié)點對所述其它數(shù)據(jù)進(jìn)行分組編號后添加到所述其它數(shù)據(jù)中的; 第二獲取模塊,用于獲取預(yù)先存儲的分組標(biāo)識; 第五確定模塊,用于確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的數(shù)據(jù)中攜帶的分組標(biāo)識; 第一判斷模塊,用于判斷所述其它數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致; 第二處理模塊,用于當(dāng)所述其它數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致時,對所述其它數(shù)據(jù)進(jìn)行處理。
29.根據(jù)權(quán)利要求28所述的工作節(jié)點,其特征在于,所述工作節(jié)點,還包括: 第三獲取模塊,用于獲取預(yù)先存儲的分組標(biāo)識; 第六確定模塊,用于確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的數(shù)據(jù)中攜帶的分組標(biāo)識; 第二判斷模塊,用于判斷所述其它數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致; 第七確定模塊,用于 當(dāng)所述其它數(shù)據(jù)中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致時,確定需要存儲狀態(tài)信息; 第三存儲模塊,用于根據(jù)所述其它數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
30.根據(jù)權(quán)利要求27所述的工作節(jié)點,其特征在于,所述工作節(jié)點,還包括: 第四接收模塊,用于接收所述上游節(jié)點發(fā)送的信號包,所述信號包中攜帶有分組標(biāo)識,所述分組標(biāo)識為源節(jié)點對流入的數(shù)據(jù)進(jìn)行分組編號后添加到所述信號包中的; 第四獲取模塊,用于獲取預(yù)先存儲的分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的信號包中攜帶的分組標(biāo)識; 第三判斷模塊,用于判斷當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識是否一致; 第三處理模塊,用于當(dāng)當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識一致時,對所述上游節(jié)點發(fā)送的后續(xù)數(shù)據(jù)進(jìn)行處理。
31.根據(jù)權(quán)利要求30所述的工作節(jié)點,其特征在于,所述工作節(jié)點,還包括: 第五獲取模塊,用于獲取預(yù)先存儲的分組標(biāo)識; 第八確定模塊,用于確定所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識,所述預(yù)先存儲的分組標(biāo)識為之前接收到的信號包中攜帶的分組標(biāo)識; 第四判斷模塊,用于判斷當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識是否一致; 第九確定模塊,用于當(dāng)當(dāng)前接收到的信號包中攜帶的分組標(biāo)識與所述預(yù)先存儲的分組標(biāo)識對應(yīng)的預(yù)設(shè)分組標(biāo)識不一致時,確定需要存儲狀態(tài)信息; 第四存儲模塊,用于根據(jù)接收當(dāng)前接收的信號包之前接收的其它數(shù)據(jù)的處理結(jié)果存儲狀態(tài)信息。
32.—種源節(jié)點,其特征在于,所述源節(jié)點包括:第一獲取模塊,用于獲取分布式流處理系統(tǒng)中的失效節(jié)點的節(jié)點信息; 第二獲取模塊,用于根據(jù)所述失效節(jié)點的節(jié)點信息獲取緩存的數(shù)據(jù); 發(fā)送模塊,用于將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點,由所述下游節(jié)點根據(jù)所述下游節(jié)點與所述失效節(jié)點是否相關(guān)來確定是否處理所述重發(fā)數(shù)據(jù)。
33.根據(jù)權(quán)利要求32所述的源節(jié)點,其特征在于,所述第一獲取模塊,用于接收集中管理實體發(fā)送的失效節(jié)點的節(jié)點信息,所述集中管理實體用于監(jiān)控所述分布式流處理系統(tǒng)中的各個節(jié)點的工作狀況。
34.根據(jù)權(quán)利要求32所述的源節(jié)點,其特征在于,所述發(fā)送模塊,包括: 第一添加單元,用于將流入的數(shù)據(jù)對應(yīng)的分組標(biāo)識添加到信號包中; 第一發(fā)送單元,用于將攜帶有分組標(biāo)識的信號包發(fā)送至下游節(jié)點。
35.根據(jù)權(quán)利要求32所述的源節(jié)點,其特征在于,所述發(fā)送模塊,包括: 第二添加單元,用于將緩存的數(shù)據(jù)作為重發(fā)數(shù)據(jù),并將所述重發(fā)數(shù)據(jù)對應(yīng)的分組標(biāo)識添加到所述重發(fā)數(shù)據(jù)中; 第二發(fā)送單元,用于將攜帶有分組標(biāo)識的重發(fā)數(shù)據(jù)發(fā)送至下游節(jié)點。
36.根據(jù)權(quán)利要求34或35所述的源節(jié)點,其特征在于,所述源節(jié)點,還包括: 分組編號模塊,用于根據(jù)接收數(shù)據(jù)的時間間隔或數(shù)據(jù)大小對接收到的數(shù)據(jù)進(jìn)行分組編號,得到每個數(shù)據(jù)對應(yīng)的分組標(biāo)識。
37.一種分布式流處理系統(tǒng)的容錯系統(tǒng),其特征在于,所述系統(tǒng)包括多個工作節(jié)點和源節(jié)點; 其中,所述多個工作節(jié)點中的每個工作節(jié)點如權(quán)利要求19至31中任一項權(quán)利要求所述的工作節(jié)點; 所述源節(jié)點如權(quán)利要求32至36中任一項權(quán)利要求所述的源節(jié)點。
【文檔編號】H04L12/24GK104038364SQ201310754620
【公開日】2014年9月10日 申請日期:2013年12月31日 優(yōu)先權(quán)日:2013年12月31日
【發(fā)明者】潘璐伽, 何誠 申請人:華為技術(shù)有限公司