使用分布式緩存的數(shù)據(jù)流處理的制作方法
【專利說明】
【背景技術(shù)】
[0001]計(jì)算機(jī)可以具有能夠并行地或以其它方式與其它操作同時(shí)地處理數(shù)據(jù)和/或指令的處理器,或者是計(jì)算機(jī)網(wǎng)絡(luò)的一部分。并行處理能力可以基于并行化的程度,如在數(shù)據(jù)級(jí)、指令級(jí)和/或任務(wù)級(jí)上處理??梢栽谟?jì)算獨(dú)立于其它計(jì)算時(shí)并行處理該計(jì)算,或可以在計(jì)算依賴于另一計(jì)算時(shí)順序地處理該計(jì)算。例如,指令級(jí)并行處理可以確定彼此獨(dú)立的指令,并且指定并行處理那些指令。
【附圖說明】
[0002]圖1示出可以在其中實(shí)現(xiàn)用于處理數(shù)據(jù)流的各示例的示例環(huán)境。
[0003]圖2和圖3是示出用于處理數(shù)據(jù)流的示例方法的流程圖。
[0004]圖4示出用于處理數(shù)據(jù)流的示例操作。
[0005]圖5和圖6是示出用于處理數(shù)據(jù)流的示例系統(tǒng)的框圖。
【具體實(shí)施方式】
[0006]介紹:在下面的描述和圖中,描述用于處理數(shù)據(jù)流的系統(tǒng)和/或方法的一些示例實(shí)現(xiàn)方式。數(shù)據(jù)流可以包括經(jīng)數(shù)字編碼的信號(hào)的序列。該數(shù)據(jù)流可以是傳輸?shù)囊徊糠帧㈦娮游募囊徊糠只蛞唤M傳輸和/或文件的一部分。例如,數(shù)據(jù)流可以是數(shù)據(jù)包的序列或包含字符串或字符的文檔,如脫氧核糖核酸(“DNA”)序列。
[0007]流處理可以對來自數(shù)據(jù)流的一組數(shù)據(jù)的一部分實(shí)施一系列操作。流處理通??梢蕴幚眄樞蚰J椒治觯⑶铱赡軐εc該數(shù)據(jù)流關(guān)聯(lián)的順序和/或歷史敏感。具有這樣敏感性的流處理可能難以并行化。
[0008]流處理的滑動(dòng)窗口技術(shù)可以將數(shù)據(jù)流的該組數(shù)據(jù)的一部分指定為窗口,并且可以隨著該窗口的邊界沿?cái)?shù)據(jù)流移動(dòng),對數(shù)據(jù)的該窗口實(shí)施操作。窗口可以沿?cái)?shù)據(jù)流“滑動(dòng)”,以覆蓋數(shù)據(jù)流的第二組邊界,并且由此覆蓋第二組數(shù)據(jù)。流處理可以對數(shù)據(jù)流的每個(gè)窗口應(yīng)用分析操作?;诨瑒?dòng)窗口技術(shù)的許多流處理應(yīng)用可以使用順序模式分析,并且可以實(shí)施歷史敏感的分析操作。例如,對數(shù)據(jù)的窗口的操作可以依據(jù)前一窗口的操作的結(jié)果。
[0009]并行化的一個(gè)形式可以使用拆分-合并機(jī)制。在拆分-合并機(jī)制下,拆分操作可以將內(nèi)容分配給并行運(yùn)行的多個(gè)計(jì)算操作,并且合并操作可以合并結(jié)果。窗口通??梢杂啥鄠€(gè)數(shù)據(jù)區(qū)塊或數(shù)據(jù)流的數(shù)據(jù)的多個(gè)部分構(gòu)成。順序窗口可以具有重疊的數(shù)據(jù)區(qū)塊??梢詫γ總€(gè)窗口實(shí)施順序模式分析。對順序模式分析應(yīng)用拆分-合并機(jī)制,拆分操作可以向每個(gè)任務(wù)提供窗口的拷貝,并且因此,由于順序窗口可能具有重疊的數(shù)據(jù)區(qū)塊,所以可能生成數(shù)據(jù)區(qū)塊的多個(gè)拷貝。當(dāng)處理具有重疊內(nèi)容的窗口時(shí),窗口生成器可能因?yàn)楦咄掏铝慷^載。
[0010]但是,通過使用分布式緩存平臺(tái),處理系統(tǒng)可以拆分?jǐn)?shù)據(jù),將數(shù)據(jù)放到通??稍L問的介質(zhì)中,對來自介質(zhì)的數(shù)據(jù)進(jìn)行操作,以及合并任務(wù)結(jié)果。分布式緩存平臺(tái)可以對分布式緩存提供統(tǒng)一訪問協(xié)議,并且可以允許并行化操作來訪問分布式緩存??梢酝ㄟ^經(jīng)由分布式緩存平臺(tái)管理對數(shù)據(jù)流(更具體地,數(shù)據(jù)區(qū)塊)的訪問以及管理對操作結(jié)果進(jìn)行合并的順序,并行實(shí)施對每個(gè)滑動(dòng)窗口實(shí)施的單獨(dú)任務(wù)。分布式緩存平臺(tái)可以通過使用分布式緩存的引用而不是針對每個(gè)任務(wù)生成數(shù)據(jù)區(qū)塊的拷貝,允許從拆分操作上卸載(或完全移除)拷貝操作。由于拆分操作通??梢苑指畈⒖截惔翱跀?shù)據(jù),所以可以通過卸載拷貝操作以及并行實(shí)施操作或任務(wù),改善流處理速度和/或系統(tǒng)性能。
[0011]下面的描述分成多個(gè)部分。標(biāo)為“環(huán)境”的第一部分描述可以在其中實(shí)現(xiàn)用于處理數(shù)據(jù)流的各示例的計(jì)算機(jī)和網(wǎng)絡(luò)環(huán)境的示例。標(biāo)為“操作”的第二部分描述實(shí)現(xiàn)用于處理數(shù)據(jù)流的各示例的示例方法。標(biāo)為“組件”的第三部分描述用于實(shí)現(xiàn)各示例的物理組件和邏輯組件的示例。
[0012]環(huán)境:圖1示出可以在其中實(shí)現(xiàn)各示例的示例環(huán)境100。環(huán)境100被示出為包括流處理系統(tǒng)102。下面結(jié)合圖5和圖6描述的流處理系統(tǒng)102通??梢员硎颈慌渲脼樘幚頂?shù)據(jù)流的硬件和程序的任意組合。流處理系統(tǒng)102可以集成到服務(wù)器設(shè)備104或客戶端設(shè)備108中。流處理系統(tǒng)102可以分布在服務(wù)器設(shè)備104、客戶端設(shè)備108或服務(wù)器設(shè)備104和客戶端設(shè)備108的組合上。
[0013]在圖1的示例中,客戶端設(shè)備108可以訪問服務(wù)器設(shè)備104。服務(wù)器設(shè)備104通??梢员硎颈慌渲脼閷目蛻舳嗽O(shè)備108接收的網(wǎng)絡(luò)請求做出響應(yīng)的任何計(jì)算設(shè)備。服務(wù)器設(shè)備104可以包括網(wǎng)絡(luò)服務(wù)器、應(yīng)用服務(wù)器或數(shù)據(jù)服務(wù)器??蛻舳嗽O(shè)備108通常可以表示被配置有用于傳遞這樣的請求以及接收和/或處理對應(yīng)響應(yīng)的瀏覽器或其它應(yīng)用的任何計(jì)算設(shè)備。鏈路106通??梢员硎窘?jīng)由電信鏈路、紅外鏈路、射頻鏈路或提供電子通信的系統(tǒng)的任何其它連接器的線纜、無線連接、光纖連接或遠(yuǎn)程連接中的一個(gè)或任意組合。鏈路106可以至少部分地包括內(nèi)聯(lián)網(wǎng)、互聯(lián)網(wǎng)或二者的組合。鏈路106還可以包括中間代理、路由器、交換機(jī)、負(fù)載均衡器等等。
[0014]操作:圖2和圖3是示出用于處理數(shù)據(jù)流的示例方法的流程圖。在介紹圖2和圖3時(shí),可以參照圖4、圖5和/或圖6的元件和圖,以提供上下文示例。但是,實(shí)現(xiàn)方式不限于那些示例。與圖4-圖6關(guān)聯(lián)的描述包括適用于參照圖3和圖4介紹的方法的細(xì)節(jié)。
[0015]在圖2的框202中,可以基于第一窗口密鑰從分布式緩存或多個(gè)存儲(chǔ)介質(zhì)獲取第一窗口。第一窗口可以是數(shù)據(jù)流的一組數(shù)據(jù)的一部分。數(shù)據(jù)流可以通過參照圖3-圖6進(jìn)一步介紹的拆分操作分成多個(gè)區(qū)塊。第一窗口可以包括數(shù)據(jù)流的多個(gè)區(qū)塊的第一集合。第一窗口可以通過第一窗口密鑰來識(shí)別。第一窗口密鑰可以是標(biāo)識(shí)符,該標(biāo)識(shí)符能夠與分布式緩存平臺(tái)一起使用以從多個(gè)存儲(chǔ)介質(zhì)獲取數(shù)據(jù)。分布式緩存平臺(tái)可以是用于訪問多個(gè)存儲(chǔ)介質(zhì)的協(xié)議或其它方法,仿佛多個(gè)存儲(chǔ)介質(zhì)是單個(gè)存儲(chǔ)介質(zhì)。例如,分布式緩存平臺(tái)可以使用窗口密鑰來訪問包含在多個(gè)存儲(chǔ)介質(zhì)中的一組數(shù)據(jù)。在本文中,多個(gè)存儲(chǔ)介質(zhì)可以在本文中被表示以及以其它方式被描述為分布式緩存。參照圖3-圖6更詳細(xì)地介紹窗口、區(qū)塊、分布式緩存以及分布式緩存平臺(tái)。
[0016]可以基于第二窗口密鑰,從分布式緩存中獲取第二窗口或其它窗口。第二窗口可以包括多個(gè)區(qū)塊的第二集合。多個(gè)區(qū)塊的第一集合以及多個(gè)區(qū)塊的第二集合可以包括重疊的或相同的區(qū)塊。例如在圖2中,第一窗口可以包括標(biāo)為和“C”的區(qū)塊,并且第二窗口可以包括標(biāo)為“B”、“C"和“D”的區(qū)塊。
[0017]在框204中,可以在處理器資源(如圖6的處理器資源622)上并行執(zhí)行第一任務(wù)和第二任務(wù)。第一任務(wù)可以基于第一窗口產(chǎn)生第一結(jié)果,第二任務(wù)可以基于第二窗口產(chǎn)生第二結(jié)果。第一任務(wù)和第二任務(wù)可以分別對第一窗口和第二窗口實(shí)施分析操作。
[0018]在框206中,可以基于第一任務(wù)密鑰和第二任務(wù)密鑰之間的關(guān)系而將第一結(jié)果和第二結(jié)果合并成流結(jié)果。第一任務(wù)密鑰可以與第一任務(wù)關(guān)聯(lián),第二任務(wù)密鑰可以與第二任務(wù)關(guān)聯(lián)??梢酝ㄟ^組合、聚合、增加、計(jì)算、概括、分析或以其它方式組織數(shù)據(jù)來合并結(jié)果??梢詫为?dú)的結(jié)果和/或合并的流結(jié)果進(jìn)行分析和概括。參照圖3-圖6更詳細(xì)地介紹任務(wù)密鑰和合并操作。
[0019]參照圖3,框202、框204和框206的描述可以分別應(yīng)用于框308、框310和框316。
[0020]在圖3的框302中,可以將數(shù)據(jù)流的多個(gè)區(qū)塊存儲(chǔ)在分布式緩存中。在拆分操作下,數(shù)據(jù)流可以被分為多個(gè)區(qū)塊,以與窗口關(guān)聯(lián)。多個(gè)區(qū)塊中的每個(gè)可以具有基于數(shù)據(jù)特性的大小。數(shù)據(jù)特性可以是時(shí)間長度、帶寬容量和延遲閾值中的至少一個(gè)。數(shù)據(jù)特性可以包括可用于確定區(qū)塊大小的數(shù)據(jù)的任何其它特性。
[0021 ] 在框304中,可以將第一窗口密鑰指派為表示第一窗口??梢詫⒌谝淮翱诿荑€發(fā)送給任務(wù),以在實(shí)施分析操作時(shí)用作輸入。第一窗口密鑰可以置于將窗口密鑰與窗口關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)中。拆分操作可以將每個(gè)區(qū)塊加標(biāo)點(diǎn)或其它標(biāo)記為與第一窗口關(guān)聯(lián),并且可以基于該關(guān)聯(lián)而指派窗口密鑰??梢詫⒃摯翱诿荑€和其它窗口密鑰指派為分別表示其它窗口。
[0022]在框306中,可以基于第一窗口在數(shù)據(jù)流中的位置來指派第一任務(wù)密鑰??梢曰趯?shù)據(jù)流實(shí)施的任務(wù)的操作的順序來指派第一任務(wù)密鑰,第一任務(wù)密鑰可以基于第一窗口在數(shù)據(jù)流中的位置,或者第一任務(wù)密鑰可以被指派用于維護(hù)分析操作中的歷史數(shù)據(jù)和/或結(jié)果的合并??梢躁P(guān)于被實(shí)施的任務(wù)和/或操作的窗口的量而指派其它任務(wù)密鑰??梢曰谄渌翱谠跀?shù)據(jù)流中的位置來指派其它任務(wù)密鑰。
[0023]在框308中,可以基于第一窗口密鑰,從分布式緩存獲取第一窗口。可以基于相應(yīng)的窗口密鑰來獲取其它窗口??梢曰跀?shù)據(jù)