一種消息處理可靠性追蹤方法及裝置的制造方法
【技術領域】
[0001]本發明涉及數據處理領域,具體地,涉及一種消息處理可靠性追蹤方法及裝置。
【背景技術】
[0002]隨著大數據業務的快速增長,Storm應運而生,用于實現大規模數據處理的實時計算。Storm為分布式實時計算提供了一組通用原語,可被用于“流處理”之中,實時處理消息并更新數據庫。
[0003]在Storm消息處理模型中,消息源spout作為主節點將消息tuple發送至其下游的消息處理者bo 11,bo 11作為工作節點,不斷的接收并處理來自上游節點的消息。通常,根據bolt在整個消息處理模型中所處的位置,bolt將來自上游節點的消息處理完畢后,可視情況將消息發送至其下游節點,或者,在不存在下游節點時bolt不發送消息,以此表示消息處理結束。
[0004]為了保證Storm消息處理的可靠性,需要對spout發出的消息進行追蹤,只有在確定該消息被下游所有相關bolt處理完畢后,才認為spout發出的消息被完全處理。
[0005]進行消息處理可靠性追蹤時,spout為每個tuple維護一個校驗值ack_val,且初始設置為0 ;同時,上游節點會為其下游節點生成對應的隨機數V,連同消息一起發送至下游節點,如此,便可通過異或操作以及監測ack-val更新值的方式,進行消息處理可靠性追蹤。正常情況下,spout發出的消息被完全處理時,ack-val被更新還原為0,若ack_val被提前更新為0,則說明追蹤過程中出現沖突。
[0006]通常,ack-val和V可被設置為int型或者long型,為了盡量減小追蹤過程出現沖突的概率,一般將ack-val和V設置為long型。結合圖1所示消息樹,追蹤過程可體現如下,其中,ack-val被初始設置為ack-val:: 0000。
[0007]1.spout為boltl生成隨機數Vi= 1001,將V丨和消息AA發送至boltl。spout利用ack-valJP Vi得到異或結果1,并將異或結果1發送至協調者,由協調者利用異或結果1和 ack-val^做異或,將 ack-val 丨更新為 ack-val 2= 1001。
[0008]2.boltl接收到V#,為bolt2生成隨機數V 2= 1000,為bolt3生成隨機數V 3 =0100。boltl利用VpVjP V 3得到異或結果2,并在消息處理完畢后,將異或結果2發送至協調者,由協調者利用異或結果2和ack-val;^?異或,將ack-val 2更新為ack-val 3= 1100。
[0009]3.基于相同原理,bolt2接收V2并完成消息處理后,協調者通過異或處理將ack_val3更新為ack-val 4= 0100 ;bolt3接收V 3并完成消息處理后,協調者通過異或處理將ack_val4更新為ack-val 5= 0000。至此,spout監控到ack-val被更新還原為0000,可判定spout發出的消息被完全處理。
[0010]上述通過占用64位空間的long型表示ack-val和V的方案,雖可在一定程度上減小沖突出現的概率,但卻增大了網絡傳輸字節數,可能會影響Storm消息處理效率。
【發明內容】
[0011]本發明的消息處理可靠性追蹤方法及裝置,提供一種新的追蹤方案,有助于降低追蹤過程中的網絡傳輸字節數。
[0012]第一方面,本發明實施例提供了一種消息處理可靠性追蹤方法,所述方法包括:
[0013]協調者獲得第一位移信息,所述第一位移信息包括第一位移方向和第一位移數,所述第一位移信息用于表示上游節點向下游節點發送消息;
[0014]所述協調者獲得第二位移信息,所述第二位移信息包括第二位移方向和第二位移數,所述第二位移信息用于表示所述下游節點將所述上游節點發送的消息處理完畢,所述第一位移方向與所述第二位移方向相反;
[0015]所述協調者判斷所述第一位移數與所述第二位移數是否相匹配,如果相匹配,所述協調者判定消息源發出的消息被完全處理。
[0016]在第一方面的第一種可能的實現方式中,所述協調者維護校驗值,所述協調者判定所述第一位移數與所述第二位移數相匹配的方式為:
[0017]所述協調者按照所述第一位移數和所述第二位移數的指示,對所述校驗值進行移位操作;
[0018]所述協調者判斷移位操作后是否能得到所述校驗值的初始值,如果是,所述協調者判定所述第一位移數與所述第二位移數相匹配。
[0019]結合第一方面的第一種可能的實現方式,在第二種可能的實現方式中,所述校驗值占用1字節。
[0020]結合第一方面的第一種可能的實現方式,在第三種可能的實現方式中,所述校驗值的初始值設置為1,所述第一位移方向為向左平移,所述第二位移方向為向右平移。
[0021]結合第一方面或第一方面的第一種至第三種中的任一種可能的實現方式,在第四種可能的實現方式中,Storm采用集中式架構,包括一個所述協調者。
[0022]結合第一方面或第一方面的第一種至第三種中的任一種可能的實現方式,在第五種可能的實現方式中,Storm采用分布式架構,包括一個主協調者和至少兩個從協調者;則
[0023]所述協調者獲得第一位移信息,包括:所述主協調者獲得所述至少兩個從協調者發送的第一位移信息;
[0024]所述協調者獲得第二位移信息,包括:所述主協調者獲得所述至少兩個從協調者發送的第二位移信息。
[0025]第二方面,本發明實施例提供了一種消息處理可靠性追蹤裝置,所述裝置屬于協調者,所述裝置包括:
[0026]第一獲得單元,用于獲得第一位移信息,所述第一位移信息包括第一位移方向和第一位移數,所述第一位移信息用于表示上游節點向下游節點發送消息;
[0027]第二獲得單元,用于獲得第二位移信息,所述第二位移信息包括第二位移方向和第二位移數,所述第二位移信息用于表示所述下游節點將所述上游節點發送的消息處理完畢,所述第一位移方向與所述第二位移方向相反;
[0028]判斷單元,用于判斷所述第一位移數與所述第二位移數是否相匹配,如果相匹配,則判定消息源發出的消息被完全處理。
[0029]在第二方面的第一種可能的實現方式中,所述協調者維護校驗值,
[0030]所述判斷單元,具體用于按照所述第一位移數和所述第二位移數的指示,對所述校驗值進行移位操作;判斷移位操作后是否能得到所述校驗值的初始值,如果是,則判定所述第一位移數與所述第二位移數相匹配。
[0031]結合第二方面或第二方面的第一種可能的實現方式,在第二種可能的實現方式中,Storm采用集中式架構,包括一個所述協調者。
[0032]結合第二方面或第二方面的第一種可能的實現方式,在第三種可能的實現方式中,Storm采用分布式架構,包括一個主協調者和至少兩個從協調者,所述裝置屬于所述主協調者;
[0033]所述第一獲得單元,具體用于獲得所述至少兩個從協調者發送的第一位移信息;
[0034]所述第二獲得單元,具體用于獲得所述至少兩個從協調者發送的第二位移信息。
[0035]本發明技術方案中,上游節點每向下游節點發布一次消息,則可執行一次移位操作加以記錄,同理,下游節點將上游節點發送的消息處理完畢后,亦可執行一次反方向的移位操作進行記錄。通過移位操作的方式,可以準確可靠的追蹤消息發布和消息處理情況,還有助于降低追蹤過程中網絡傳輸字節數,保證Storm的消息處理性能。
[0036]本發明的其他特征和優點將在隨后的【具體實施方式】部分予以詳細說明。
【附圖說明】
[0037]附圖是用來提供對本發明的進一步理解,并且構成說明書的一部分,與下面的【具體實施方式】一起用于解釋本發明,但并不構成對本發明的限制。在附圖中:
[0038]圖1是一種消息樹的示意圖;
[0039]圖2是本發明消息處理可靠性追蹤方法的流程圖;
[0040]圖3是本發明消息處理可靠性追蹤裝置的結構示意圖。
【具體實施方式】
[0041]以下結合附圖對本發明的【具體實施方式】進行詳細說明。應當理解