在消息中傳送元組的制作方法
【專利說明】
【背景技術(shù)】
[0001]從一個或多個數(shù)據(jù)源接收的數(shù)據(jù)可以作為流傳送。在一些應(yīng)用中,實時處理數(shù)據(jù)流可能是合期望的。實時處理數(shù)據(jù)可以涉及在運行中(on-the-fly)處理數(shù)據(jù)而并不首先將數(shù)據(jù)存儲到數(shù)據(jù)儲存庫中。
[0002]在其中要處理相對大量的數(shù)據(jù)的場景中,可以提供具有多個處理節(jié)點的分布式系統(tǒng)以并行執(zhí)行數(shù)據(jù)流的不同部分的處理。
【附圖說明】
[0003]關(guān)于以下附圖描述一些實施例:
圖1是依照一些實現(xiàn)方式的包括分布式流分析系統(tǒng)中的處理節(jié)點的示例布置的框圖; 圖2是根據(jù)一些實現(xiàn)方式的發(fā)布者(publisher)過程的流程圖;
圖3是根據(jù)一些實現(xiàn)方式的訂閱者(subscriber)過程的流程圖;以及圖4是根據(jù)一些實現(xiàn)方式的示例處理節(jié)點的框圖。
【具體實施方式】
[0004]數(shù)據(jù)流分析系統(tǒng)可以包括用以執(zhí)行數(shù)據(jù)流的處理的處理節(jié)點的布置。數(shù)據(jù)流的不同部分可以跨用于并行處理的處理節(jié)點分布,這增強總體系統(tǒng)吞吐量。處理節(jié)點還可以被布置在多個級中,其中具有一個或多個處理節(jié)點的第一級能夠在數(shù)據(jù)流上執(zhí)行第一操作??梢詫碜缘谝患壍慕Y(jié)果提供給一個或多個處理節(jié)點的下一級,其能夠在來自第一級的結(jié)果上執(zhí)行第二操作。在一些情況中,在數(shù)據(jù)流分析系統(tǒng)中可以存在多于兩個級。
[0005]處理節(jié)點可以是通過互連基礎(chǔ)設(shè)施鏈接在一起的計算機或處理器。每一個處理節(jié)點可以執(zhí)行在由處理節(jié)點所接收的數(shù)據(jù)上應(yīng)用相應(yīng)操作的流操作器(operator)。在處理節(jié)點中執(zhí)行的流操作器可以在所接收的數(shù)據(jù)上應(yīng)用某種類型的變換,或者可以基于所接收的數(shù)據(jù)計算結(jié)果數(shù)據(jù)。
[0006]圖1示出在多個級102、104、106、108和110中提供的處理節(jié)點的示例布置。在圖1的示例中,每一級具有多個處理節(jié)點(表示為圓圈)。在每一個處理節(jié)點內(nèi),字母(圖1中所示的P、A、B、D和C)表示在處理節(jié)點中執(zhí)行的流操作器的對應(yīng)實例。流操作器可以是用戶定義的操作器或預(yù)定義(預(yù)編程)的操作器。用戶定義的操作器是可以由用戶創(chuàng)建并且添加到分布式流分析系統(tǒng)的操作器。
[0007]數(shù)據(jù)源100發(fā)射可以提供給第一級102的數(shù)據(jù)??梢源嬖诟鞣N不同類型的數(shù)據(jù)源100。例如,數(shù)據(jù)源100可以是傳感器、移動設(shè)備、社交聯(lián)網(wǎng)數(shù)據(jù)源、企業(yè)(諸如商行、教育機構(gòu)、政府機關(guān)等)中的數(shù)據(jù)源或者任何其它數(shù)據(jù)源。盡管在圖1中描繪了僅一個數(shù)據(jù)源100,但是應(yīng)注意的是,在其它示例中可以存在多個數(shù)據(jù)源。
[0008]將來自第一級104的輸出數(shù)據(jù)提供給下游級104,其進而將數(shù)據(jù)輸出到下游級106和108。級106進一步將數(shù)據(jù)輸出到下游級110。流操作器(由圖1的示例中的P、A、B、D和C表示)的布置具有圖結(jié)構(gòu)拓?fù)洌驗閿?shù)據(jù)流動沿可以由圖表示的路徑從節(jié)點到節(jié)點地發(fā)生。在圖結(jié)構(gòu)拓?fù)渲校恳粋€流操作器可以具有在相應(yīng)處理節(jié)點中執(zhí)行的多個物理實例。在圖1的示例中,P操作器具有八個物理實例,A操作器具有六個物理實例,B操作器和C操作器均具有四個物理實例,并且D操作器具有兩個物理實例。流操作器實例可以以分布式的方式將消息傳遞到彼此。除執(zhí)行并行處理之外,分布式串流(streaming)分析系統(tǒng)還是彈性的,因為每一個流操作器的物理實例數(shù)目可以基于需求而變化。
[0009]在特定示例中,P操作器可以執(zhí)行用于將來自數(shù)據(jù)源100的事件數(shù)據(jù)解析成元組的解析任務(wù)(以下進一步描述)。A操作器可以計算特定屬性的聚合(例如平均),而B操作器可以在特定時間窗口之上計算移動平均。C操作器和D操作器可以提供其它操作。盡管提供了流操作器的特定示例,但是應(yīng)注意的是,在其它實現(xiàn)方式中,可以使用不同的流操作器。而且,雖然圖1的分布式流分析系統(tǒng)具有五級,但是不同的分布式流分析系統(tǒng)可以包括不同數(shù)目的級。
[0010]在之后的討論中,對發(fā)布者操作器和訂閱者操作器做出參考。發(fā)布者操作器是產(chǎn)生要被發(fā)送以供訂閱數(shù)據(jù)的一個或多個訂閱者操作器消費(consumpt1n)的數(shù)據(jù)的流操作器。訂閱者操作器是從另一流操作器接收數(shù)據(jù)的流操作器。在圖1的示例中,在級102與104之間,級102中的處理節(jié)點包括發(fā)布者操作器,而級104中的處理節(jié)點包括訂閱者操作器。類似地,在級104與106之間,級104中的處理節(jié)點包括發(fā)布者操作器,并且級106中的處理節(jié)點包括訂閱者操作器。
[0011]此外,分布式流分析系統(tǒng)還可以包括協(xié)調(diào)器服務(wù)器112 (或多個協(xié)調(diào)器服務(wù)器)。協(xié)調(diào)器服務(wù)器112負(fù)責(zé)向相應(yīng)處理節(jié)點分發(fā)邏輯(諸如流操作器實例)。而且,協(xié)調(diào)器服務(wù)器112能夠向處理節(jié)點指派附加任務(wù)。此外,協(xié)調(diào)器服務(wù)器112能夠監(jiān)視在處理節(jié)點上執(zhí)行的作業(yè)(job),并且能夠監(jiān)視故障。
[0012]節(jié)點間通信(從一個處理節(jié)點到另一處理節(jié)點的數(shù)據(jù)通信)可能是比節(jié)點內(nèi)通信(處理節(jié)點內(nèi)的數(shù)據(jù)通信)更加代價高的(在等待時間方面)。為了在傳送數(shù)據(jù)流時支持具有減少的等待時間的節(jié)點間通信,一種可能的解決方案是部署相對昂貴且高帶寬互連基礎(chǔ)設(shè)施,其具有允許處理節(jié)點之間的及時數(shù)據(jù)通信的足夠通信資源。這樣的解決方案可能導(dǎo)致對于企業(yè)而言增加的總體成本。
[0013]為了在不必須增加互連基礎(chǔ)設(shè)施投資的情況下改善節(jié)點間通信性能,根據(jù)一些實現(xiàn)方式的技術(shù)或機制可以減少與處理節(jié)點之間的數(shù)據(jù)通信相關(guān)聯(lián)的消息傳遞開銷的量??梢栽谔幚砉?jié)點之間的消息中承載數(shù)據(jù)。消息可以具有標(biāo)頭(header)和有效載荷(payload),其中有效載荷承載實際數(shù)據(jù)而標(biāo)頭包含控制信息(例如與通信協(xié)議有關(guān)的信息和用于路由消息的地址信息)。大量消息一般導(dǎo)致增加的消息傳遞開銷,因為必須傳送更多標(biāo)頭信息,其消耗互連基礎(chǔ)設(shè)施的通信資源。
[0014]為了解決前述問題,當(dāng)執(zhí)行節(jié)點間通信時,可以將多個數(shù)據(jù)片段(piece)組合(也稱為“批處理(batch)”)到用于從一個通信節(jié)點傳送到另一通信節(jié)點的消息中。相比于傳送包含相應(yīng)數(shù)據(jù)片段的多個消息,傳送包含經(jīng)組合的數(shù)據(jù)片段的一個消息與減少的消息傳遞開銷相關(guān)聯(lián)。
[0015]被批處理的多個數(shù)據(jù)片段是數(shù)據(jù)的元組。元組包含針對屬性的相應(yīng)集合的值。例如,對于與企業(yè)的雇員有關(guān)的數(shù)據(jù),元組的屬性可以包括雇員標(biāo)識符、雇員姓名、部門標(biāo)識符(以標(biāo)識雇員工作在的部門)等等。給定元組可以包含針對相應(yīng)雇員的雇員標(biāo)識符、雇員姓名和部門標(biāo)識符的值。
[0016]在一些示例中,要由分布式串流分析系統(tǒng)處理的數(shù)據(jù)流可以是元組的無界限(unbounded)序列。數(shù)據(jù)流可以是可以由分布式串流分析系統(tǒng)實時處理的元組的連續(xù)實時數(shù)據(jù)流動(其中邏輯操作器實例能夠在將元組存儲到持久性數(shù)據(jù)儲存庫中之前在運行中處理數(shù)據(jù)流的元組)。
[0017]在具有圖1的圖結(jié)構(gòu)拓?fù)涞姆植际酱鞣治鱿到y(tǒng)中,在用于并行處理的每一個級內(nèi)跨流操作器實例劃分(partit1n)數(shù)據(jù)流的元組。例如,在級104中,A操作器實例在由P操作器實例輸出的數(shù)據(jù)的相應(yīng)不同劃分上并行操作。
[0018]在一些實現(xiàn)方式中,數(shù)據(jù)的劃分包括哈希(hash)劃分。哈希劃分涉及基于元組中的給定鍵碼(key)的對應(yīng)值計算哈希,諸如通過在給定鍵碼的值上應(yīng)用哈希函數(shù)。哈希標(biāo)識相應(yīng)劃分;換言之,第一哈希值(或哈希值的第一范圍)對應(yīng)于第一劃分,第二哈希值(或哈希值的第二范圍)對應(yīng)于第二劃分,等等。因此,例如,在級104中,第一劃分的數(shù)據(jù)元組將由第一 A操作器實例處理,第二劃分的數(shù)據(jù)元組將由第二 A操作器實例處理,等等。
[0019]為了實現(xiàn)高效操作,給定劃分的數(shù)據(jù)應(yīng)當(dāng)被一致地路由到特定級內(nèi)的對應(yīng)流操作器實例,使得對應(yīng)流操作器實例可以處理數(shù)據(jù)并且可能地高速緩存給定劃分的數(shù)據(jù)。如果給定劃分的數(shù)據(jù)被路由到不同的流操作器實例,則將不會實現(xiàn)數(shù)據(jù)分組語義,這可能導(dǎo)致由多于一個處理節(jié)點處理給定數(shù)據(jù)片段,這導(dǎo)致低效率。
[0020]依照一些實現(xiàn)方式,可以在處理節(jié)點向訂閱者操作器實例發(fā)送元組的批之前由處理節(jié)點中的發(fā)布者操作器實例執(zhí)行數(shù)據(jù)流的元組的按組批處理。元組的按組批處理考慮在分布式流分析系統(tǒng)中執(zhí)行的元組的劃分。在一些實現(xiàn)方式中,被批處理在一起的元組是屬于相同組的那些。元組的分組基于鍵碼,其可以包括元組的一個或多個屬性。通過在鍵碼上執(zhí)行的操作的分組標(biāo)識共享相同鍵碼值的元組的組。例如,如果元組包括屬性x、Y和Ζ,并且鍵碼包括X,則通過在鍵碼X上的操作的分組產(chǎn)生元組的組,其中元組的每一個組共享屬性X的共同值。在不同的示例中,鍵碼可以包括多個屬性,諸如X和Y。
[0021]根據(jù)一些實現(xiàn)方式的按組批處理將組中的多個元組組合到可以從發(fā)布者操作器實例發(fā)送到訂閱者操作器實例的單個消息(在本文中稱為“批消息”)中。將被批處理的多個元組置于批消息的有效載荷中。
[0022]批消息可以包括以下部分:包含相應(yīng)鍵碼的一個或多個屬性的鍵碼部分,以及包括分組的元組的有效載荷。批消息的有效載荷中的分組的元組可以在包括包含已經(jīng)被批處理成批消息的元組的相應(yīng)元組的多個行的關(guān)系(或表)中提供。在一些示例中,關(guān)系可以是嵌套有序關(guān)系,其中關(guān)系中的元組以在數(shù)據(jù)流中接收到元組的次序而被串行化和打包到消息中,并且其中關(guān)系在以下意義上被嵌套:關(guān)系取決于包含在批消息的鍵碼部分中的鍵碼。
[0023]應(yīng)注意的是,包含經(jīng)組合的元組的關(guān)系不包括在批消息的鍵碼部分中提供的一個或多個鍵碼屬性。因此,鍵碼的值僅存儲在批消息的鍵碼部分中一次,并且在關(guān)系中不重復(fù)。這樣的按組批處理提供數(shù)據(jù)壓縮,因為可以消除鍵碼值的重復(fù),這進一步改進互連基礎(chǔ)設(shè)施使用效率。
[0024]批消息的鍵碼部分使鍵碼的一個或多個屬性暴露,使得訂閱者操作器實例可以執(zhí)行批消息的有效載荷中的經(jīng)批處理的元組的適當(dāng)處理。接收批消息的訂閱者操作器實例對批消息的有效載荷中的嵌套有序關(guān)系中的元組進行拆包和去串行化(deserialize)。
[0025]如以上所指出的,通過將數(shù)據(jù)流的元組的批合并到單個批消息的有效載荷中,可以實現(xiàn)處理節(jié)點之間的互連基礎(chǔ)設(shè)施的更加高效的使用,因為可以減少消息傳遞開銷的量。此外,通過執(zhí)行根據(jù)一些實現(xiàn)方式的按組批處理,基于適當(dāng)鍵碼的數(shù)據(jù)組可以被引導(dǎo)到正確的訂閱者操作器實例,使得訂閱者操作器實例可以處理數(shù)據(jù)組而不必將元組重定向到其它處理節(jié)點上的其它訂閱者操作器實例,這會浪費通信帶寬。
[0026]在一些實現(xiàn)方式中,協(xié)調(diào)器服務(wù)器112可以向發(fā)布者操作器提供指示每一個訂閱者操作器感興趣(或已經(jīng)訂閱)的元組的相應(yīng)組的指示。可替換地,訂閱者操作器實例可以向發(fā)布者操作器實例提供訂閱者操作器實例感興趣(或已經(jīng)訂閱)的元組的組的指示。
[002