国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      操作者狀態(tài)檢查點的制作方法

      文檔序號:6495454閱讀:486來源:國知局
      操作者狀態(tài)檢查點的制作方法
      【專利摘要】可以在第一操作者處接收檢查點標記。該第一操作者可通過將該檢查點標記發(fā)送到第二操作者并將表示該第一操作者的狀態(tài)的狀態(tài)檢查點信息發(fā)送到檢查點寫入者來處理該檢查點標記。該檢查點信息可被用來還原一個或多個操作者的狀態(tài)。例如,在系統(tǒng)故障、關閉等之后,可以在第一操作者的檢查點信息輸入隊列處從讀取者單元接收檢查點信息??墒褂迷摍z查點信息來還原第一操作者的狀態(tài)。對第一操作者的數(shù)據(jù)輸入隊列中的信息的處理可以在使用該檢查點信息來還原該第一操作者的狀態(tài)時被掛起。具有第一操作者的系統(tǒng)中的其它操作者可以按與第一操作者相同的方式設置檢查點和還原。
      【專利說明】操作者狀態(tài)檢查點
      [0001]背景
      [0002]許多數(shù)據(jù)流系統(tǒng)具有將其狀態(tài)保存在易失性存儲器中的各個處理單元(操作者),該易失性存儲器在故障或計劃關閉時可能丟失信息。操作者可以是能夠在系統(tǒng)中彼此傳遞數(shù)據(jù)項的各種不同種類的操作者中的任一種(例如,程序、程序組件、虛擬機、物理機等)。數(shù)據(jù)項是將由操作者處理的數(shù)據(jù)單元,但數(shù)據(jù)項可以是各種不同形式中的任一種。例如,此處討論的數(shù)據(jù)項可以是事件。一個或多個輸入模塊或組件可以向數(shù)據(jù)流系統(tǒng)提供輸入,并且一個或多個輸出模塊或組件(宿)可以從數(shù)據(jù)流系統(tǒng)接收輸出。一些數(shù)據(jù)流系統(tǒng)處理連續(xù)查詢。在這類查詢的情況下,狀態(tài)可表示已經在長時間段內處理的數(shù)據(jù)項的結果。
      [0003]概述
      [0004]一些數(shù)據(jù)流系統(tǒng)中的操作者狀態(tài)丟失可具有嚴重后果,尤其是在該狀態(tài)表示在延長的時間段內收集到并處理的信息的情況下。以下描述的工具和技術涉及保存檢查點信息并使用這類檢查點信息來還原操作者狀態(tài)。如此處所使用的,關于操作者的檢查點信息表不該操作者在某一時刻的狀態(tài)。然而,檢查點信息可以按各種不同的方式中的任一種來表示狀態(tài)。例如,檢查點信息可包括來自操作者的數(shù)據(jù)結構和/或將由操作者處理和/或已經由操作者處理的數(shù)據(jù)項的表示。這些表示能夠以各種方式做出,諸如數(shù)據(jù)項和/或數(shù)據(jù)結構的副本、對數(shù)據(jù)項和/或數(shù)據(jù)結構的已存儲版本的引用、當前數(shù)據(jù)項和/或數(shù)據(jù)結構和過去數(shù)據(jù)項和/或數(shù)據(jù)結構之間的差別(增量)等。檢查點信息可被保存到持久(非易失性)存儲或以某種其它方式進行保存,以保持檢查點信息安全。例如,檢查點信息可被保存到與從其獲取檢查點信息的系統(tǒng)分開的系統(tǒng)上的易失性存儲器。
      [0005]在一個實施例中,各種工具和技術可包括在第一操作者處接收檢查點標記。檢查點標記是請求操作者向檢查點寫入者發(fā)送狀態(tài)檢查點信息的數(shù)據(jù)單元。檢查點標記可以是各種不同的形式中的任一種。第一操作者可通過將檢查點標記發(fā)送到第二操作者并將表示該第一操作者的狀態(tài)的狀態(tài)檢查點信息發(fā)送到檢查點寫入者來處理該檢查點標記。
      [0006]在各種工具和技術的另一實施例中,可以在操作者的檢查點信息輸入隊列處從讀取者接收檢查點信息??墒褂迷摍z查點信息來還原操作者的狀態(tài)。對操作者的數(shù)據(jù)輸入隊列中的信息的處理可以在使用檢查點信息來還原操作者的狀態(tài)時被掛起,這可將操作者狀態(tài)帶回到從該操作者獲取該檢查點信息時的操作者狀態(tài)。
      [0007]提供本概述是為了以簡化的形式介紹一些概念。這些概念將在以下詳細描述中進一步描述。本概述并不旨在標識所要求保護主題的關鍵特征或必要特征,也不旨在用于限制所要求保護主題的范圍。類似地,本發(fā)明不限于解決在背景、詳細描述、或附圖中討論的專用技術、工具、環(huán)境、缺點、或優(yōu)點的實現(xiàn)。
      [0008]附圖簡述
      [0009]圖1是其中可實現(xiàn)所描述的各實施例中的一個或多個實施例的合適的計算環(huán)境的框圖。
      [0010]圖2是操作者狀態(tài)檢查點環(huán)境的示意圖。
      [0011]圖3是操作者狀態(tài)檢查點技術的流程圖。[0012]圖4是另一種操作者狀態(tài)檢查點技術的流程圖。
      [0013]圖5是又一種操作者狀態(tài)檢查點技術的流程圖。
      [0014]詳細描述
      [0015]本文描述的各實施例涉及用于改進操作者狀態(tài)的維護和恢復的技術和工具。這樣的改進可源于分開或組合地使用各種技術和工具。
      [0016]這樣的技術和工具可包括數(shù)據(jù)流系統(tǒng)中的用于請求各個操作者為其當前主(易失性)存儲器狀態(tài)設置檢查點的協(xié)議。該協(xié)議可被設計成使得操作者能夠彼此同時為其狀態(tài)設置檢查點。這些工具和技術還可包括用于在系統(tǒng)故障后從最后的完整檢查點還原操作者狀態(tài)的協(xié)議。這可將操作者的狀態(tài)帶回到為其狀態(tài)設置檢查點時的狀態(tài)。
      [0017]因此,此處討論的工具和技術可限制系統(tǒng)故障或故意的系統(tǒng)關閉時的狀態(tài)信息的丟失。這可以用減少對系統(tǒng)的常規(guī)處理的影響的技術來完成。例如,彼此并行地在不同的操作者中執(zhí)行檢查點操作可減少為整個數(shù)據(jù)流系統(tǒng)完成檢查點的時間并減少設置檢查點對常規(guī)處理的影響。所附權利要求中定義的主題不必限于本文描述的益處。本發(fā)明的專用實現(xiàn)可提供本文描述的益處的全部、一些、或未提供本文描述的益處。盡管本文出于呈現(xiàn)的目的以專用的順序次序描述了用于各種技術的操作,但應理解除非要求專用的排序,否則這種描述方式涵蓋了操作順序上的重新安排。例如,在某些情況下,可以重新安排或并發(fā)執(zhí)行順序地描述的操作。此外,為了簡單起見,流程圖可能未示出可結合其他技術來使用專用技術的各種方式。
      [0018]在此描述的技術可被用于在此描述的一個或多個系統(tǒng)和/或用于一個或多個其他系統(tǒng)。例如,本文描述的各種過程可用硬件或軟件、或兩者的組合來實現(xiàn)。例如,諸如應用專用集成線路、可編程邏輯陣列以及其它硬件設備之類的專用硬件實現(xiàn)可被構造來實現(xiàn)在此描述的一個或多個技術中的至少一部分??砂ǜ鞣N實施例的裝置和系統(tǒng)的應用可廣泛地包括各種電子和計算機系統(tǒng)。可使用兩個或更多互連接的專用硬件模塊或具有可在模塊之間并通過模塊傳遞的相關控制和數(shù)據(jù)信號的設備、或作為應用指定集成線路的部分的設備來實現(xiàn)各技術。此外,在此描述的技術可通過由計算機系統(tǒng)執(zhí)行的軟件程序來實現(xiàn)。作為一個示例,實現(xiàn)可包括分布的處理、組件/對象分布的處理、以及平行處理。此外,可構造虛擬計算機系統(tǒng)處理來實現(xiàn)在此描述的技術或功能中的一個或多個。
      [0019]示例性計算環(huán)境
      [0020]圖1示出其中可實現(xiàn)所描述的各實施例中的一個或多個實施例的合適的計算環(huán)境(100 )的一般化示例。例如,一個或多個這樣的計算環(huán)境可被用作操作者、檢查點存儲或包括多個操作者的整個數(shù)據(jù)流系統(tǒng)。一般而言,可使用各種不同的通用或專用計算系統(tǒng)配置。適用于此處所描述的工具和技術的公知計算系統(tǒng)配置的示例包括,但不限于,服務器場和服務器群集、個人計算機、服務器計算機、手持式或膝上型設備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程消費電子產品、網(wǎng)絡PC、小型機、大型計算機、包括上述系統(tǒng)或設備中的任一個的分布式計算環(huán)境等。
      [0021]計算環(huán)境(100)不旨在對本發(fā)明的使用范圍或功能提出任何限制,因為本發(fā)明可以在完全不同的通用或專用計算環(huán)境中實現(xiàn)。
      [0022]參考圖1,計算環(huán)境(100)包括至少一個處理單元(I 10)和至少一個存儲器(120)。在圖1中,這一最基本的配置(130)被包括在虛線內。處理單元(110)執(zhí)行計算機可執(zhí)行指令,并且可以是真實或虛擬處理器。在多處理系統(tǒng)中,多個處理單元執(zhí)行計算機可執(zhí)行指令以提高處理能力。至少一個存儲器(120)可以是易失性存儲器(例如,寄存器、高速緩存、RAM)、非易失性存儲器(例如,ROM、EEPR0M、閃存)、或兩者的某種組合。該至少一個存儲器(120)存儲實現(xiàn)操作者狀態(tài)檢查點的軟件(180)。
      [0023]盡管為了清楚起見用線條示出了圖1的各框,但是,實際上,描繪各組件并不是那樣清楚,并且用比喻方法,圖1以及下文討論的其他附圖的線條更精確地將是灰色的和模糊的。例如,可以將諸如顯示設備等呈現(xiàn)組件認為是I/o組件。而且,處理器具有存儲器。發(fā)明人關于此點認識到,這是本領域的特性,并且重申,圖1的圖示只是例示可結合本發(fā)明的一個或多個實施例來使用的示例性計算設備。諸如“工作站”、“服務器”、“膝上型計算機”、“手持式設備”等分類之間沒有區(qū)別,它們全部都被認為是在圖1的范圍之內的并且被稱為“計算機”、“計算環(huán)境”、或“計算設備”。
      [0024]計算環(huán)境(100)可具有附加特征。在圖1中,計算環(huán)境(100)包括存儲(140)、一個或多個輸入設備(150)、一個或多個輸出設備(160)以及一個或多個通信連接(170)。諸如總線、控制器或網(wǎng)絡等互連機制(未示出)將計算環(huán)境(100)的各組件互連。通常,操作系統(tǒng)軟件(未示出)為在計算環(huán)境(100)中執(zhí)行的其它軟件提供操作環(huán)境,并協(xié)調計算環(huán)境(100)的各組件的活動。
      [0025]存儲(140)可以是可移動或不可移動的,并可包括諸如磁盤、磁帶或磁帶盒、CD-ROM、CD-RW、DVD之類的計算機可讀存儲介質,或者可用于儲存信息并可在計算環(huán)境(100)內訪問的任何其它介質。存儲(140)存儲用于軟件(180)的指令。
      [0026]輸入設備(150)可以是諸如鍵盤、鼠標、筆或跟蹤球等觸摸輸入設備;語音輸入設備;掃描設備;網(wǎng)絡適配器KD/DVD讀取者;或可向計算環(huán)境(100)提供輸入的另一設備。輸出設備(160)可以是顯示器、打印機、揚聲器、⑶/DVD刻錄機、網(wǎng)絡適配器、或從計算環(huán)境(100)提供輸出的另一設備。
      [0027]通信連接(170)允許通過通信介質與另一計算實體進行通信。因此,計算環(huán)境
      (100)可使用通往諸如個人計算機、服務器、路由器、網(wǎng)絡PC、對等設備或另一常見網(wǎng)絡節(jié)點等一個或多個遠程計算設備的邏輯連接而工作在聯(lián)網(wǎng)環(huán)境中。通信介質以已調制數(shù)據(jù)信號的形式傳達諸如數(shù)據(jù)或計算機可執(zhí)行指令或請求等信息。已調制數(shù)據(jù)信號是其一個或多個特征以在信號中編碼信息的方式設置或改變的信號。作為示例而非局限,通信介質包括以電、光、RF、紅外、聲學或其他載波實現(xiàn)的有線或無線技術。
      [0028]可在可以是存儲介質或通信介質的計算機可讀介質的一般上下文中描述這些工具和技術。計算機可讀存儲介質是能在計算環(huán)境內被訪問的任何可用存儲介質,但是術語計算機可讀存儲介質并不指傳播的信號本身。作為示例而非限制,結合計算環(huán)境(100),計算機可讀存儲介質包括存儲器(120 )、存儲(140 )、和以上的組合。
      [0029]這些工具和技術可在諸如程序模塊中所包括的、在目標真實或虛擬處理器上的計算環(huán)境中執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述。一般而言,程序模塊包括執(zhí)行專用任務或實現(xiàn)專用抽象數(shù)據(jù)類型的例程、程序、庫、對象、類、組件、數(shù)據(jù)結構等。程序模塊的功能可以如各實施例中所需的組合或在程序模塊之間分離。用于程序模塊的計算機可執(zhí)行指令可以在本地或分布式計算環(huán)境中執(zhí)行。在分布式計算環(huán)境中,程序模塊可以位于本地和遠程計算機存儲介質中。[0030]出于演示的目的,詳細描述使用了如“確定”、“選擇”、“調整”和“操作”等術語來描述計算環(huán)境中的計算機操作。這些以及其他類似術語是對計算機執(zhí)行的操作的高層抽象,并且不應混淆于人類執(zhí)行的動作,除非明確指出人類(諸如“用戶”)的動作執(zhí)行。對應于這些術語的實際的計算機操作取決于實現(xiàn)而不同。
      [0031]操作者狀態(tài)檢查點系統(tǒng)和環(huán)境
      [0032]以下討論參考圖2,圖2是結合其可實現(xiàn)所描述的各實施例中的一個或多個實施例的操作者狀態(tài)檢查點環(huán)境(200)的示意圖。
      [0033]A.數(shù)據(jù)流系統(tǒng)
      [0034]操作者檢查點環(huán)境(200)可包括包含操作者(220)的數(shù)據(jù)流系統(tǒng)(210)。數(shù)據(jù)從源
      (230)流動到數(shù)據(jù)流系統(tǒng)(210)。數(shù)據(jù)流系統(tǒng)(210)可包括多個操作者(220)。為了方便數(shù)據(jù)流動通過數(shù)據(jù)流系統(tǒng)(210),每一個操作者(220)都可包括至少一個數(shù)據(jù)輸入隊列(222)并且還可包括至少一個數(shù)據(jù)輸出隊列(未示出)。這些隊列可以按各種方式中的任一種來實現(xiàn),諸如用作對于一個操作者的輸入隊列和對于另一操作者的輸出隊列的操作者之間的單個隊列。操作者(220)各自可以對在其輸入隊列(222)處接收到的數(shù)據(jù)項(232)執(zhí)行一個或多個操作,并且可以將數(shù)據(jù)項輸出到一個或多個其它操作者(220 )和/或宿(240 )。來自整個數(shù)據(jù)流系統(tǒng)(210)的輸出可以從最終操作者(220)(或者在更復雜的配置中從多個最終操作者)發(fā)送到宿(240)。
      [0035]數(shù)據(jù)流系統(tǒng)(210)可以比圖2所示的更復雜。例如,操作者(220)可包括從多個操作者(220)接收輸入的多個輸入隊列(222)和/或向多個操作者(220)提供輸出的多個輸出隊列。另外,數(shù)據(jù)流系統(tǒng)(210)可以從多個源(230)接收輸入和/或向多個宿(240)提供輸出。
      [0036]B.檢查點生成
      [0037]當通過其數(shù)據(jù)輸入隊列(222)接收到某一數(shù)據(jù)時,每一個操作者(220)都可更新其內部狀態(tài)并且可生成可用作對下游的下一操作者(220)的輸入的輸出。檢查點標記(250)可以在用于數(shù)據(jù)流系統(tǒng)(210)的數(shù)據(jù)流的源(230)處入隊,以使得該檢查點標記能夠以類似于數(shù)據(jù)項(232)通過數(shù)據(jù)流系統(tǒng)(210)的流動的方式流動通過操作者(220)。例如,檢查點標記(250)可以響應于用戶輸入來入隊,或者響應于發(fā)生某一事件來自動入隊(例如,周期性地)。
      [0038]當操作者(220)接收到檢查點標記(250)時,操作者(220)可使得檢查點標記(250)入隊到其輸出隊列中,并且然后將表示該操作者自己的狀態(tài)的檢查點信息(260)入隊到單獨隊列。對于操作者(220)的這些單獨隊列的消費者可以是檢查點寫入者(270)。檢查點寫入者(270)可以是數(shù)據(jù)流系統(tǒng)(210)中的操作者。當檢查點寫入者(270)在其輸入隊列之一上接收到檢查點信息(260)時,檢查點寫入者可將該數(shù)據(jù)寫入到檢查點存儲(280)。例如,檢查點存儲(280)可包括用于數(shù)據(jù)流系統(tǒng)(210)的檢查點的日志文件,并且可根據(jù)先進先出技術或某一其它技術來將數(shù)據(jù)寫入到日志。
      [0039]由于數(shù)據(jù)流系統(tǒng)(210)的體系結構,不同的操作者(220)可以并行地處理檢查點標記(250)。例如,第一操作者(220)可接收到檢查點標記(250),將該檢查點標記(250)輸出到第二操作者,并且然后繼續(xù)匯編其檢查點信息(260)并將該檢查點信息發(fā)送到寫入者(270)。檢查點寫入者(270)可將檢查點信息(260)存儲在檢查點存儲中。當?shù)谝徊僮髡?220)仍然正在匯編其檢查點信息(260)時,第二操作者(220)可能已經開始匯編其自己的檢查點信息(260)。另外,當一個操作者(220)完成處理檢查點標記(250)時,它能夠繼續(xù)處理數(shù)據(jù)項(232),而不與其它操作者(220)或檢查點寫入者(270)同步。因此,即使其它操作者(220)尚未完成處理檢查點標記(250),并且即使檢查點寫入者(270)尚未將檢查點信息(260)寫入到檢查點存儲(280),操作者(220)也能夠繼續(xù)處理數(shù)據(jù)項(232)。因此,操作者(220)能夠彼此并行地或異步地且與檢查點寫入者(270)對檢查點信息(260)的寫入并行地或異步地處理檢查點標記(250)。
      [0040]當宿(240)接收到檢查點標記(250)時,宿(240)可發(fā)送通知檢查點寫入者該檢查點已完成的通知(285)。檢查點寫入者(270)可將該完成通知(285)存儲在檢查點存儲(280)中,作為指示該檢查點已完成的最后數(shù)據(jù)片段。然而,在某些情況下,宿(240)可以在操作者(220)已經發(fā)送所有檢查點信息(260)之前發(fā)送完成通知(285)。因此,用于整個數(shù)據(jù)流系統(tǒng)(210)的檢查點可被認為是不完整的,直到所有操作者(包括常規(guī)操作者(220)和宿(240))已聲明完成。
      [0041]以下討論實現(xiàn)為操作者狀態(tài)設置檢查點的一些不同方面。這些方面包括為正在設置檢查點的查詢劃分檢查點日志、用于具有多個數(shù)據(jù)項輸入隊列的操作者的檢查點以及包括數(shù)據(jù)項和/或操作者結構的檢查點信息。
      [0042]1.對于查詢的日志劃分
      [0043]在一個實現(xiàn)中,數(shù)據(jù)流系統(tǒng)(210)可以同時運行諸如多個連續(xù)查詢等多個查詢??梢栽诓煌瑫r間為這些不同查詢中的每一個的狀態(tài)單獨設置檢查點。例如,每一個查詢可根據(jù)不同的周期節(jié)律來設置檢查點(一個查詢可以每十分鐘設置檢查點,另一查詢可以每小時設置檢查點,等等)。查詢的檢查點可通過與將該查詢的數(shù)據(jù)輸入到數(shù)據(jù)流系統(tǒng)(210)相類似地將檢查點標記(250)輸入到數(shù)據(jù)流系統(tǒng)(210)中來啟動。因此,各查詢可以在任意且可能相對于彼此重疊的時間設置檢查點。
      [0044]如上所述,檢查點存儲(280)可包括檢查點信息(260)的日志。一個日志可用于存儲關于多個查詢的檢查點信息(260)。當在重疊時間期間在檢查點寫入者(270)處接收到關于多個查詢的檢查點信息(260)時,關于不同查詢的檢查點信息(260)可以在日志中交錯。由此,日志的范圍可包括在數(shù)據(jù)流系統(tǒng)(210)中運行的查詢的檢查點,但這些檢查點可以在不同的地方開始和結束,以使得關于不同查詢的檢查點信息(260)交錯且重疊。
      [0045]除了日志之外,檢查點存儲還可包括關于數(shù)據(jù)流系統(tǒng)(210)的管理者的元數(shù)據(jù)。該管理者元數(shù)據(jù)可指示日志中的可找到在數(shù)據(jù)流系統(tǒng)(210)中運行的每一個查詢的最近檢查點的位置。
      [0046]日志本身可被劃分成各部分。日志部分可以在第一查詢檢查點開始的地方開始,并且可以在完成檢查點的每一點處進一步劃分??紤]其中兩個查詢Ql和Q2的檢查點是重疊的示例。Ql的檢查點可以在Q2的檢查點之前開始,并且Ql的檢查點可以在Q2的檢查點之后結束。對應于Ql的日志單元可以在Ql開始的地方開始并且可以在Ql結束的地方結束(如由Ql的所存儲的完成通知(285)所指示的),而對應于Q2的日志單元可以在Ql開始的地方開始(因為在Q2開始的地方沒有劃分)并且可以在Q2結束的地方結束(如由Q2的所存儲的完成通知(285)所指示的)。管理者元數(shù)據(jù)可指示在日志中Ql的檢查點在哪里開始,Q2的檢查點在哪里結束以及Ql的檢查點在哪里結束。例如,如果Ql在位置I開始,Q2在位置2結束且Ql在位置3結束,則這些位置中的每一個都可由管理者元數(shù)據(jù)指示。因此,管理者元數(shù)據(jù)可指示Ql的最近檢查點可以在位置I和位置3之間找到。管理者元數(shù)據(jù)還可指示Q2的最近檢查點可以在位置I和位置2之間找到?;蛘?,該日志能夠以對應于各查詢的某種其它方式劃分,諸如在每一查詢的檢查點的開頭和末尾。
      [0047]每一個日志條目都可包括首部,該首部指示諸如日志條目對應于哪一個查詢以及條目中的檢查點信息(260)來自哪一個操作者(220)等信息。因此,日志文件的劃分可允許為不同查詢的檢查點標識日志區(qū)域。這可允許恢復關于單個查詢的檢查點信息(260),而不同樣恢復關于其它查詢的檢查點信息(260)。然而,檢查點寫入者(270)仍然能夠以諸如先進先出方式等順序方式將檢查點信息(260 )寫入到日志。
      [0048]2.用于具有多個數(shù)據(jù)項輸入隊列的操作者的檢查點
      [0049]如上所述,操作者(220)可包括多個輸入隊列,這些隊列各自可接收將對其進行操作的不同數(shù)據(jù)項。當這一操作者(220)在一個輸入隊列處接收到檢查點標記(250)時,該操作者(220)可停止處理在該輸入隊列處接收到的數(shù)據(jù)項。然而,該操作者(220)可以諸如通過在緩沖區(qū)中保存接收到的其它數(shù)據(jù)項(232)來保持跟蹤這些數(shù)據(jù)項(232)。操作者(220)可以對每一個輸入隊列這樣做,其中接收檢查點標記(250)直到每一個數(shù)據(jù)項輸入隊列都已經接收到檢查點標記(250)。操作者(220)然后可以為該狀態(tài)設置檢查點,將數(shù)據(jù)項
      (232)的內容包括在緩沖區(qū)中。操作者(220)可以就像緩沖區(qū)是對應的輸入隊列的延伸那樣處理每一個緩沖區(qū)中的這些數(shù)據(jù)項。操作者(220)可以等待處理緩沖區(qū)中的數(shù)據(jù)項(232)直到已經處理檢查點標記(250)并且已經在操作者(220)中繼續(xù)數(shù)據(jù)項處理之后。
      [0050]如果使用檢查點信息(260)來還原這一操作者(220)(以下更多地討論),則來自緩沖區(qū)的數(shù)據(jù)項(232)可變成輸入隊列的頭部,并且數(shù)據(jù)項處理可繼續(xù)。
      [0051]注意在某些情況下,可使用不同的過程。例如,在某些情況下(諸如在哪一個輸入隊列接下來要處理數(shù)據(jù)項是無關緊要的情況下),對數(shù)據(jù)項的處理可繼續(xù)直到所有數(shù)據(jù)項輸入隊列都已經接收到檢查點標記(250)。
      [0052]3.包括數(shù)據(jù)項和/或操作者結構的檢查點信息
      [0053]對于某些操作者(220 ),檢查點信息(260 )可包括由該操作者(220 )維護的數(shù)據(jù)結構的表示。在其它情況下,檢查點信息(260)或者可被保存為正在操作者(220)中進行處理的一組數(shù)據(jù)項(232)的表示。例如,如果操作者(220)比較數(shù)據(jù)項(232),則檢查點信息(260)可包括正在操作者(220)中進行比較的一組數(shù)據(jù)項(232)的表示。作為又一替換方案,檢查點信息(260)可包括數(shù)據(jù)項(232)的一個或多個表示以及由操作者(220)維護的數(shù)據(jù)結構的一個或多個表示。當正在還原時(參見下文對還原的更詳細的討論),如果檢查點信息(260)包括數(shù)據(jù)結構的表示,則這些數(shù)據(jù)結構可被還原至它們的所指示的狀態(tài)以便將操作者(220)帶到該操作者在開始數(shù)據(jù)項處理之前的設置檢查點的狀態(tài)。如果檢查點信息
      (260)包括一個或多個數(shù)據(jù)項(232),則這些數(shù)據(jù)項可由操作者(220)處理以便將該操作者
      (220)帶到它在處理其它數(shù)據(jù)項(232)之前的設置檢查點的狀態(tài)。
      [0054]從檢查點還原
      [0055]仍舊參考圖2,將討論從檢查點還原。這可以是在數(shù)據(jù)流系統(tǒng)(210)的故障之后或甚至在數(shù)據(jù)流系統(tǒng)(210)故意關閉之后完成。每一個操作者都可具有至少一個數(shù)據(jù)項輸入隊列(222)以及至少一個還原輸入隊列(290)。可使用還原輸入隊列(290)來還原操作者(220)的狀態(tài)。數(shù)據(jù)項輸入隊列(222)可以是用于數(shù)據(jù)處理(例如,對數(shù)據(jù)項(232)和檢查點標記(250)的處理)的常規(guī)隊列,如上所述。
      [0056]檢查點讀取者(295)可以諸如通過使用日志文件的首部和分區(qū)來從檢查點存儲(280)讀取最后的完整檢查點。檢查點讀取者(295)可將適當?shù)臋z查點信息(260)發(fā)送到每一個操作者(220)。每一個操作者(220)都可通過為其輸入隊列(222和290)確定優(yōu)先順序來進行響應。操作者可放棄處理來自數(shù)據(jù)項輸入隊列(222)的數(shù)據(jù)直到操作者(220)已經處理還原輸入隊列(290)中的所有數(shù)據(jù)。該優(yōu)先順序可導致操作者(220)的狀態(tài)在操作者(220)繼續(xù)常規(guī)處理之前在存儲器中重新建立(還原)。
      [0057]數(shù)據(jù)流系統(tǒng)(210)中的總數(shù)據(jù)流可立即繼續(xù)。每一個操作者(220)都可延遲常規(guī)處理直到該操作者(220 )的狀態(tài)使用來自檢查點讀取者(295 )的檢查點信息(260 )來還原。因此,數(shù)據(jù)流系統(tǒng)(210)的某些部分可以在其它部分仍舊在還原狀態(tài)的同時繼續(xù)處理。這可以在不在操作者(220)之間進行同步的情況下完成。每一個操作者(220)能夠自由地在該操作者(220)已經處理了它的還原輸入隊列(290)中的數(shù)據(jù)時繼續(xù)數(shù)據(jù)項處理。
      [0058]使用該還原技術,數(shù)據(jù)流系統(tǒng)(210)可回復到檢查點存儲(280)中的最新的完整檢查點。因此,數(shù)據(jù)丟失可被限于在最后的完整檢查點與系統(tǒng)被關閉或發(fā)生故障之間接收到的數(shù)據(jù)。在某些情況下,甚至可避免該數(shù)據(jù)丟失。例如,數(shù)據(jù)流系統(tǒng)(210)可告知源(230)它可被要求在最新檢查點的時間之后重放數(shù)據(jù)(例如,將數(shù)據(jù)項(232)重新輸入到數(shù)據(jù)流系統(tǒng)(210)中)。數(shù)據(jù)流系統(tǒng)(210)還可告知宿(240)該宿(240)可能需要在重放檢查點之后處理數(shù)據(jù)。在這種數(shù)據(jù)重放的情況下,甚至可避免在最新檢查點的時間之后接收到的數(shù)據(jù)的丟失。
      [0059]II1.操作者狀態(tài)檢查點技術
      [0060]現(xiàn)在將討論若干種操作者狀態(tài)檢查點技術。可以在計算環(huán)境中執(zhí)行這些技術中的每一個。例如,每種技術可在包括至少一個處理器和至少一個存儲器的計算機系統(tǒng)中執(zhí)行,該至少一個存儲器包括存儲于其上的、在由該至少一個處理器執(zhí)行時使該至少一個處理器執(zhí)行該技術的指令(一個或多個存儲器存儲指令(例如,對象代碼),并且當處理器執(zhí)行這些指令時,處理器執(zhí)行該技術)。類似地,一個或多個計算機可讀存儲介質可具有收錄于其上的計算機可執(zhí)行指令,該些指令在由至少一個處理器執(zhí)行時使該至少一個處理器執(zhí)行該技術。
      [0061]參考圖3,將描述操作者狀態(tài)檢查點技術。該技術可包括在第一操作者處接收(310)檢查點標記。響應于接收到(310)檢查點標記,第一操作者可處理(320)檢查點標記。該處理(320)可包括將檢查點標記發(fā)送到第二操作者,請求該第二操作者將狀態(tài)檢查點信息發(fā)送到檢查點寫入者。另外,第一操作者可將狀態(tài)檢查點信息從第一操作者發(fā)送(324)到檢查點寫入者。該狀態(tài)檢查點信息可表示該第一操作者的狀態(tài)。
      [0062]檢查點信息可包括第一操作者接收到的正在進行處理的一個或多個數(shù)據(jù)項的一個或多個表示和/或由該第一操作者維護的一個或多個數(shù)據(jù)結構的一個或多個表示。
      [0063]該第一操作者可包括被配置成接收檢查點標記的多個輸入隊列。該技術還可包括在以下兩個時間之間的時間段期間執(zhí)行各步驟:在一個輸入隊列處接收到并處理第一檢查點標記時以及在所有輸入隊列處已經接收到并處理檢查點標記時。這些步驟可包括停止處理所有輸入隊列的數(shù)據(jù)項。對于尚未接收到檢查點標記的每一個輸入隊列,這些步驟還可包括維護在該輸入隊列處接收到的數(shù)據(jù)項的緩沖區(qū),直到在該輸入隊列處接收到檢查點標記。關于第一操作者的檢查點信息可包括緩沖區(qū)中的一個或多個數(shù)據(jù)項的一個或多個表
      /Jn ο
      [0064]該技術還可包括第二操作者響應于從第一操作者接收到檢查點標記來處理該檢查點標記。第二操作者可通過將表示該第二操作者的狀態(tài)的狀態(tài)檢查點信息從該第二操作者發(fā)送到檢查點寫入者來執(zhí)行該處理。第一和第二操作者可以彼此并行地處理檢查點標記。同樣,檢查點寫入者可將檢查點信息寫入到持久存儲。檢查點寫入者可以與由第一操作者執(zhí)行的輸入處理異步地寫入檢查點信息。
      [0065]第一和第二操作者可以在使用也用于在操作者之間發(fā)送其它數(shù)據(jù)的通信信道來在操作者之間發(fā)送檢查點標記的數(shù)據(jù)流系統(tǒng)中。例如,數(shù)據(jù)流系統(tǒng)可以對檢查點標記使用與正在流動通過該數(shù)據(jù)流系統(tǒng)的其它數(shù)據(jù)相同的輸入/輸出隊列。檢查點寫入者可以是這一數(shù)據(jù)流系統(tǒng)中的另一操作者。
      [0066]該技術還可包括在啟動檢查點標記后輸入組件維護從該輸入組件提供到數(shù)據(jù)流系統(tǒng)的輸入的記錄。該技術還可包括在啟動檢查點標記后輸出組件準備從數(shù)據(jù)流系統(tǒng)接收輸出的副本。數(shù)據(jù)流系統(tǒng)可告知輸入組件和/或輸出組件何時已經保存檢查點,以允許輸入/輸出組件做出這樣的準備。
      [0067]檢查點寫入者可將關于多個查詢的檢查點信息寫入到日志。關于多個查詢的檢查點信息可以在日志中交錯,并且查詢可以是連續(xù)運行的查詢。日志可包括描繪日志中的不同的查詢檢查點單元的一個或多個標記。如上所述,例如這些標記可將日志分成各個查詢單元(例如,其中標記被插入在日志中的關于查詢檢查點的信息是完整的位置)。檢查點信息的交錯還可包括交錯關于同一查詢的不同的檢查點信息片段。這些片段可包括來自同一操作者且關于同一查詢的多個片段。例如,在操作者具有大量檢查點信息的情況下,將該操作者的狀態(tài)分成各個片段可以是有用的。操作者的狀態(tài)可能已經在該操作者中被自然地分成各個片段。在其中這些片段被認為是不可變的一個實現(xiàn)中(如可以是流傳輸系統(tǒng)中的情況),這些片段可被傳遞至檢查點寫入者并進行引用計數(shù)。檢查點寫入者可將來自可能不同的操作者的片段組合成較大的塊以便高效地將檢查點信息寫入到檢查點存儲中的日志。因此,圖3的技術可包括將表示第一操作者的狀態(tài)的檢查點信息分成多個片段并在日志中將該多個片段與來自除了第一操作者之外的操作者的檢查點信息交錯。
      [0068]圖3的技術還可包括在第一操作者的檢查點信息輸入隊列處從讀取者單元接收檢查點信息。檢查點信息可用于還原第一操作者的先前設置檢查點的狀態(tài)。另外,對第一操作者的數(shù)據(jù)輸入隊列中的信息的處理可以在使用檢查點信息來建立該操作者的狀態(tài)時被掛起。
      [0069]現(xiàn)在參考圖4,將討論另一種操作者狀態(tài)檢查點技術。該技術可包括在操作者的檢查點信息輸入隊列處從讀取者單元接收(410)檢查點信息??墒褂迷摍z查點信息來還原(420)該操作者的狀態(tài)。例如,該還原可包括還原數(shù)據(jù)結構和/或處理檢查點信息中所表示的數(shù)據(jù)項。在使用檢查點信息來還原(420)操作者的狀態(tài)時,可掛起(430)對該操作者的數(shù)據(jù)輸入隊列中的信息的處理。還原(420)操作者的狀態(tài)可以與一個或多個其它操作者使用來自讀取者的檢查點信息來還原狀態(tài)并行地執(zhí)行。還原(420)可包括將操作者的狀態(tài)還原至該操作者在從該操作者獲取表示該操作者的狀態(tài)的檢查點信息時(例如,在該操作者匯編檢查點信息并將其發(fā)送到檢查點寫入者時)的狀態(tài)。
      [0070]操作者可被稱為第一操作者,并且圖4的技術還可包括在第一操作者處接收檢查點標記。響應于接收到檢查點標記,第一操作者可處理檢查點標記。該處理可包括將檢查點標記發(fā)送到第二操作者,請求該第二操作者將關于該第二操作者的狀態(tài)檢查點信息發(fā)送到檢查點寫入者。該處理還可包括將表示第一操作者的狀態(tài)的狀態(tài)檢查點信息從第一操作者發(fā)送到檢查點寫入者。例如,第一操作者可以在將狀態(tài)檢查點信息發(fā)送到檢查點寫入者之前和/或在匯編狀態(tài)檢查點信息以便發(fā)送到檢查點寫入者之前將檢查點標記發(fā)送到第二操作者。
      [0071]現(xiàn)在參考圖5,將討論又一種操作者狀態(tài)檢查點技術。該技術可包括在數(shù)據(jù)流系統(tǒng)中的多個操作者中的每一個處接收(510)檢查點標記。響應于每一個操作者接收到(510)檢查點標記,該操作者可以與一個或多個其它操作者并行地處理(520)檢查點標記。該處理可包括將檢查點標記從該操作者發(fā)送(522)到另一操作者并請求該另一操作者將狀態(tài)檢查點信息發(fā)送到檢查點寫入者。該處理還可包括將狀態(tài)檢查點信息從該操作者發(fā)送(524)到檢查點寫入者。狀態(tài)檢查點信息可表示該操作者的狀態(tài)。
      [0072]檢查點寫入者可寫入(530)表示每一個操作者的狀態(tài)的檢查點信息。該寫入(530)可以與由各操作者執(zhí)行的輸入處理異步地完成。
      [0073]對于每一個操作者,可以在檢查點信息輸入隊列處從讀取者單元接收(540)檢查點信息。同樣對于每一個操作者,可以在掛起(550)對數(shù)據(jù)輸入隊列中的信息的處理時建立操作者狀態(tài)。每一個操作者的所建立的操作者狀態(tài)可以與從該操作者獲取檢查點信息時的狀態(tài)相同。對于不同的操作者,操作者狀態(tài)的建立可以并行地完成。
      [0074]盡管用結構特征和/或方法動作專用的語言描述了本主題,但可以理解,所附權利要求書中定義的主題不必限于上述具體特征或動作。更確切而言,上述具體特征和動作是作為實現(xiàn)權利要求的示例形式公開的。
      【權利要求】
      1.一種計算機實現(xiàn)的方法,包括: 在第一操作者處接收檢查點標記;以及 響應于在所述第一操作者處接收到所述檢查點標記,所述第一操作者通過執(zhí)行以下動作來處理所述檢查點標記: 將所述檢查點標記發(fā)送到第二操作者,請求所述第二操作者將狀態(tài)檢查點信息發(fā)送到檢查點寫入者;以及 將表示所述第一操作者的狀態(tài)的狀態(tài)檢查點信息從所述第一操作者發(fā)送到所述檢查點寫入者。
      2.如權利要求1所述的方法,其特征在于,所述檢查點信息包括由所述第一操作者接收到的正在進行處理的一個或多個數(shù)據(jù)項的一個或多個表示。
      3.如權利要求1所述的方法,其特征在于,所述第一操作者包括被配置成接收檢查點標記的多個輸入隊列,并且其中所述方法還包括在在所述輸入隊列之一處接收到第一檢查點標記的時間與在所有輸入隊列處接收到并處理檢查點標記的時間之間的時間段期間執(zhí)行以下動作: 停止處理對于所述所有輸入隊列的數(shù)據(jù)項;以及 對于尚未接收到檢查點標記的每一個輸入隊列,維護在該輸入隊列處接收到的數(shù)據(jù)項的緩沖區(qū)直到在該輸入隊列處接收到所述檢查點標記。
      4.如權利要求1所述的方法,其特征在于,所述第一操作者和所述第二操作者彼此并行地處理所述檢查點標記?!?br> 5.如權利要求1所述的方法,其特征在于,還包括所述檢查點寫入者寫入表示所述第一操作者的狀態(tài)的檢查點信息,所述寫入與由所述第一操作者執(zhí)行的輸入處理異步地完成。
      6.如權利要求1所述的方法,其特征在于,所述第一和第二操作者在使用也用于在操作者之間發(fā)送其它數(shù)據(jù)的通信信道來在操作者之間發(fā)送檢查點標記的數(shù)據(jù)流系統(tǒng)中,并且其中所述方法還包括: 在啟動所述檢查點標記后輸入組件維護從該輸入組件提供到所述數(shù)據(jù)流系統(tǒng)的輸入的記錄;以及 在啟動所述檢查點標記后輸出組件準備從所述數(shù)據(jù)流系統(tǒng)接收輸出的副本。
      7.如權利要求1所述的方法,其特征在于,還包括: 所述檢查點寫入者將關于多個查詢的檢查點信息寫入到日志,所述關于多個查詢的檢查點信息在所述日志中交錯;以及 將表示所述第一操作者的狀態(tài)的檢查點信息分成多個片段并在所述日志中將所述多個片段與來自除了所述第一操作者之外的操作者的檢查點信息交錯。
      8.一種計算機系統(tǒng),包括: 至少一個處理器;以及 包括存儲于其上的指令的至少一個存儲器,所述指令在由所述至少一個處理器執(zhí)行時致使所述至少一個處理器執(zhí)行以下動作: 在所述操作者的檢查點信息輸入隊列處從讀取者單元接收檢查點信息; 使用所述檢查點信息來還原所述操作者的狀態(tài);以及在使用所述檢查點信息來還原所述操作者的狀態(tài)時,掛起對所述操作者的數(shù)據(jù)輸入隊列中的信息的處理。
      9.如權利要求8所述的計算機系統(tǒng),其特征在于,還原所述操作者的狀態(tài)與一個或多個其它操作者使用來自所述讀取者的檢查點信息來還原狀態(tài)并行地執(zhí)行。
      10.一種或多種其上包含計算機可執(zhí)行指令的計算機可讀存儲介質,所述指令在由至少一個處理器執(zhí)行時使所述至少一個處理器執(zhí)行以下動作: 在數(shù)據(jù)流系統(tǒng)中的多個操作者中的每一個處接收檢查點標記;以及響應于每一個操作者接收到所述檢查點標記,所述操作者通過執(zhí)行以下動作來彼此并行地處理所述檢查點標記: 將所述檢查點標記從所述操作者發(fā)送到另一操作者,請求該另一操作者將狀態(tài)檢查點信息發(fā)送到檢查點寫入者;以及 將狀態(tài)檢查點信息從該操作者發(fā)送到所述檢查點寫入者,所述狀態(tài)檢查點信息,發(fā)自該操作者的狀態(tài)檢查點信息表示該操作者的狀態(tài); 所述檢查點寫入者寫入表示每一個操作者的狀態(tài)的檢查點信息,所述寫入與各操作者執(zhí)行的輸入處理異步地完成; 對于所述操作者中的每一個,在檢查點信息輸入隊列處從讀取者單元接收檢查點信息;以及 對于所述操作者中的每一個,在掛起對數(shù)據(jù)輸入隊列中的信息的處理時使用所述檢查點信息來還原操作者狀態(tài),所述操作者中的每一個的所建立的操作者狀態(tài)與獲取所述檢查點信息時的狀態(tài)相同,并且對于不同操作者,建立所述操作者狀態(tài)是并行地完成的。
      【文檔編號】G06F9/06GK103582868SQ201280027132
      【公開日】2014年2月12日 申請日期:2012年5月18日 優(yōu)先權日:2011年5月27日
      【發(fā)明者】J·D·戈德斯汀, P·A·扎巴克, B·錢德拉穆里 申請人:微軟公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1