欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種數(shù)據(jù)備份方法及流計(jì)算系統(tǒng)的制作方法

文檔序號:6552307閱讀:210來源:國知局
一種數(shù)據(jù)備份方法及流計(jì)算系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供一種數(shù)據(jù)備份方法及流計(jì)算系統(tǒng),該方法包括:目的PE從自身的接收隊(duì)列中讀取第一檢查點(diǎn)元組,若判斷所述第一檢查點(diǎn)元組的批號與當(dāng)前批號相同,且與所述第一檢查點(diǎn)元組具有相同批號的所有元組都已處理完畢,則將自身的狀態(tài)數(shù)據(jù)備份至所述流計(jì)算系統(tǒng)的分布式存儲器中。本發(fā)明提供的數(shù)據(jù)備份方法和流計(jì)算系統(tǒng),采用異步備份的方式,使得數(shù)據(jù)備份不受PE之間數(shù)據(jù)傳遞時延的影響,同時通過設(shè)置元組的批次,通過批號的比較,使得同一批號的所有元組到齊之后再進(jìn)行狀態(tài)備份,保證了數(shù)據(jù)備份的一致性。
【專利說明】一種數(shù)據(jù)備份方法及流計(jì)算系統(tǒng)

【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種數(shù)據(jù)備份方法以及一種流計(jì)算系統(tǒng)。

【背景技術(shù)】
[0002] 近年來,數(shù)據(jù)密集型業(yè)務(wù)已經(jīng)得到越來越廣泛的應(yīng)用,這些業(yè)務(wù)的實(shí)例包括金融 服務(wù)、網(wǎng)絡(luò)監(jiān)控、電信數(shù)據(jù)管理、傳感檢測等等。數(shù)據(jù)密集型業(yè)務(wù)產(chǎn)生的數(shù)據(jù)具有數(shù)據(jù)量大、 快速、時變的特點(diǎn),流計(jì)算系統(tǒng)在接收流數(shù)據(jù)時就開始對其進(jìn)行處理,以保證實(shí)時性。如圖 1所示,流計(jì)算系統(tǒng)通常包括一個主控節(jié)點(diǎn)(Master)和多個工作節(jié)點(diǎn)(worker),主控節(jié)點(diǎn) 主要負(fù)責(zé)調(diào)度和管理各個工作節(jié)點(diǎn),而工作節(jié)點(diǎn)是承載實(shí)際的數(shù)據(jù)處理操作的邏輯實(shí)體, 工作節(jié)點(diǎn)具體通過調(diào)用若干個執(zhí)行單元(PE, Process Element)來對數(shù)據(jù)進(jìn)行處理,PE是業(yè) 務(wù)邏輯的物理執(zhí)行單元。
[0003] 可以看出,流計(jì)算系統(tǒng)實(shí)質(zhì)上是一個分布式集群系統(tǒng),因此系統(tǒng)出現(xiàn)異常的概率 較高,流計(jì)算系統(tǒng)發(fā)生故障可能會導(dǎo)致業(yè)務(wù)中斷或狀態(tài)數(shù)據(jù)丟失,為了保證流計(jì)算系統(tǒng)的 可靠性,現(xiàn)有技術(shù)通常采用多節(jié)點(diǎn)備份機(jī)制,如圖2所示,周期性的將每個工作節(jié)點(diǎn)中的PE 的狀態(tài)數(shù)據(jù)以及業(yè)務(wù)數(shù)據(jù)備份至其他工作節(jié)點(diǎn)的內(nèi)存,當(dāng)某個工作節(jié)點(diǎn)出現(xiàn)故障,則遷移 到備份的工作節(jié)點(diǎn)繼續(xù)進(jìn)行數(shù)據(jù)處理。
[0004] 由于流計(jì)算系統(tǒng)是分布式數(shù)據(jù)處理系統(tǒng),工作節(jié)點(diǎn)中的每個PE可能會處理多條 數(shù)據(jù)流中的數(shù)據(jù),同時,同一數(shù)據(jù)可能會同時被不同的PE處理,流計(jì)算系統(tǒng)中數(shù)據(jù)處理的 并發(fā)性和無序性,以及PE之間數(shù)據(jù)傳遞的時延,會導(dǎo)致采用現(xiàn)有技術(shù)這種整體同步備份的 方式,數(shù)據(jù)備份的一致性得不到保證。。


【發(fā)明內(nèi)容】

[0005] 本發(fā)明實(shí)施例提供一種數(shù)據(jù)備份方法及流計(jì)算系統(tǒng),用以保證分布式流計(jì)算系統(tǒng) 中數(shù)據(jù)備份的一致性。
[0006] 第一方面,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)備份方法,應(yīng)用于流計(jì)算系統(tǒng)中,所述流 計(jì)算系統(tǒng)包括多個工作節(jié)點(diǎn),所述多個工作節(jié)點(diǎn)通過調(diào)用多個執(zhí)行單元PE來對待處理的 元組進(jìn)行處理,所述多個執(zhí)行單元包括:源PE和目的PE ;所述源PE將自身的發(fā)送隊(duì)列中 緩存的元組發(fā)送到所述目的PE的接收隊(duì)列中,所述目的PE讀取自身的接收隊(duì)列中的元組 并進(jìn)行處理;所述源PE的發(fā)送隊(duì)列中緩存的元組包括普通元組和檢查點(diǎn)元組,且每個元組 攜帶有用于表示該元組批次的批號;其中,檢查點(diǎn)元組用于指示PE進(jìn)行數(shù)據(jù)備份或數(shù)據(jù)恢 復(fù);所述源PE的發(fā)送隊(duì)列中不同的檢查點(diǎn)元組具有不同的批號,處于相鄰的兩個檢查點(diǎn)元 組之間的普通元組具有相同的批號,且每個檢查點(diǎn)元組的批號與其相鄰的一個普通元組的 批號相同;所述數(shù)據(jù)備份方法包括:
[0007] 所述目的PE從自身的接收隊(duì)列中讀取第一檢查點(diǎn)元組,所述第一檢查點(diǎn)元組用 于指示所述目的PE進(jìn)行狀態(tài)數(shù)據(jù)備份;
[0008] 所述目的PE判斷所述第一檢查點(diǎn)元組的批號與當(dāng)前批號是否相同,以及與所述 第一檢查點(diǎn)元組具有相同批號的所有普通元組是否都已處理完畢;所述當(dāng)前批號為所述目 的PE當(dāng)前處理的普通元組的批號;
[0009] 若所述第一檢查點(diǎn)元組的批號與所述當(dāng)前批號相同,且與所述第一檢查點(diǎn)元組具 有相同批號的所有普通元組都已處理完畢,則所述目的PE將自身的狀態(tài)數(shù)據(jù)進(jìn)行備份;其 中,所述目的PE的狀態(tài)數(shù)據(jù)包括所述目的PE在處理所述普通元組過程中產(chǎn)生的數(shù)據(jù)。 [0010] 在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)備份方法還包括:
[0011] 所述目的PE從自身的接收隊(duì)列中讀取第二檢查點(diǎn)元組,所述第二檢查點(diǎn)元組用 于指示所述目的PE進(jìn)行狀態(tài)數(shù)據(jù)恢復(fù);
[0012] 所述目的PE加載自身備份的狀態(tài)數(shù)據(jù),并基于所述備份的狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢 復(fù)和數(shù)據(jù)回放。
[0013] 結(jié)合第一方面,或者第一方面第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式 中,所述目的PE中保存有檢查點(diǎn)狀態(tài)信息,所述檢查點(diǎn)狀態(tài)信息包括:所述當(dāng)前批號以及 元組到齊標(biāo)記;
[0014] 所述目的PE判斷所述第一檢查點(diǎn)元組的批號與當(dāng)前批號是否相同,以及與所述 第一檢查點(diǎn)元組具有相同批號的所有普通元組是否都已到齊,包括 :
[0015] 所述目的PE比較所述第一檢查點(diǎn)元組的批號與所述檢查點(diǎn)狀態(tài)信息中包含的當(dāng) 前批號是否相等,以及根據(jù)所述檢查點(diǎn)狀態(tài)信息中的元組到齊標(biāo)記確定與所述第一檢查點(diǎn) 元組具有相同批號的所有普通元組是否都已處理完畢。
[0016] 結(jié)合第一方面第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,還包括:
[0017] 所述目的PE從自身的接收隊(duì)列中讀取第三檢查點(diǎn)元組,所述第三檢查點(diǎn)元組用 于指示所述目的PE進(jìn)行狀態(tài)數(shù)據(jù)清理;
[0018] 所述目的PE清理自身備份的狀態(tài)數(shù)據(jù),并清理所述檢查點(diǎn)狀態(tài)信息。
[0019] 結(jié)合第一方面第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述清理所 述檢查點(diǎn)狀態(tài)信息包括:
[0020] 將所述檢查點(diǎn)狀態(tài)信息中的當(dāng)前批號加1,并將元組到齊標(biāo)記清零。
[0021] 結(jié)合第一方面,或者第一方面第一至第四種任意一種可能的實(shí)現(xiàn)方式,在第五種 可能的實(shí)現(xiàn)方式中,所述流計(jì)算系統(tǒng)還包括:分布式存儲器;所述目的PE將自身的狀態(tài)數(shù) 據(jù)進(jìn)行備份,包括:
[0022] 所述目的PE通過調(diào)用第一接口將當(dāng)前的狀態(tài)數(shù)據(jù)緩存到本地內(nèi)存;
[0023] 所述目的PE通過第二接口調(diào)用備份與恢復(fù)模塊,以使所述備份與恢復(fù)模塊啟動 備份線程,將所述本地內(nèi)存中的狀態(tài)數(shù)據(jù)備份至所述分布式存儲器。
[0024] 結(jié)合第一方面第五種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,所述目的PE 加載自身備份的狀態(tài)數(shù)據(jù),并基于所述備份的狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢復(fù)和數(shù)據(jù)回放,包括:
[0025] 所述目的PE從所述分布式存儲器中加載自身最近一次備份的狀態(tài)數(shù)據(jù),并基于 所述最近一次備份的狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢復(fù)和數(shù)據(jù)回放。
[0026] 結(jié)合第一方面第二到第六種中任意一種可能的實(shí)現(xiàn)方式,在第七種可能的實(shí)現(xiàn)方 式中,還包括:
[0027] 目的PE從自身的接收隊(duì)列中讀取普通元組;
[0028] 將該普通元組的批號與當(dāng)前批號進(jìn)行比較,如果該元組的批號等于當(dāng)前批號,則 對該普通元組進(jìn)行處理。
[0029] 結(jié)合第一方面第七種可能的實(shí)現(xiàn)方式,在第八種可能的實(shí)現(xiàn)方式中,還包括:
[0030] 如果該普通元組的批號小于當(dāng)前批號,則丟棄該普通元組,并從所述接收隊(duì)列中 讀取下一個元組。
[0031] 結(jié)合第一方面第七種可能的實(shí)現(xiàn)方式以及第八種可能的實(shí)現(xiàn)方式中的任意一種 可能的實(shí)現(xiàn)方式,在第九種可能的實(shí)現(xiàn)方式中,還包括:
[0032] 如果該普通元組的批號大于當(dāng)前批號,則將所述普通元組加入緩存隊(duì)列,并更新 所述檢查點(diǎn)狀態(tài)信息中的元組到齊標(biāo)記。
[0033] 第二方面,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)備份方法,應(yīng)用于流計(jì)算系統(tǒng)中,所述流 計(jì)算系統(tǒng)包括多個工作節(jié)點(diǎn),所述多個工作節(jié)點(diǎn)通過調(diào)用多個執(zhí)行單元PE來對待處理的 元組進(jìn)行處理,所述多個執(zhí)行單元包括:源PE和目的PE ;所述源PE將自身的發(fā)送隊(duì)列中 緩存的元組發(fā)送到所述目的PE的接收隊(duì)列中,所述目的PE讀取自身的接收隊(duì)列中的元組 并進(jìn)行處理;所述源PE的發(fā)送隊(duì)列中緩存的元組包括普通元組和檢查點(diǎn)元組,且每個元組 攜帶有用于表示該元組批次的批號;其中,檢查點(diǎn)元組用于指示PE進(jìn)行數(shù)據(jù)備份或數(shù)據(jù)恢 復(fù);所述源PE的發(fā)送隊(duì)列中不同的檢查點(diǎn)元組具有不同的批號,處于相鄰的兩個檢查點(diǎn)元 組之間的普通元組具有相同的批號,且每個檢查點(diǎn)元組的批號與其相鄰的一個普通元組的 批號相同;所述數(shù)據(jù)備份方法包括:
[0034] 源PE接收用于狀態(tài)數(shù)據(jù)備份的第一檢查點(diǎn)命令;
[0035] 源PE根據(jù)所述第一檢查點(diǎn)命令生成第一檢查點(diǎn)元組,并將生成的檢查點(diǎn)元組加 入所述源PE的發(fā)送隊(duì)列;
[0036] 所述源PE將所述發(fā)送隊(duì)列中緩存的所述第一檢查點(diǎn)元組發(fā)送至目的PE的接收隊(duì) 列,以使所述目的PE從所述接收隊(duì)列中讀取所述第一檢查點(diǎn)元組之后,若判斷所述第一檢 查點(diǎn)元組的批號與當(dāng)前批號相同,且與所述第一檢查點(diǎn)元組具有相同批號的所有普通元組 均已處理完畢時,將所述目的PE當(dāng)前的狀態(tài)數(shù)據(jù)進(jìn)行備份;其中,所述目的PE的狀態(tài)數(shù)據(jù) 包括所述目的PE在處理所述普通元組過程中產(chǎn)生的數(shù)據(jù)。
[0037] 在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述流計(jì)算系統(tǒng)還包括:用于管理所述 多個工作節(jié)點(diǎn)的主控節(jié)點(diǎn);所述多個工作節(jié)點(diǎn)包括檢查點(diǎn)PE所處的工作節(jié)點(diǎn);所述源PE 接收用于狀態(tài)數(shù)據(jù)備份的第一檢查點(diǎn)命令,包括:
[0038] 所述源PE接收所述流計(jì)算系統(tǒng)的主控節(jié)點(diǎn)或者所述檢查點(diǎn)PE發(fā)送的第一檢查點(diǎn) 命令。
[0039] 第三方面,本發(fā)明實(shí)施例提供了一種流計(jì)算系統(tǒng)中的目的執(zhí)行單元,所述流計(jì)算 系統(tǒng)包括源執(zhí)行單元和所述目的執(zhí)行單元;所述源執(zhí)行單元用于將自身的發(fā)送隊(duì)列中緩存 的元組發(fā)送到所述目的執(zhí)行單元的接收隊(duì)列,所述源執(zhí)行單元的發(fā)送隊(duì)列中緩存的元組包 括普通元組和檢查點(diǎn)元組,且每個元組攜帶有用于表示該元組批次的批號;其中,檢查點(diǎn)元 組用于指示執(zhí)行單元進(jìn)行數(shù)據(jù)備份或數(shù)據(jù)恢復(fù);所述源執(zhí)行單元的發(fā)送隊(duì)列中不同的檢查 點(diǎn)元組具有不同的批號,處于相鄰的兩個檢查點(diǎn)元組之間的普通元組具有相同的批號,且 每個檢查點(diǎn)元組的批號與其相鄰的一個普通元組的批號相同;
[0040] 所述目的執(zhí)行單元包括:業(yè)務(wù)數(shù)據(jù)處理模塊,用于從所述目的執(zhí)行單元的接收隊(duì) 列中讀取元組并對讀取到的元組進(jìn)行處理;
[0041] 備份與恢復(fù)模塊,用于當(dāng)所述業(yè)務(wù)數(shù)據(jù)處理模塊讀取到的元組為用于指示所述目 的執(zhí)行單元進(jìn)行狀態(tài)數(shù)據(jù)備份的第一檢查點(diǎn)元組時,判斷所述第一檢查點(diǎn)元組的批號與當(dāng) 前批號是否相同,以及與所述第一檢查點(diǎn)元組具有相同批號的所有普通元組是否都已處理 完畢;所述當(dāng)前批號為所述業(yè)務(wù)數(shù)據(jù)處理模塊當(dāng)前處理的普通元組的批號;若所述第一檢 查點(diǎn)元組的批號與所述當(dāng)前批號相同,且與所述第一檢查點(diǎn)元組具有相同批號的所有普通 元組都已處理完畢,則將所述目的執(zhí)行單元的狀態(tài)數(shù)據(jù)進(jìn)行備份;其中,所述目的執(zhí)行單元 的狀態(tài)數(shù)據(jù)包括所述業(yè)務(wù)數(shù)據(jù)處理模塊在處理元組的過程中產(chǎn)生的數(shù)據(jù)。
[0042] 在第三方面的第一種可能的實(shí)現(xiàn)方式中,所述備份與恢復(fù)模塊,還用于當(dāng)所述業(yè) 務(wù)數(shù)據(jù)處理模塊讀取到的元組為用于指示所述目的執(zhí)行單元進(jìn)行狀態(tài)數(shù)據(jù)恢復(fù)的第一檢 查點(diǎn)元組時,加載自身備份的狀態(tài)數(shù)據(jù),并基于所述備份的狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢復(fù)和數(shù)據(jù) 回放。
[0043] 結(jié)合第三方面,或者第三方面第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式 中,所述目的PE中保存有檢查點(diǎn)狀態(tài)信息,所述檢查點(diǎn)狀態(tài)信息包括:所述當(dāng)前批號以及 元組到齊標(biāo)記;
[0044] 在判斷所述第一檢查點(diǎn)元組的批號與當(dāng)前批號是否相同,以及與所述第一檢查點(diǎn) 元組具有相同批號的所有普通元組是否都已到齊的方面,所述備份與恢復(fù)模塊具體用于:
[0045] 比較所述第一檢查點(diǎn)元組的批號與所述檢查點(diǎn)狀態(tài)信息中包含的當(dāng)前批號是否 相等,以及根據(jù)所述檢查點(diǎn)狀態(tài)信息中的元組到齊標(biāo)記確定與所述第一檢查點(diǎn)元組具有相 同批號的所有普通元組是否都已處理完畢。
[0046] 結(jié)合第三方面,或者第三方面第一至第二種任意一種可能的實(shí)現(xiàn)方式,在第三種 可能的實(shí)現(xiàn)方式中,所述流計(jì)算系統(tǒng)還包括:分布式存儲器;在將所述目的執(zhí)行單元的狀 態(tài)數(shù)據(jù)進(jìn)行備份的方面,所述備份與恢復(fù)模塊具體用于:
[0047] 通過調(diào)用第一接口將所述目的PE當(dāng)前的狀態(tài)數(shù)據(jù)緩存到本地內(nèi)存;
[0048]啟動備份線程,以使所述備份線程將所述本地內(nèi)存中的狀態(tài)數(shù)據(jù)備份至所述分布 式存儲器。
[0049] 結(jié)合第三方面第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,在加載自身 備份的狀態(tài)數(shù)據(jù),并基于所述備份的狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢復(fù)和數(shù)據(jù)回放的方面,所述備份 與恢復(fù)模塊具體用于:
[0050] 從所述分布式存儲器中加載自身最近一次備份的狀態(tài)數(shù)據(jù),并基于所述最近一次 備份的狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢復(fù)和數(shù)據(jù)回放。
[0051] 第四方面,本發(fā)明實(shí)施例提供了一種流計(jì)算系統(tǒng)中的源執(zhí)行單元,所述流計(jì)算系 統(tǒng)包括所述源執(zhí)行單元和目的執(zhí)行單元;所述源執(zhí)行單元的發(fā)送隊(duì)列中緩存有待發(fā)送給所 述目的執(zhí)行單元的元組,且所述待發(fā)送的元組包括普通元組和檢查點(diǎn)元組,且每個元組攜 帶有用于表示該元組批次的批號;其中,檢查點(diǎn)元組用于指示執(zhí)行單元進(jìn)行數(shù)據(jù)備份或數(shù) 據(jù)恢復(fù);所述源執(zhí)行單元的發(fā)送隊(duì)列中不同的檢查點(diǎn)元組具有不同的批號,處于相鄰的兩 個檢查點(diǎn)元組之間的普通元組具有相同的批號,且每個檢查點(diǎn)元組的批號與其相鄰的一個 普通元組的批號相同;所述源執(zhí)行單元包括:
[0052] 檢查點(diǎn)模塊,用于接收用于狀態(tài)數(shù)據(jù)備份的第一檢查點(diǎn)命令;根據(jù)所述第一檢查 點(diǎn)命令生成第一檢查點(diǎn)元組;
[0053] 發(fā)送模塊,用于將所述檢查點(diǎn)模塊生成的檢查點(diǎn)元組加入所述源執(zhí)行單元的發(fā)送 隊(duì)列;并將所述發(fā)送隊(duì)列中緩存的元組發(fā)送至所述目的執(zhí)行單元的接收隊(duì)列,以使所述目 的執(zhí)行單元從所述接收隊(duì)列中讀取所述第一檢查點(diǎn)元組之后,若判斷所述第一檢查點(diǎn)元組 的批號與當(dāng)前批號相同,且與所述第一檢查點(diǎn)元組具有相同批號的所有普通元組均已處理 完畢時,將所述目的執(zhí)行單元當(dāng)前的狀態(tài)數(shù)據(jù)進(jìn)行備份;其中,所述目的執(zhí)行單元的狀態(tài)數(shù) 據(jù)包括所述目的執(zhí)行單元在處理元組的過程中產(chǎn)生的數(shù)據(jù)。
[0054] 第五方面,本發(fā)明實(shí)施例提供了一種流計(jì)算系統(tǒng),,包括:多個工作節(jié)點(diǎn),所述多個 工作節(jié)點(diǎn)通過調(diào)用多個執(zhí)行單元(PE)來對元組進(jìn)行處理,所述多個執(zhí)行單元包括:源PE和 目的PE ;其中,所述源PE,用于將自身的發(fā)送隊(duì)列中緩存的元組發(fā)送到所述目的PE的接收 隊(duì)列中;所述目的PE,用于讀取自身的接收隊(duì)列中的元組并進(jìn)行處理;其中,所述源PE的發(fā) 送隊(duì)列中緩存的元組包括普通元組和檢查點(diǎn)元組,且每個元組攜帶有用于表示該元組批次 的批號;其中,檢查點(diǎn)元組用于指示PE進(jìn)行數(shù)據(jù)備份或數(shù)據(jù)恢復(fù);所述源PE的發(fā)送隊(duì)列中 不同的檢查點(diǎn)元組具有不同的批號,處于相鄰的兩個檢查點(diǎn)元組之間的普通元組具有相同 的批號,且每個檢查點(diǎn)元組的批號與其相鄰的一個普通元組的批號相同;其中:
[0055] 所述源PE,還用于接收用于狀態(tài)數(shù)據(jù)備份的第一檢查點(diǎn)命令,根據(jù)所述第一檢查 點(diǎn)命令生成第一檢查點(diǎn)元組,將生成的檢查點(diǎn)元組加入所述源PE的發(fā)送隊(duì)列,將所述發(fā)送 隊(duì)列中緩存的所述第一檢查點(diǎn)元組發(fā)送至所述目的PE的接收隊(duì)列;
[0056] 所述目的PE,還用于從自身的接收隊(duì)列中讀取所述第一檢查點(diǎn)元組,若判斷所述 第一檢查點(diǎn)元組的批號與當(dāng)前批號相同,且與所述第一檢查點(diǎn)元組具有相同批號的所有普 通元組都已處理完畢,則將自身的狀態(tài)數(shù)據(jù)進(jìn)行備份;其中,所述當(dāng)前批號為所述目的PE 當(dāng)前處理的普通元組的批號;所述目的PE的狀態(tài)數(shù)據(jù)包括所述目的PE在處理所述普通元 組過程中產(chǎn)生的數(shù)據(jù)。
[0057] 在第五方面的第一種可能的實(shí)現(xiàn)方式中,
[0058] 所述源PE還用于,接收用于數(shù)據(jù)恢復(fù)的第二檢查點(diǎn)命令,根據(jù)所述第二檢查點(diǎn)命 令生成用于指示所述目的PE進(jìn)行狀態(tài)數(shù)據(jù)恢復(fù)的第二檢查點(diǎn)元組,將生成的第二檢查點(diǎn) 元組加入所述源PE的發(fā)送隊(duì)列,將所述發(fā)送隊(duì)列中緩存的所述第二檢查點(diǎn)元組發(fā)送至所 述目的PE的接收隊(duì)列;
[0059] 所述目的PE還用于,從自身的接收隊(duì)列中讀取所述第二檢查點(diǎn)元組,根據(jù)所述第 二檢查點(diǎn)元組加載自身備份的狀態(tài)數(shù)據(jù),并基于所述狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢復(fù)和數(shù)據(jù)回放。
[0060] 結(jié)合第五方面,或者第五方面第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式 中,
[0061] 所述源PE還用于,接收用于狀態(tài)數(shù)據(jù)清理的第三檢查點(diǎn)命令,根據(jù)所述第三檢查 點(diǎn)命令生成第三檢查點(diǎn)元組,將生成的第三檢查點(diǎn)元組加入所述源PE的發(fā)送隊(duì)列,將所述 發(fā)送隊(duì)列中緩存的所述第三檢查點(diǎn)元組通過消息通道發(fā)送至所述目的PE的接收隊(duì)列;
[0062] 所述目的PE還用于,從自身的接收隊(duì)列中讀取所述第三檢查點(diǎn)元組,并根據(jù)所述 第三檢查點(diǎn)元組清理自身備份的狀態(tài)數(shù)據(jù)。
[0063] 結(jié)合第五方面,或者第五方面第一至第二種任意一種可能的實(shí)現(xiàn)方式,在第三種 可能的實(shí)現(xiàn)方式中,所述流計(jì)算系統(tǒng)還包括:分布式存儲器;
[0064] 在將自身的狀態(tài)數(shù)據(jù)進(jìn)行備份的方面,所述目的PE具體用于,通過調(diào)用第一接口 將自身當(dāng)前的狀態(tài)數(shù)據(jù)緩存到本地內(nèi)存;通過第二接口調(diào)用備份與恢復(fù)模塊,以使所述備 份與恢復(fù)模塊啟動備份恢復(fù)線程,將所述本地內(nèi)存中的狀態(tài)數(shù)據(jù)備份至所述分布式存儲 器。
[0065] 結(jié)合第五方面第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,在加載自身 備份的狀態(tài)數(shù)據(jù)的方面,所述目的PE具體用于,從所述分布式存儲器中加載自身備份的狀 態(tài)數(shù)據(jù)。
[0066] 結(jié)合第五方面,或者第五方面第一至第四種任意一種可能的實(shí)現(xiàn)方式,在第五種 可能的實(shí)現(xiàn)方式中,所述流計(jì)算系統(tǒng)還包括:主控節(jié)點(diǎn),用于向所述源PE發(fā)送所述第一檢 查點(diǎn)命令、第二檢查點(diǎn)命令和第三檢查點(diǎn)命令中的至少一個。
[0067] 結(jié)合第五方面,或者第五方面第一至第四種任意一種可能的實(shí)現(xiàn)方式,在第六種 可能的實(shí)現(xiàn)方式中,所述流計(jì)算系統(tǒng)還包括:主控節(jié)點(diǎn);所述多個工作節(jié)點(diǎn)包括檢查點(diǎn)PE 所處的工作節(jié)點(diǎn);
[0068] 所述主控節(jié)點(diǎn),用于向所述檢查點(diǎn)PE下發(fā)用于用于數(shù)據(jù)備份的備份命令、用于數(shù) 據(jù)恢復(fù)的恢復(fù)命令或者用于狀態(tài)數(shù)據(jù)清理的數(shù)據(jù)清理命令;所述檢查點(diǎn)PE用于,在接收到 所述主控節(jié)點(diǎn)發(fā)送的備份命令后,向所述源PE發(fā)送所述第一檢查點(diǎn)命令;或者,在接收到 所述主控節(jié)點(diǎn)發(fā)送的恢復(fù)命令后,向所述源PE發(fā)送所述第二檢查點(diǎn)命令;或者,在接收到 所述主控節(jié)點(diǎn)發(fā)送的數(shù)據(jù)清理命令后,向所述源PE發(fā)送所述第三檢查點(diǎn)命令。
[0069] 由上述技術(shù)方案可知,本發(fā)明實(shí)施例提供的數(shù)據(jù)備份方法和流計(jì)算系統(tǒng),通過檢 查點(diǎn)元組來觸發(fā)PE進(jìn)行數(shù)據(jù)備份,PE從接收隊(duì)列中讀取到檢查點(diǎn)元組之后,再執(zhí)行備份操 作,各個PE的備份操作不需要同步,使得數(shù)據(jù)備份不受PE之間數(shù)據(jù)傳遞時延的影響;同時 通過設(shè)置元組的批次,以及批號的比較,使得同一批號的所有元組到齊之后再進(jìn)行狀態(tài)備 份,避免了流計(jì)算系統(tǒng)中數(shù)據(jù)處理的并發(fā)性和無序性對數(shù)據(jù)備份一致性的影響,從而保證 了數(shù)據(jù)備份的一致性。

【專利附圖】

【附圖說明】
[0070] 為了更清楚地說明本發(fā)明的技術(shù)方案,下面將對實(shí)施例中所需要使用的附圖作一 簡單地介紹,顯而易見地,下面附圖只是本發(fā)明的一些實(shí)施例的附圖,對于本領(lǐng)域普通技術(shù) 人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得同樣能實(shí)現(xiàn)本發(fā)明 技術(shù)方案的其它附圖。
[0071] 圖1為本發(fā)明提供的流計(jì)算系統(tǒng)架構(gòu)示意圖;
[0072] 圖2為現(xiàn)有技術(shù)的中流計(jì)算系統(tǒng)數(shù)據(jù)備份方法示意圖;
[0073] 圖3為本發(fā)明實(shí)施例提供的流計(jì)算系統(tǒng)邏輯劃分示意圖;
[0074] 圖4為本發(fā)明實(shí)施例提供的業(yè)務(wù)處理邏輯示意圖;
[0075] 圖5為本發(fā)明實(shí)施例提供的數(shù)據(jù)備份方法的流程圖;
[0076] 圖6為本發(fā)明實(shí)施例提供的數(shù)據(jù)備份方法的原理示意圖;
[0077] 圖7為本發(fā)明實(shí)施例提供的源PE的工作流程圖;
[0078] 圖8為本發(fā)明實(shí)施例提供的目的PE的工作流程圖;
[0079] 圖9為本發(fā)明實(shí)施例提供的異步備份方法的示意圖;
[0080] 圖10為本發(fā)明實(shí)施例提供的一種流計(jì)算系統(tǒng)的示意圖;
[0081] 圖11為本發(fā)明實(shí)施例提供的另一種流計(jì)算系統(tǒng)的示意圖;
[0082] 圖12為本發(fā)明實(shí)施例提供的另一種流計(jì)算系統(tǒng)的示意圖。

【具體實(shí)施方式】
[0083] 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附 圖,對本發(fā)明的技術(shù)方案進(jìn)行清楚、完整地描述。顯然,下述的各個實(shí)施例都只是本發(fā)明一 部分的實(shí)施例。基于本發(fā)明下述的各個實(shí)施例,本領(lǐng)域普通技術(shù)人員即使沒有作出創(chuàng)造性 勞動,也可以通過等效變換部分甚至全部的技術(shù)特征,而獲得能夠解決本發(fā)明技術(shù)問題,實(shí) 現(xiàn)本發(fā)明技術(shù)效果的其它實(shí)施例,而這些變換而來的各個實(shí)施例顯然并不脫離本發(fā)明所公 開的范圍。
[0084] 本發(fā)明實(shí)施例提供的技術(shù)方案可典型地應(yīng)用于流計(jì)算系統(tǒng)中,圖3描述了流計(jì)算 系統(tǒng)的基本結(jié)構(gòu),包括一個主控節(jié)點(diǎn)(Master)和多個工作節(jié)點(diǎn)(worker),主控節(jié)點(diǎn)主要負(fù) 責(zé)調(diào)度和管理各個工作節(jié)點(diǎn),而工作節(jié)點(diǎn)是承載實(shí)際的數(shù)據(jù)處理操作的邏輯實(shí)體,工作節(jié) 點(diǎn)具體通過調(diào)用若干個執(zhí)行單元(PE,Process Element)來對待處理的數(shù)據(jù)進(jìn)行處理(如圖 3中的TO1、PE2),PE是業(yè)務(wù)邏輯的物理執(zhí)行單元,其具體可以為處理器核、進(jìn)程、線程或其 它具有數(shù)據(jù)處理能力的功能模塊、邏輯器件等;同時,為了快速有序地處理數(shù)據(jù),工作節(jié)點(diǎn) 中還設(shè)置有多個數(shù)據(jù)緩沖隊(duì)列(如圖3中的Q1、Q2、Q3、Q4)。PE1為PE2的上游處理單元, 即經(jīng)過PE1處理的數(shù)據(jù),會從PE1發(fā)送給PE2做進(jìn)一步處理,PE1和PE2屬于不同的工作節(jié) 點(diǎn)(在本發(fā)明實(shí)施例中,也稱PE1為源PE,PE1下游的處理單元PE2為目的PE),數(shù)據(jù)通信 層首先從上游接收到數(shù)據(jù)并緩存在隊(duì)列Q3中,數(shù)據(jù)轉(zhuǎn)發(fā)層的接收線程從底層通訊層讀取 數(shù)據(jù),并將發(fā)往PE1的元組數(shù)據(jù)路由至PE1對應(yīng)的處理隊(duì)列Ql。PE1循環(huán)從Q1中讀取數(shù)據(jù) 并進(jìn)行處理,同時將處理過程中產(chǎn)生的中間狀態(tài)數(shù)據(jù)緩存在statel中。PE1在處理數(shù)據(jù)過 程中也會發(fā)送處理結(jié)果數(shù)據(jù)至發(fā)送隊(duì)列Q2,該數(shù)據(jù)會被標(biāo)記為發(fā)往PE2。數(shù)據(jù)轉(zhuǎn)發(fā)層的發(fā) 送線程從Q2中讀取數(shù)據(jù),并調(diào)用通信層的發(fā)送接口路由并發(fā)送數(shù)據(jù),發(fā)送的數(shù)據(jù)首先會被 緩存在底層通訊的發(fā)送隊(duì)列Q4之中。數(shù)據(jù)通訊層會循環(huán)發(fā)送Q4中的數(shù)據(jù)至目標(biāo)PE所屬 的通訊層模塊。
[0085] 流計(jì)算是基于流式數(shù)據(jù)處理模型進(jìn)行的,在流計(jì)算系統(tǒng)中,業(yè)務(wù)處理邏輯通常需 要轉(zhuǎn)化為無回路有向圖(Directed Acyclic Graph,DAG),如圖4所示,其中算子(Operator) 是業(yè)務(wù)邏輯載體,是可被流計(jì)算系統(tǒng)調(diào)度執(zhí)行的最小單元;stream代表各Operator間 的數(shù)據(jù)傳輸,PE是承載實(shí)際的數(shù)據(jù)處理操作的物理載體,PE可以動態(tài)加載并執(zhí)行對應(yīng)的 operator所承載的業(yè)務(wù)邏輯,對業(yè)務(wù)產(chǎn)生的數(shù)據(jù)流進(jìn)行處理;其中,數(shù)據(jù)流中單個數(shù)據(jù)段, 稱為元組,元組可以是結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)。通常,元組中的數(shù)據(jù)表示特定時間點(diǎn)某事物 的狀態(tài),流計(jì)算系統(tǒng)中的PE以元組為單位對業(yè)務(wù)產(chǎn)生的數(shù)據(jù)流進(jìn)行處理,也可以認(rèn)為元組 是流計(jì)算系統(tǒng)中的數(shù)據(jù)的最小粒度劃分和表示。同理,流處理在DAG處理模型下,數(shù)據(jù)經(jīng)過 傳輸處理轉(zhuǎn)發(fā)等等一系列流程,所以在流計(jì)算系統(tǒng)中存在大量的隊(duì)列數(shù)據(jù)和數(shù)據(jù)處理過程 中的狀態(tài)數(shù)據(jù),對于數(shù)據(jù)處理的可靠性實(shí)現(xiàn),最直接有效的手段就是進(jìn)行數(shù)據(jù)的備份與恢 復(fù),但對于流計(jì)算系統(tǒng)的實(shí)際特點(diǎn),很難實(shí)現(xiàn)數(shù)據(jù)的一致性備份與恢復(fù),而本發(fā)明技術(shù)方案 就是根據(jù)這一技術(shù)問題提出的。需要說明的是,流計(jì)算系統(tǒng)只是本發(fā)明技術(shù)方案的一個典 型應(yīng)用場景,并不對本發(fā)明的應(yīng)用場景構(gòu)成限制,其它涉及分布式系統(tǒng)數(shù)據(jù)一致性備份與 恢復(fù)的應(yīng)用場景,本發(fā)明實(shí)施例的技術(shù)方案均適用。
[0086] 本發(fā)明實(shí)施例提供一種流計(jì)算系統(tǒng)中的數(shù)據(jù)備份方法,該方法可應(yīng)用與圖3所示 的流計(jì)算系統(tǒng)中,如圖5、圖6所示所示,該備份方法主要過程描述如下:
[0087] S501 :源PE接收元組并緩存在自身的元組發(fā)送隊(duì)列中;
[0088] S502 :當(dāng)源PE接收到檢查點(diǎn)命令后,生成檢查點(diǎn)元組,并將生成的檢查點(diǎn)元組加 入元組發(fā)送隊(duì)列;其中,元組的格式如圖6所示,根據(jù)圖6,元組中攜帶有用于指示該元組類 型的元組類型標(biāo)識以及用于表示該元組批次的批號,元組類型標(biāo)識用于區(qū)分一個元組是普 通元組還是檢查點(diǎn)元組,本發(fā)明實(shí)施例中,元組類型標(biāo)識為0表示普通元組,元組類型標(biāo)識 為1表示檢查點(diǎn)元組;可以理解的是,還可以用其他標(biāo)識來區(qū)分普通元組和檢查點(diǎn)元組,本 發(fā)明實(shí)施例不做特別限定。本發(fā)明實(shí)施例的普通元組是指承載業(yè)務(wù)數(shù)據(jù)的元組,檢查點(diǎn)元 組是指承載系統(tǒng)控制消息的元組,更具體地,檢查點(diǎn)元組主要用于指示PE進(jìn)行數(shù)據(jù)備份、 數(shù)據(jù)清理或數(shù)據(jù)恢復(fù),同時,檢查點(diǎn)元組與普通元組格式相同,以便于將其嵌入到數(shù)據(jù)流 中,保證不阻塞PE正常的數(shù)據(jù)處理,提高效率。同時,基于流計(jì)算的特點(diǎn),一個PE通常同時 會接收并處理多個上游PE發(fā)送的元組,為保證數(shù)據(jù)備份及恢復(fù)的一致性,本發(fā)明實(shí)施例在 元組中增加了批號標(biāo)識,具體而言,源PE發(fā)送隊(duì)列中的兩個檢查點(diǎn)元組之間的數(shù)據(jù)元組定 義為同批次數(shù)據(jù),通過在元組中增加批號字段來標(biāo)識元組的批次,屬于同一批次的元組,批 號相同,例如圖5中的B6-B10,在檢查點(diǎn)ckpOl和ckp02之間,屬于同一批次的元組,故具有 相同的批號。另外,檢查點(diǎn)元組作為各批次元組的邊界,與其相鄰的普通元組的批號相同, 具體而言,在源PE的發(fā)送隊(duì)列中,檢查點(diǎn)元組的批號可以與其前相鄰的元組的批號相同, 也可以與其后相鄰的元組的批號相同,本發(fā)明實(shí)施例不做特別限定。
[0089] S503 :源PE將元組發(fā)送隊(duì)列中的元組(包括普通元組和檢查點(diǎn)元組)通過消息通 道發(fā)送至目的PE的元組接收隊(duì)列;
[0090] S504 :目的PE接收源PE發(fā)送的元組(包括普通元組和檢查點(diǎn)元組),并順序緩存 在元組接收隊(duì)列中;
[0091] S505 :目的PE根據(jù)業(yè)務(wù)處理邏輯,依次讀取元組接收隊(duì)列中的元組(包括普通元 組和檢查點(diǎn)元組),對讀取到的元組進(jìn)行處理,并緩存處理過程中的狀態(tài)數(shù)據(jù);其中,PE的 狀態(tài)數(shù)據(jù)用于表示PE的處理數(shù)據(jù)狀態(tài),其具體包含的內(nèi)容是本領(lǐng)域技術(shù)人員熟知的,例如 狀態(tài)數(shù)據(jù)可包括:算子狀態(tài)數(shù)據(jù)、業(yè)務(wù)處理邏輯、元組接收隊(duì)列中的緩存數(shù)據(jù)、消息通道中 的緩存數(shù)據(jù)、PE在處理自身接收隊(duì)列中的一個或多個普通元組的過程中產(chǎn)生的數(shù)據(jù)(比如 當(dāng)前處理的普通元組的處理結(jié)果及中間過程數(shù)據(jù))中的一種或多種數(shù)據(jù)。
[0092] S506 :如果目的PE讀取到的元組為檢查點(diǎn)元組,且為用于指示所述目的PE進(jìn)行狀 態(tài)數(shù)據(jù)備份的第一檢查點(diǎn)元組,則判斷該第一檢查點(diǎn)元組的批號與當(dāng)前批號是否相同,以 及與所述第一檢查點(diǎn)元組具有相同批號的所有元組是否都已到齊,如果第一檢查點(diǎn)元組的 批號與當(dāng)前批號相同,且與第一檢查點(diǎn)元組具有相同批號的所有元組都已到齊,則目的PE 將自身當(dāng)前的狀態(tài)數(shù)據(jù)備份;具體地,目的PE根據(jù)讀取到的元組的元組類型標(biāo)識,可以判 斷出該元組是普通元組還是檢查點(diǎn)元組,若讀取到的元組為檢查點(diǎn)元組,則進(jìn)一步判斷該 元組的批號是否滿足備份要求(即批號與當(dāng)前批號相同,且同批次的所有元組都已到齊), 若滿足,就進(jìn)行狀態(tài)數(shù)據(jù)備份操作。在一個實(shí)施例中,目的PE可將自身的狀態(tài)數(shù)據(jù)備份至 分布式存儲中;其中,該分布式存儲器是流計(jì)算系統(tǒng)中的一個非易失性存儲裝置,用于流計(jì) 算系統(tǒng)中各個PE進(jìn)行狀態(tài)數(shù)據(jù)的備份。需要說明的是,分布式存儲器不應(yīng)理解為對本發(fā)明 實(shí)施方式的特別限定,其它類型的具備可靠性的存儲裝置,均能用于實(shí)施本發(fā)明方案。另 外還需要說明的是,本發(fā)明實(shí)施例中的"當(dāng)前批號"用于指示目的PE目前處理到什么批次 的元組,具體而言,當(dāng)前批號為目的PE當(dāng)前處理的普通元組的批號;需要說明的是,這里的 "當(dāng)前處理的元組",應(yīng)當(dāng)理解為目的PE執(zhí)行S506之前,最近一次讀取并處理的元組,該元 組通常為普通元組;"與第一檢查點(diǎn)元組具有相同批號的所有元組都已到齊",具體是指與 第一檢查點(diǎn)元組同批次(批號相同)的所有普通元組均已被目的PE接收并處理完畢。
[0093] 本發(fā)明提供的流計(jì)算系統(tǒng)中的數(shù)據(jù)備份方法,通過檢查點(diǎn)元組來觸發(fā)PE進(jìn)行數(shù) 據(jù)備份,PE從接收隊(duì)列中讀取到檢查點(diǎn)元組之后,再執(zhí)行備份操作,各個PE的備份操作不 需要同步,使得數(shù)據(jù)備份不受PE之間數(shù)據(jù)傳遞時延的影響;同時通過設(shè)置元組的批次,以 及批號的比較,使得同一批號的所有元組到齊之后再進(jìn)行狀態(tài)備份,避免了流計(jì)算系統(tǒng)中 數(shù)據(jù)處理的并發(fā)性和無序性對數(shù)據(jù)備份一致性的影響,從而保證了數(shù)據(jù)備份的一致性。同 時,將檢查點(diǎn)命令以檢查點(diǎn)元組的形式嵌入到待處理的普通元組中,也可以保證數(shù)據(jù)備份 操作不阻塞PE正常的數(shù)據(jù)處理,提高數(shù)據(jù)備份的效率。。
[0094] 基于上述實(shí)施例,下面分別進(jìn)一步描述源PE和目的PE詳細(xì)的處理流程,如圖7所 示,源PE的具體處理流程如下 :
[0095] 步驟701 :判斷是否接收到檢查點(diǎn)命令,如果是,執(zhí)行步驟702 ;如果否,執(zhí)行步驟 705 ;
[0096] 步驟702 :判斷檢查點(diǎn)命令的類型,如果是用于數(shù)據(jù)備份的檢查點(diǎn)命令,則執(zhí)行步 驟703 ;如果是用于數(shù)據(jù)清理的檢查點(diǎn)命令,則執(zhí)行步驟706 ;
[0097] 步驟703 :生成第一檢查點(diǎn)元組,并將生成的第一檢查點(diǎn)元組加入源PE的發(fā)送隊(duì) 列;其中,第一檢查點(diǎn)元組用于指示下游的目的PE進(jìn)行狀態(tài)數(shù)據(jù)備份;
[0098] 步驟704 :將第一檢查點(diǎn)元組發(fā)送給目的PE,以使目的PE調(diào)用自身的備份與恢復(fù) 模塊對自身的狀態(tài)數(shù)據(jù)進(jìn)行備份;
[0099] 步驟705 :源PE調(diào)用算子,以使算子根據(jù)業(yè)務(wù)處理邏輯依次對源PE接收隊(duì)列中接 收的元組進(jìn)行處理;
[0100] 步驟706 :清理發(fā)送隊(duì)列;
[0101] 步驟707 :發(fā)送清理檢查點(diǎn)命令給下游的目的PE,以使下游的目的PE調(diào)用自身的 備份與恢復(fù)模塊對自身的狀態(tài)數(shù)據(jù)進(jìn)行清理。
[0102] 相應(yīng)地,如圖8所示,目的PE的具體處理流程如下:
[0103] 步驟801 :目的PE讀取自身的元組接收隊(duì)列(recRB)中的元組數(shù)據(jù);
[0104] 步驟802 :判斷讀取到的元組的類型,若該元組為檢查點(diǎn)元組,則執(zhí)行步驟步驟 803 ;如果該元組為普通元組,則執(zhí)行步驟步驟807 ;
[0105] 需要說明的是,由于元組中攜帶有用于指示元組類型的元組類型標(biāo)識,通過該元 組類型標(biāo)識即可區(qū)分出一個元組是普通元組還是檢查點(diǎn)元組,本發(fā)明實(shí)施例中,元組類型 標(biāo)識為0表示普通元組,元組類型標(biāo)識為1表示檢查點(diǎn)元組;可以理解的是,還可以用其他 標(biāo)識來區(qū)分普通元組和檢查點(diǎn)元組,本發(fā)明實(shí)施例不做特別限定。
[0106] 步驟803 :判斷該檢查點(diǎn)元組的類型,如果為備份類型的檢查點(diǎn)元組,則執(zhí)行步驟 步驟804 ;如果為恢復(fù)類型的檢查點(diǎn)元組,則執(zhí)行步驟步驟805 ;如果為清理類型的檢查點(diǎn) 元組,則執(zhí)行步驟步驟806 ;其中,備份類型的檢查點(diǎn)元組是指用于指示所述目的PE進(jìn)行狀 態(tài)數(shù)據(jù)備份的檢查點(diǎn)元組,恢復(fù)類型的檢查點(diǎn)元組是指用于指示所述目的PE進(jìn)行狀態(tài)數(shù) 據(jù)恢復(fù)的檢查點(diǎn)元組,清理類型的檢查點(diǎn)元組是指用于指示所述目的TO進(jìn)行狀態(tài)數(shù)據(jù)清 理的檢查點(diǎn)元組;需要說明的是,在本發(fā)明的實(shí)施例中,可以通過在檢查點(diǎn)元組中設(shè)定檢查 點(diǎn)類型標(biāo)識來區(qū)分不同類型的檢查點(diǎn)元組,例如,檢查點(diǎn)類型為1表示是備份類型的檢查 點(diǎn)元組,檢查點(diǎn)類型為2表示是恢復(fù)類型的檢查點(diǎn)元組,檢查點(diǎn)類型為3表示是清理類型的 檢查點(diǎn)元組,本發(fā)明實(shí)施例不做特別限定。
[0107] 步驟804:將該元組的批號與當(dāng)前批號進(jìn)行比較,如果該元組的批號大于當(dāng)前批 號,執(zhí)行步驟步驟808 ;如果該元組的批號小于當(dāng)前批號,返回步驟步驟801 ;如果該元組的 批號等于當(dāng)前批號,說明該元組的批號符合備份要求,則設(shè)置檢查點(diǎn)狀態(tài)數(shù)據(jù)中的備份標(biāo) 記,執(zhí)行步驟步驟809 ;其中,"當(dāng)前批號"用于指示目的PE目前處理到什么批次的數(shù)據(jù),具 體而言,當(dāng)前批號為目的PE當(dāng)前處理的元組的批號;需要說明的是,這里的"當(dāng)前處理的元 組",應(yīng)當(dāng)理解為目的PE執(zhí)行上述步驟之前,最近一次讀取并處理的元組,該元組通常為普 通元組。在一個較佳的實(shí)施例中,目的PE可以維護(hù)檢查點(diǎn)狀態(tài)數(shù)據(jù),檢查點(diǎn)狀態(tài)數(shù)據(jù)的格 式如圖8所示,該檢查點(diǎn)狀態(tài)數(shù)據(jù)包括:當(dāng)前批號、備份標(biāo)記以及元組到齊標(biāo)記,備份標(biāo)記 用于指示元組的批號是否滿足備份要求;元組到齊標(biāo)記用于指示同一批次(批號相同)的 所有元組是否均已被目的PE接收并處理完畢;可以理解的是,在目的PE處理數(shù)據(jù)的過程 中,檢查點(diǎn)狀態(tài)數(shù)據(jù)是動態(tài)更新的,例如,在一個實(shí)施例中,如判斷與該元組同批次的元組 都到齊了,則將元組到齊標(biāo)記置為1,若未到齊則將元組到齊標(biāo)記設(shè)置為0 ;若該元組的批 號等于當(dāng)前批號,且與該元組同批次的數(shù)據(jù)都已被目的PE處理完畢,說明該元組的批號符 合備份要求,則將備份標(biāo)記設(shè)置為1??梢岳斫獾氖?,元組到齊標(biāo)記和備份標(biāo)記的設(shè)置方法 還可以采用其它方式,只要能區(qū)分不同的狀態(tài)即可,本發(fā)明不做特別限定。
[0108] 步驟805 :從加載自身備份的狀態(tài)數(shù)據(jù),并基于所述狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢復(fù)和數(shù) 據(jù)回放,返回步驟步驟801 ;其中,PE基于自身的狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢復(fù)和數(shù)據(jù)回放屬于本 領(lǐng)域常規(guī)技術(shù)手段,此處不再贅述。
[0109] 步驟806 :清理檢查點(diǎn)狀態(tài)數(shù)據(jù),返回步驟步驟801 ;需要說明的是,在本發(fā)明實(shí)施 例中,狀態(tài)數(shù)據(jù)備份是由檢查點(diǎn)元組觸發(fā)的,每個檢查點(diǎn)元組都對應(yīng)有的檢查點(diǎn)狀態(tài)信息, 在一個較佳的實(shí)施例中,如果在新的檢查點(diǎn)元組觸發(fā)下,PE備份狀態(tài)數(shù)據(jù)成功,則之前的檢 查點(diǎn)元組對應(yīng)的檢查點(diǎn)狀態(tài)信息,以及PE在之前的檢查點(diǎn)元組觸發(fā)下備份的狀態(tài)數(shù)據(jù)均 可以可刪除,這樣可以及時釋放存儲空間。
[0110] 步驟807 :將該元組的批號與當(dāng)前批號進(jìn)行比較,如果該元組的批號等于當(dāng)前批 號,則調(diào)用算子對該元組進(jìn)行處理,并將該元組的批號記錄為當(dāng)前批號,返回執(zhí)行步驟步驟 801 ;如果該元組的批號小于當(dāng)前批號,則丟棄該元組,返回步驟步驟801 ;如果該元組的批 號如果該元組的批號大于當(dāng)前批號,執(zhí)行步驟步驟808 ;
[0111] 步驟808 :則將該元組加入緩沖隊(duì)列,以便與當(dāng)前批號具有相同批號的所有元組 均被處理完畢之后,再處理該元組;
[0112] 步驟809 :更新源PE元組到齊標(biāo)記;
[0113] 步驟810 :若檢查點(diǎn)狀態(tài)信息中的備份標(biāo)記為1且當(dāng)前批號所有元組已到齊,則將 當(dāng)前的狀態(tài)數(shù)據(jù)進(jìn)行備份;其中,所述目的PE的狀態(tài)數(shù)據(jù)包括所述目的TO在處理所述普通 元組過程中產(chǎn)生的數(shù)據(jù);例如,在一個優(yōu)選的實(shí)施例中,目的PE可以將狀態(tài)數(shù)據(jù)備份至分 布式存儲中;相應(yīng)地,在步驟805中,目的PE具體是從所述分布式存儲器中加載自身最近一 次備份的狀態(tài)數(shù)據(jù),并基于所述最近一次備份的狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢復(fù)和數(shù)據(jù)回放;可以 理解的是,目的PE可能會在不同的時間點(diǎn),對自身的狀態(tài)數(shù)據(jù)做多次備份,在目的PE讀取 到恢復(fù)類型的檢查點(diǎn)元組之后,優(yōu)選距離讀取該檢查點(diǎn)元組時刻最近一次備份的狀態(tài)數(shù)據(jù) 來進(jìn)行狀態(tài)恢復(fù)和數(shù)據(jù)回放。
[0114] 步驟811 :清理檢查點(diǎn)狀態(tài)信息;具體地,清理檢查點(diǎn)狀態(tài)信息包括:將檢查點(diǎn)狀 態(tài)信息中的當(dāng)前批號加1,將備份標(biāo)記置為〇,將源PE元組到齊標(biāo)記清零;
[0115] 步驟812 :向下游PE派發(fā)備份類型的檢查點(diǎn)元組。
[0116] 需要說明的是,在另一個較優(yōu)的實(shí)施例中,為了進(jìn)一步提高流計(jì)算系統(tǒng)的運(yùn)行效 率,在步驟810中,目的PE可以采用異步備份的方式來備份狀態(tài)數(shù)據(jù);具體地,如圖9所示, Operator提供接口 1,目的PE通過調(diào)用接口 1提取狀態(tài)數(shù)據(jù)并存放到本地內(nèi)存,同時目的 PE通過接口 2調(diào)用備份與恢復(fù)模塊將本地內(nèi)存中的狀態(tài)數(shù)據(jù)備份至分布式存儲;具體地, 備份與恢復(fù)模塊啟動備份恢復(fù)線程,以使備份恢復(fù)線程通過分布式存儲接口將本地內(nèi)存中 的狀態(tài)數(shù)據(jù)備份至分布式存儲。
[0117] 通過上面的詳細(xì)描述可以看出,本發(fā)明實(shí)施例提供的流計(jì)算系統(tǒng)中的數(shù)據(jù)備份方 法,通過檢查點(diǎn)元組來觸發(fā)PE進(jìn)行數(shù)據(jù)備份,PE從接收隊(duì)列中讀取到檢查點(diǎn)元組之后,再 執(zhí)行備份操作,各個PE的備份操作不需要同步,使得數(shù)據(jù)備份不受PE之間數(shù)據(jù)傳遞時延的 影響;同時通過設(shè)置元組的批次,以及批號的比較,使得同一批號的所有元組到齊之后再進(jìn) 行狀態(tài)備份,避免了流計(jì)算系統(tǒng)中數(shù)據(jù)處理的并發(fā)性和無序性對數(shù)據(jù)備份一致性的影響, 從而保證了數(shù)據(jù)備份的一致性。進(jìn)一步地,PE通過接口調(diào)用,采用異步備份的方式來備份狀 態(tài)數(shù)據(jù),可以保證數(shù)據(jù)備份操作不阻塞PE正常的數(shù)據(jù)處理,提高流計(jì)算系統(tǒng)的運(yùn)行效率。
[0118] 基于上述方法實(shí)施例,本發(fā)明實(shí)施例還提供一種流計(jì)算系統(tǒng),用于實(shí)施上述方法, 如圖10所示,該流計(jì)算系統(tǒng),包括:多個工作節(jié)點(diǎn)(101-103),工作節(jié)點(diǎn)(101-103)通過調(diào) 用多個執(zhí)行單元(PE)來對元組進(jìn)行處理,所述執(zhí)行單元包括:源PE(如圖10中的PE1)和 目的PE(如圖10中的PE2);其中,所述源PE,用于將自身的發(fā)送隊(duì)列中緩存的元組發(fā)送到 所述目的PE的接收隊(duì)列中;所述目的PE,用于依次讀取自身的接收隊(duì)列中的元組并進(jìn)行 處理;其中,所述源PE的發(fā)送隊(duì)列中緩存的元組包括普通元組和檢查點(diǎn)元組,且每個元組 攜帶有用于表示該元組批次的批號;其中,檢查點(diǎn)元組用于指示PE進(jìn)行數(shù)據(jù)備份或數(shù)據(jù)恢 復(fù);所述源PE的發(fā)送隊(duì)列中不同的檢查點(diǎn)元組具有不同的批號,處于相鄰的兩個檢查點(diǎn)元 組之間的普通元組具有相同的批號,且每個檢查點(diǎn)元組的批號與其相鄰的一個普通元組的 批號相同;其中:
[0119] 所述源PE,還用于接收用于狀態(tài)數(shù)據(jù)備份的第一檢查點(diǎn)命令,根據(jù)所述第一檢查 點(diǎn)命令生成第一檢查點(diǎn)元組,將生成的檢查點(diǎn)元組加入所述源PE的發(fā)送隊(duì)列,將所述發(fā)送 隊(duì)列中緩存的所述第一檢查點(diǎn)元組發(fā)送至所述目的PE的接收隊(duì)列;
[0120] 所述目的PE,還用于從自身的接收隊(duì)列中讀取所述第一檢查點(diǎn)元組,判斷所述第 一檢查點(diǎn)元組的批號與當(dāng)前批號是否相同,以及與所述第一檢查點(diǎn)元組具有相同批號的所 有普通元組是否都已處理完畢;所述當(dāng)前批號為所述目的PE當(dāng)前處理的普通元組的批號; 若所述第一檢查點(diǎn)元組的批號與所述當(dāng)前批號相同,且與所述第一檢查點(diǎn)元組具有相同批 號的所有普通元組都已處理完畢,則將自身的狀態(tài)數(shù)據(jù)進(jìn)行備份。本發(fā)明實(shí)施例提供的流 計(jì)算系統(tǒng),通過檢查點(diǎn)元組來觸發(fā)PE進(jìn)行數(shù)據(jù)備份,各個PE從接收隊(duì)列中讀取到檢查點(diǎn)元 組之后,再執(zhí)行備份操作,各個PE的備份操作不需要同步,使得數(shù)據(jù)備份不受PE之間數(shù)據(jù) 傳遞時延的影響;同時通過設(shè)置元組的批次,以及批號的比較,使得同一批號的所有元組到 齊之后再進(jìn)行狀態(tài)備份,避免了流計(jì)算系統(tǒng)中數(shù)據(jù)處理的并發(fā)性和無序性對數(shù)據(jù)備份一致 性的影響,從而保證了數(shù)據(jù)備份的一致性。
[0121] 進(jìn)一步地,在另一個實(shí)施例中,目的PE在進(jìn)行狀態(tài)數(shù)據(jù)備份之后,如果流計(jì)算系 統(tǒng)發(fā)生故障,或者外部觸發(fā)的情形下,可以基于最近一次備份的狀態(tài)數(shù)據(jù)進(jìn)行數(shù)據(jù)恢復(fù);具 體地,所述源PE接收用于數(shù)據(jù)恢復(fù)的第二檢查點(diǎn)命令,根據(jù)所述第二檢查點(diǎn)命令生成用于 指示所述目的PE進(jìn)行狀態(tài)數(shù)據(jù)恢復(fù)的第二檢查點(diǎn)元組,將生成的第二檢查點(diǎn)元組加入所 述源PE的發(fā)送隊(duì)列,將所述發(fā)送隊(duì)列中緩存的所述第二檢查點(diǎn)元組發(fā)送至所述目的PE的 接收隊(duì)列;
[0122] 所述目的PE從自身的接收隊(duì)列中讀取所述第二檢查點(diǎn)元組,根據(jù)所述第二檢查 點(diǎn)元組加載自身備份的狀態(tài)數(shù)據(jù),并基于所述狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢復(fù)和數(shù)據(jù)回放。
[0123] 進(jìn)一步地,在另一個實(shí)施例中,目的PE在還可以定期對自身備份的狀態(tài)數(shù)據(jù)做清 理,以釋放存儲空間;具體地,所述源PE接收用于狀態(tài)數(shù)據(jù)清理的第三檢查點(diǎn)命令,根據(jù)所 述第三檢查點(diǎn)命令生成第三檢查點(diǎn)元組,將生成的第三檢查點(diǎn)元組加入所述源PE的發(fā)送 隊(duì)列,將所述發(fā)送隊(duì)列中緩存的所述第三檢查點(diǎn)元組通過消息通道發(fā)送至所述目的PE的 接收隊(duì)列;
[0124] 所述目的PE從自身的接收隊(duì)列中讀取所述第三檢查點(diǎn)元組,并根據(jù)所述第三檢 查點(diǎn)元組清理自身備份的狀態(tài)數(shù)據(jù)。
[0125] 進(jìn)一步的,在一個優(yōu)選的實(shí)施例中,上述第一檢查點(diǎn)命令、第二檢查點(diǎn)命令和第三 檢查點(diǎn)命令中是由檢查點(diǎn)PE (如圖10中的PE3)發(fā)送的;檢查點(diǎn)PE用于負(fù)責(zé)管理整個流計(jì) 算系統(tǒng)檢查點(diǎn)相關(guān)信息的發(fā)送和管理。
[0126] 在一個優(yōu)選的實(shí)施例中,該流計(jì)算系統(tǒng)還包括:分布式存儲器中104 ;
[0127] 在將自身的狀態(tài)數(shù)據(jù)進(jìn)行備份的方面,所述目的PE具體用于,通過調(diào)用第一接口 將自身當(dāng)前的狀態(tài)數(shù)據(jù)緩存到本地內(nèi)存;通過第二接口調(diào)用備份與恢復(fù)模塊,以使所述備 份與恢復(fù)模塊啟動備份恢復(fù)線程,將所述本地內(nèi)存中的狀態(tài)數(shù)據(jù)備份至分布式存儲器104。 相應(yīng)地,在加載自身備份的狀態(tài)數(shù)據(jù)的方面,所述目的PE具體用于,從分布式存儲器中104 加載自身備份的狀態(tài)數(shù)據(jù)。
[0128] 可以看到,目的PE通過接口調(diào)用,采用異步備份的方式來備份狀態(tài)數(shù)據(jù),可以保 證數(shù)據(jù)備份操作不阻塞PE正常的數(shù)據(jù)處理,提高流計(jì)算系統(tǒng)的運(yùn)行效率。
[0129] 基于上述方法及系統(tǒng)實(shí)施例,本發(fā)明實(shí)施例還提供另一種流計(jì)算系統(tǒng),如圖11所 示,該流計(jì)算系統(tǒng)包括:分布式存儲器、主控節(jié)點(diǎn)(Master)和多個工作節(jié)點(diǎn)(worker);其 中,工作節(jié)點(diǎn)通過調(diào)用多個執(zhí)行單元PE來對元組進(jìn)行處理,所述執(zhí)行單元包括:源PE和目 的PE ;主控節(jié)點(diǎn)中保存有檢查點(diǎn)信息,所述檢查點(diǎn)信息包括:檢查點(diǎn)ID,時間戳、開始時間、 完成時間,完成標(biāo)記等,;主控節(jié)點(diǎn)主要用于檢查點(diǎn)狀態(tài)信息的管理,以及當(dāng)系統(tǒng)出現(xiàn)異常 時,根據(jù)檢查點(diǎn)信息進(jìn)行系統(tǒng)恢復(fù)決策;具體地,該主控節(jié)點(diǎn),用于向所述檢查點(diǎn)PE下發(fā)用 于用于數(shù)據(jù)備份的備份命令、用于數(shù)據(jù)恢復(fù)的恢復(fù)命令或者用于狀態(tài)數(shù)據(jù)清理的數(shù)據(jù)清理 命令;所述檢查點(diǎn)PE用于,在接收到所述主控節(jié)點(diǎn)發(fā)送的備份命令后,向所述源PE發(fā)送所 述第一檢查點(diǎn)命令;或者,在接收到所述主控節(jié)點(diǎn)發(fā)送的恢復(fù)命令后,向所述源PE發(fā)送所 述第二檢查點(diǎn)命令;或者,在接收到所述主控節(jié)點(diǎn)發(fā)送的數(shù)據(jù)清理命令后,向所述源PE發(fā) 送所述第三檢查點(diǎn)命令。
[0130] 所述源PE,用于將自身的發(fā)送隊(duì)列中緩存的元組發(fā)送到所述目的PE的接收隊(duì)列 中;所述目的PE,用于讀取自身的接收隊(duì)列中的元組并進(jìn)行處理;所述源PE的發(fā)送隊(duì)列中 緩存的元組包括普通元組和檢查點(diǎn)元組,且每個元組攜帶有用于表示該元組批次的批號; 其中,檢查點(diǎn)元組用于指示PE進(jìn)行數(shù)據(jù)備份或數(shù)據(jù)恢復(fù);所述源PE的發(fā)送隊(duì)列中不同的檢 查點(diǎn)元組具有不同的批號,相鄰的兩個檢查點(diǎn)元組之間的普通元組具有相同的批號,且每 個檢查點(diǎn)元組的批號與其相鄰的一個普通元組的批號相同;其中:
[0131] 所述檢查點(diǎn)PE用于,在接收到所述主控節(jié)點(diǎn)發(fā)送的備份命令后,向所述源PE發(fā)送 所述第一檢查點(diǎn)命令;或者,在接收到所述主控節(jié)點(diǎn)發(fā)送的恢復(fù)命令后,向所述源PE發(fā)送 所述第二檢查點(diǎn)命令;或者,在接收到所述主控節(jié)點(diǎn)發(fā)送的數(shù)據(jù)清理命令后,向所述源PE 發(fā)送所述第三檢查點(diǎn)命令。
[0132] 所述源PE,還用于接收所述第一檢查點(diǎn)命令,根據(jù)所述第一檢查點(diǎn)命令生成第一 檢查點(diǎn)元組,將生成的檢查點(diǎn)元組加入所述源PE的發(fā)送隊(duì)列,將所述發(fā)送隊(duì)列中緩存的所 述第一檢查點(diǎn)元組通過消息通道發(fā)送至所述目的PE的接收隊(duì)列;
[0133] 所述目的PE,還用于從自身的接收隊(duì)列中讀取所述第一檢查點(diǎn)元組,判斷所述第 一檢查點(diǎn)元組的批號與當(dāng)前批號是否相同,以及與所述第一檢查點(diǎn)元組具有相同批號的所 有元組是否都已處理完畢;所述當(dāng)前批號為所述目的PE當(dāng)前處理的普通元組的批號;若所 述第一檢查點(diǎn)元組的批號與所述當(dāng)前批號相同,且與所述第一檢查點(diǎn)元組具有相同批號的 所有普通元組都已處理完畢,則將自身的狀態(tài)數(shù)據(jù)備份至所述分布式存儲器中。
[0134] 進(jìn)一步地,在另一個實(shí)施例中,所述源PE還用于,接收所述第二檢查點(diǎn)命令,根據(jù) 所述第二檢查點(diǎn)命令生成第二檢查點(diǎn)元組,將生成的第二檢查點(diǎn)元組加入所述源PE的發(fā) 送隊(duì)列,將所述發(fā)送隊(duì)列中緩存的所述第二檢查點(diǎn)元組通過消息通道發(fā)送至所述目的PE 的接收隊(duì)列;
[0135] 所述目的PE還用于,從自身的接收隊(duì)列中讀取所述第二檢查點(diǎn)元組,并根據(jù)所述 第二檢查點(diǎn)元組從所述分布式存儲器中加載自身的狀態(tài)數(shù)據(jù),并基于所述狀態(tài)數(shù)據(jù)進(jìn)行狀 態(tài)恢復(fù)和數(shù)據(jù)回放。
[0136] 進(jìn)一步地,在另一個實(shí)施例例中,所述源PE還用于,接收所述第三檢查點(diǎn)命令,根 據(jù)所述第三檢查點(diǎn)命令生成第三檢查點(diǎn)元組,將生成的第三檢查點(diǎn)元組加入所述源PE的 發(fā)送隊(duì)列,將所述發(fā)送隊(duì)列中緩存的所述第三檢查點(diǎn)元組通過消息通道發(fā)送至所述目的PE 的接收隊(duì)列;
[0137] 所述目的PE還用于,從自身的接收隊(duì)列中讀取所述第三檢查點(diǎn)元組,并根據(jù)所述 第二檢查點(diǎn)元組從所述分布式存儲器中清理自身備份的狀態(tài)數(shù)據(jù)。
[0138] 優(yōu)選地,如圖11所示,PE在進(jìn)行狀態(tài)數(shù)據(jù)備份時,可以先通過調(diào)用第一接口將當(dāng) 前的狀態(tài)數(shù)據(jù)緩存到本地內(nèi)存;然后通過第二接口調(diào)用備份與恢復(fù)模塊,以使所述備份與 恢復(fù)模塊啟動備份恢復(fù)線程,將所述本地內(nèi)存中的狀態(tài)數(shù)據(jù)備份至所述分布式存儲器。
[0139] 本發(fā)明實(shí)施例提供的流計(jì)算系統(tǒng)中,通過檢查點(diǎn)元組來觸發(fā)PE進(jìn)行數(shù)據(jù)備份,PE 從接收隊(duì)列中讀取到檢查點(diǎn)元組之后,再執(zhí)行備份操作,各個PE的備份操作不需要同步, 使得數(shù)據(jù)備份不受PE之間數(shù)據(jù)傳遞時延的影響;同時通過設(shè)置元組的批次,以及批號的比 較,使得同一批號的所有元組到齊之后再進(jìn)行狀態(tài)備份,避免了流計(jì)算系統(tǒng)中數(shù)據(jù)處理的 并發(fā)性和無序性對數(shù)據(jù)備份一致性的影響,從而保證了數(shù)據(jù)備份的一致性。進(jìn)一步地,通過 采用異步備份的方式,可以避免對PE造成阻塞,提高了流計(jì)算系統(tǒng)的運(yùn)行效率。
[0140] 本發(fā)明實(shí)施例還提供另一種流計(jì)算系統(tǒng),用于實(shí)現(xiàn)本發(fā)明實(shí)施例提供的數(shù)據(jù)備份 方法,如圖12所示,該流計(jì)算系統(tǒng)包括:源執(zhí)行單元(PE) 102、目的執(zhí)行單元103 ;其中,源 執(zhí)行單元102和目的執(zhí)行單元103位于不同的工作節(jié)點(diǎn)上,且源執(zhí)行單元102為目的執(zhí)行 單元103的上游執(zhí)行單元;源執(zhí)行單元102用于將自身的發(fā)送隊(duì)列中緩存的元組通過消息 通道發(fā)送到目的執(zhí)行單元103的接收隊(duì)列;其中源執(zhí)行單元102的發(fā)送隊(duì)列中緩存的元組 具體包括普通元組和檢查點(diǎn)元組,且每個元組攜帶有用于表示該元組批次的批號;其中,檢 查點(diǎn)元組用于指示執(zhí)行單元進(jìn)行數(shù)據(jù)備份或數(shù)據(jù)恢復(fù);所述源執(zhí)行單元的發(fā)送隊(duì)列中不同 的檢查點(diǎn)元組具有不同的批號,處于相鄰的兩個檢查點(diǎn)元組之間的普通元組具有相同的批 號,且每個檢查點(diǎn)元組的批號與其相鄰的一個普通元組的批號相同;其中:
[0141] 源執(zhí)行單元102包括:
[0142] 檢查點(diǎn)模塊1021,用于接收用于狀態(tài)數(shù)據(jù)備份的第一檢查點(diǎn)命令;根據(jù)所述第一 檢查點(diǎn)命令生成第一檢查點(diǎn)元組;
[0143] 發(fā)送模塊1022,用于將所述檢查點(diǎn)模塊生成的檢查點(diǎn)元組加入源執(zhí)行單元102的 發(fā)送隊(duì)列;并將所述發(fā)送隊(duì)列中緩存的元組通過消息通道發(fā)送至目的執(zhí)行單元103的接收 隊(duì)列。
[0144] 目的執(zhí)行單元103包括:業(yè)務(wù)數(shù)據(jù)處理模塊1031,用于從目的執(zhí)行單元103的接 收隊(duì)列中讀取元組(包括普通元組和檢查點(diǎn)元組)并對讀取到的元組進(jìn)行處理;
[0145] 備份與恢復(fù)模塊1032,用于當(dāng)業(yè)務(wù)數(shù)據(jù)處理模塊1031讀取到的元組為用于指示 目的執(zhí)行單元103進(jìn)行狀態(tài)數(shù)據(jù)備份的第一檢查點(diǎn)元組時,判斷所述第一檢查點(diǎn)元組的批 號與當(dāng)前批號是否相同,以及與所述第一檢查點(diǎn)元組具有相同批號的所有普通元組是否都 已處理完畢;所述當(dāng)前批號為業(yè)務(wù)數(shù)據(jù)處理模塊1031當(dāng)前處理的普通元組的批號;若所述 第一檢查點(diǎn)元組的批號與所述當(dāng)前批號相同,且與所述第一檢查點(diǎn)元組具有相同批號的所 有普通元組都已處理完畢,則將目的執(zhí)行單元103當(dāng)前的狀態(tài)數(shù)據(jù)進(jìn)行備份。
[0146] 進(jìn)一步地,在另一個實(shí)施例中,備份與恢復(fù)模塊1032,還用于當(dāng)業(yè)務(wù)數(shù)據(jù)處理模塊 1031讀取到的元組為用于指示所述目的執(zhí)行單元進(jìn)行狀態(tài)數(shù)據(jù)恢復(fù)的第一檢查點(diǎn)元組時, 加載自身備份的狀態(tài)數(shù)據(jù),并基于所述備份的狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢復(fù)和數(shù)據(jù)回放。
[0147] 進(jìn)一步地,在另一個實(shí)施例中,目的執(zhí)行單元103還維護(hù)有檢查點(diǎn)狀態(tài)信息,所述 檢查點(diǎn)狀態(tài)信息包括:所述當(dāng)前批號以及元組到齊標(biāo)記;
[0148] 相應(yīng)地,在判斷所述第一檢查點(diǎn)元組的批號與當(dāng)前批號是否相同,以及與所述第 一檢查點(diǎn)元組具有相同批號的所有普通元組是否都已到齊的方面,備份與恢復(fù)模塊1032 具體用于:
[0149] 比較所述第一檢查點(diǎn)元組的批號與所述檢查點(diǎn)狀態(tài)信息中包含的當(dāng)前批號是否 相等,以及根據(jù)所述檢查點(diǎn)狀態(tài)信息中的元組到齊標(biāo)記確定與所述第一檢查點(diǎn)元組具有相 同批號的所有普通元組是否都已處理完畢。
[0150] 本發(fā)明實(shí)施例提供的流計(jì)算系統(tǒng),源執(zhí)行單元通過檢查點(diǎn)元組來觸發(fā)下游的目的 執(zhí)行單元進(jìn)行數(shù)據(jù)備份,同時通過設(shè)置元組的批次,以及批號的比較,使得同一批號的所有 元組到齊之后再進(jìn)行狀態(tài)備份,避免了流計(jì)算系統(tǒng)中數(shù)據(jù)處理的并發(fā)性和無序性對數(shù)據(jù)備 份一致性的影響,從而保證了數(shù)據(jù)備份的一致性。
[0151] 進(jìn)一步地,在一個優(yōu)選的實(shí)施例中,所述流計(jì)算系統(tǒng)還包括:分布式存儲器104 ; 備份與恢復(fù)模塊1032具體可采用異步備份的方式對目的執(zhí)行單元103的狀態(tài)數(shù)據(jù)進(jìn)行備 份,具體地,備份與恢復(fù)模塊1032通過調(diào)用第一接口將目的執(zhí)行單元103當(dāng)前的狀態(tài)數(shù)據(jù) 緩存到本地內(nèi)存,然后再啟動備份線程,以使所述備份線程將所述本地內(nèi)存中的狀態(tài)數(shù)據(jù) 備份至所述分布式存儲器,相應(yīng)地,備份與恢復(fù)模塊1032可以從所述分布式存儲器中加載 自身最近一次備份的狀態(tài)數(shù)據(jù),并基于所述最近一次備份的狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢復(fù)和數(shù)據(jù) 回放。
[0152] 備份與恢復(fù)模塊1032具體采用上述異步備份的方式,可以避免對PE造成阻塞, 提高了流計(jì)算系統(tǒng)的運(yùn)行效率。需要說明的是,本發(fā)明提供的流計(jì)算系統(tǒng)用于實(shí)施上述方 法,其具體實(shí)現(xiàn)細(xì)節(jié),可以參照上述方法實(shí)施例,此處不再贅述。本發(fā)明實(shí)施例中的執(zhí)行單 元(PE)可以以軟件形態(tài)存在,例如進(jìn)程、線程或軟件功能模塊,也可以以硬件的形態(tài)存在, 比如處理器核,或具有數(shù)據(jù)處理能力的邏輯電路等,通過讀取存儲器中的可執(zhí)行代碼或業(yè) 務(wù)處理邏輯,實(shí)現(xiàn)本發(fā)明實(shí)施例所描述的功能,本發(fā)明不做特別限定。
[0153] 在本申請所提供的幾個實(shí)施例中,應(yīng)該理解到,所揭露數(shù)據(jù)備份和流計(jì)算系統(tǒng)可 以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的。
[0154] 所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯 示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個 網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目 的。
[0155] 另外,在本發(fā)明各個實(shí)施例提供的網(wǎng)絡(luò)設(shè)備中的各功能單元可以集成在一個處理 單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中。 上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
[0156] 所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用 時,可以存儲在一個計(jì)算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì) 上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形 式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算 機(jī)設(shè)備(可以是個人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述方法 的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM, Random Access Memory)、磁碟或者光盤等各種可以存儲程 序代碼的介質(zhì)。
[0157] 最后應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡 管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然 可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替 換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精 神和范圍。
【權(quán)利要求】
1. 一種數(shù)據(jù)備份方法,應(yīng)用于流計(jì)算系統(tǒng)中,其特征在于,所述流計(jì)算系統(tǒng)包括多個工 作節(jié)點(diǎn),所述多個工作節(jié)點(diǎn)通過調(diào)用多個執(zhí)行單元PE來對待處理的元組進(jìn)行處理,所述多 個執(zhí)行單元包括:源PE和目的PE ;所述源PE將自身的發(fā)送隊(duì)列中緩存的元組發(fā)送到所述 目的PE的接收隊(duì)列中,所述目的PE讀取自身的接收隊(duì)列中的元組并進(jìn)行處理;所述源PE 的發(fā)送隊(duì)列中緩存的元組包括普通元組和檢查點(diǎn)元組,且每個元組攜帶有用于表示該元組 批次的批號;其中,檢查點(diǎn)元組用于指示PE進(jìn)行數(shù)據(jù)備份或數(shù)據(jù)恢復(fù);所述源PE的發(fā)送隊(duì) 列中不同的檢查點(diǎn)元組具有不同的批號,處于相鄰的兩個檢查點(diǎn)元組之間的普通元組具有 相同的批號,且每個檢查點(diǎn)元組的批號與其相鄰的一個普通元組的批號相同;所述數(shù)據(jù)備 份方法包括: 所述目的PE從自身的接收隊(duì)列中讀取第一檢查點(diǎn)元組,所述第一檢查點(diǎn)元組用于指 示所述目的PE進(jìn)行狀態(tài)數(shù)據(jù)備份; 所述目的PE判斷所述第一檢查點(diǎn)元組的批號與當(dāng)前批號是否相同,以及與所述第一 檢查點(diǎn)元組具有相同批號的所有普通元組是否都已處理完畢;所述當(dāng)前批號為所述目的 PE當(dāng)前處理的普通元組的批號; 若所述第一檢查點(diǎn)元組的批號與所述當(dāng)前批號相同,且與所述第一檢查點(diǎn)元組具有相 同批號的所有普通元組都已處理完畢,則所述目的PE將自身的狀態(tài)數(shù)據(jù)進(jìn)行備份,其中, 所述目的PE的狀態(tài)數(shù)據(jù)包括所述目的PE在處理所述普通元組過程中產(chǎn)生的數(shù)據(jù)。
2. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)備份方法,其特征在于,還包括: 所述目的TO從自身的接收隊(duì)列中讀取第二檢查點(diǎn)元組,所述第二檢查點(diǎn)元組用于指 示所述目的PE進(jìn)行狀態(tài)數(shù)據(jù)恢復(fù); 所述目的PE加載自身備份的狀態(tài)數(shù)據(jù),并基于所述備份的狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢復(fù)和 數(shù)據(jù)回放。
3. 根據(jù)權(quán)利要求1或2所述的數(shù)據(jù)備份方法,其特征在于,所述目的PE中保存有檢查 點(diǎn)狀態(tài)信息,所述檢查點(diǎn)狀態(tài)信息包括:所述當(dāng)前批號以及元組到齊標(biāo)記; 所述目的PE判斷所述第一檢查點(diǎn)元組的批號與當(dāng)前批號是否相同,以及與所述第一 檢查點(diǎn)元組具有相同批號的所有普通元組是否都已處理完畢,包括: 所述目的PE比較所述第一檢查點(diǎn)元組的批號與所述檢查點(diǎn)狀態(tài)信息中包含的當(dāng)前批 號是否相等,以及根據(jù)所述檢查點(diǎn)狀態(tài)信息中的元組到齊標(biāo)記確定與所述第一檢查點(diǎn)元組 具有相同批號的所有普通元組是否都已處理完畢。
4. 根據(jù)權(quán)利要求3所述的數(shù)據(jù)備份方法,其特征在于,還包括: 所述目的PE從自身的接收隊(duì)列中讀取第三檢查點(diǎn)元組,所述第三檢查點(diǎn)元組用于指 示所述目的PE進(jìn)行狀態(tài)數(shù)據(jù)清理; 所述目的PE清理自身備份的狀態(tài)數(shù)據(jù),并清理所述檢查點(diǎn)狀態(tài)信息。
5. 根據(jù)權(quán)利要求4所述的數(shù)據(jù)備份方法,其特征在于,所述清理所述檢查點(diǎn)狀態(tài)信息 包括: 將所述檢查點(diǎn)狀態(tài)信息中的當(dāng)前批號加1,并將元組到齊標(biāo)記清零。
6. 根據(jù)權(quán)利要求1-5任一項(xiàng)所述的數(shù)據(jù)備份方法,其特征在于,所述流計(jì)算系統(tǒng)還包 括:分布式存儲器;所述目的PE將自身的狀態(tài)數(shù)據(jù)進(jìn)行備份,包括: 所述目的PE通過調(diào)用第一接口將當(dāng)前的狀態(tài)數(shù)據(jù)緩存到本地內(nèi)存; 所述目的PE通過第二接口調(diào)用備份與恢復(fù)模塊,以使所述備份與恢復(fù)模塊啟動備份 線程,將所述本地內(nèi)存中的狀態(tài)數(shù)據(jù)備份至所述分布式存儲器。
7. 根據(jù)權(quán)利要求6所述的數(shù)據(jù)備份方法,其特征在于,所述目的PE加載自身備份的狀 態(tài)數(shù)據(jù),并基于所述備份的狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢復(fù)和數(shù)據(jù)回放,包括: 所述目的PE從所述分布式存儲器中加載自身最近一次備份的狀態(tài)數(shù)據(jù),并基于所述 最近一次備份的狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢復(fù)和數(shù)據(jù)回放。
8. 根據(jù)權(quán)利要求3-7任一項(xiàng)所述的數(shù)據(jù)備份方法,其特征在于,還包括: 目的PE從自身的接收隊(duì)列中讀取普通元組; 將該普通元組的批號與當(dāng)前批號進(jìn)行比較,如果該元組的批號等于當(dāng)前批號,則對該 普通元組進(jìn)行處理。
9. 根據(jù)權(quán)利要求8所述的數(shù)據(jù)備份方法,其特征在于,還包括: 如果該普通元組的批號小于當(dāng)前批號,則丟棄該普通元組,并從所述接收隊(duì)列中讀取 下一個元組。
10. 根據(jù)權(quán)利要求8或9所述的數(shù)據(jù)備份方法,其特征在于,還包括: 如果該普通元組的批號大于當(dāng)前批號,則將所述普通元組加入緩存隊(duì)列,并更新所述 檢查點(diǎn)狀態(tài)信息中的元組到齊標(biāo)記。
11. 一種數(shù)據(jù)備份方法,其特征在于,應(yīng)用于流計(jì)算系統(tǒng)中,所述流計(jì)算系統(tǒng)包括多個 工作節(jié)點(diǎn),所述多個工作節(jié)點(diǎn)通過調(diào)用多個執(zhí)行單元PE來對待處理的元組進(jìn)行處理,所述 多個執(zhí)行單元包括:源PE和目的PE ;所述源PE將自身的發(fā)送隊(duì)列中緩存的元組發(fā)送到所 述目的PE的接收隊(duì)列中,所述目的PE讀取自身的接收隊(duì)列中的元組并進(jìn)行處理;所述源 PE的發(fā)送隊(duì)列中緩存的元組包括普通元組和檢查點(diǎn)元組,且每個元組攜帶有用于表示該元 組批次的批號;其中,檢查點(diǎn)元組用于指示PE進(jìn)行數(shù)據(jù)備份或數(shù)據(jù)恢復(fù);所述源PE的發(fā)送 隊(duì)列中不同的檢查點(diǎn)元組具有不同的批號,處于相鄰的兩個檢查點(diǎn)元組之間的普通元組具 有相同的批號,且每個檢查點(diǎn)元組的批號與其相鄰的一個普通元組的批號相同;所述數(shù)據(jù) 備份方法包括: 源PE接收用于狀態(tài)數(shù)據(jù)備份的第一檢查點(diǎn)命令; 源PE根據(jù)所述第一檢查點(diǎn)命令生成第一檢查點(diǎn)元組,并將生成的檢查點(diǎn)元組加入所 述源PE的發(fā)送隊(duì)列; 所述源PE將所述發(fā)送隊(duì)列中緩存的所述第一檢查點(diǎn)元組發(fā)送至目的PE的接收隊(duì)列, 以使所述目的PE從所述接收隊(duì)列中讀取所述第一檢查點(diǎn)元組之后,若判斷所述第一檢查 點(diǎn)元組的批號與當(dāng)前批號相同,且與所述第一檢查點(diǎn)元組具有相同批號的所有普通元組均 已處理完畢時,將所述目的PE當(dāng)前的狀態(tài)數(shù)據(jù)進(jìn)行備份;其中,所述目的PE的狀態(tài)數(shù)據(jù)包 括所述目的PE在處理所述普通元組過程中產(chǎn)生的數(shù)據(jù)。
12. 根據(jù)權(quán)利要求11所述的數(shù)據(jù)備份方法,其特征在于,所述流計(jì)算系統(tǒng)還包括:用于 管理所述多個工作節(jié)點(diǎn)的主控節(jié)點(diǎn);所述多個工作節(jié)點(diǎn)包括檢查點(diǎn)PE所處的工作節(jié)點(diǎn);所 述源PE接收用于狀態(tài)數(shù)據(jù)備份的第一檢查點(diǎn)命令,包括: 所述源PE接收所述流計(jì)算系統(tǒng)的主控節(jié)點(diǎn)或者所述檢查點(diǎn)PE發(fā)送的第一檢查點(diǎn)命 令。
13. -種流計(jì)算系統(tǒng)中的目的執(zhí)行單元,其特征在于,所述流計(jì)算系統(tǒng)包括源執(zhí)行單元 和所述目的執(zhí)行單元;所述源執(zhí)行單元用于將自身的發(fā)送隊(duì)列中緩存的元組發(fā)送到所述目 的執(zhí)行單元的接收隊(duì)列,所述源執(zhí)行單元的發(fā)送隊(duì)列中緩存的元組包括普通元組和檢查點(diǎn) 元組,且每個元組攜帶有用于表示該元組批次的批號;其中,檢查點(diǎn)元組用于指示執(zhí)行單元 進(jìn)行數(shù)據(jù)備份或數(shù)據(jù)恢復(fù);所述源執(zhí)行單元的發(fā)送隊(duì)列中不同的檢查點(diǎn)元組具有不同的批 號,處于相鄰的兩個檢查點(diǎn)元組之間的普通元組具有相同的批號,且每個檢查點(diǎn)元組的批 號與其相鄰的一個普通元組的批號相同; 所述目的執(zhí)行單元包括:業(yè)務(wù)數(shù)據(jù)處理模塊,用于從所述目的執(zhí)行單元的接收隊(duì)列中 讀取元組并對讀取到的元組進(jìn)行處理; 備份與恢復(fù)模塊,用于當(dāng)所述業(yè)務(wù)數(shù)據(jù)處理模塊讀取到的元組為用于指示所述目的 執(zhí)行單元進(jìn)行狀態(tài)數(shù)據(jù)備份的第一檢查點(diǎn)元組時,判斷所述第一檢查點(diǎn)元組的批號與當(dāng)前 批號是否相同,以及與所述第一檢查點(diǎn)元組具有相同批號的所有普通元組是否都已處理完 畢;所述當(dāng)前批號為所述業(yè)務(wù)數(shù)據(jù)處理模塊當(dāng)前處理的普通元組的批號;若所述第一檢查 點(diǎn)元組的批號與所述當(dāng)前批號相同,且與所述第一檢查點(diǎn)元組具有相同批號的所有普通元 組都已處理完畢,則將所述目的執(zhí)行單元的狀態(tài)數(shù)據(jù)進(jìn)行備份;其中,所述目的執(zhí)行單元的 狀態(tài)數(shù)據(jù)包括所述業(yè)務(wù)數(shù)據(jù)處理模塊在處理元組的過程中產(chǎn)生的數(shù)據(jù)。
14. 根據(jù)權(quán)利要求13所述的目的執(zhí)行單元,其特征在于,所述備份與恢復(fù)模塊,還用于 當(dāng)所述業(yè)務(wù)數(shù)據(jù)處理模塊讀取到的元組為用于指示所述目的執(zhí)行單元進(jìn)行狀態(tài)數(shù)據(jù)恢復(fù) 的第一檢查點(diǎn)元組時,加載自身備份的狀態(tài)數(shù)據(jù),并基于所述備份的狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢 復(fù)和數(shù)據(jù)回放。
15. 根據(jù)權(quán)利要求13或14所述的目的執(zhí)行單元,其特征在于,所述目的PE中保存有檢 查點(diǎn)狀態(tài)信息,所述檢查點(diǎn)狀態(tài)信息包括:所述當(dāng)前批號以及元組到齊標(biāo)記; 在判斷所述第一檢查點(diǎn)元組的批號與當(dāng)前批號是否相同,以及與所述第一檢查點(diǎn)元組 具有相同批號的所有普通元組是否都已到齊的方面,所述備份與恢復(fù)模塊具體用于: 比較所述第一檢查點(diǎn)元組的批號與所述檢查點(diǎn)狀態(tài)信息中包含的當(dāng)前批號是否相等, 以及根據(jù)所述檢查點(diǎn)狀態(tài)信息中的元組到齊標(biāo)記確定與所述第一檢查點(diǎn)元組具有相同批 號的所有普通元組是否都已處理完畢。
16. 根據(jù)權(quán)利要求13-15任一項(xiàng)所述的目的執(zhí)行單元,其特征在于,所述流計(jì)算系統(tǒng)還 包括:分布式存儲器;在將所述目的執(zhí)行單元的狀態(tài)數(shù)據(jù)進(jìn)行備份的方面,所述備份與恢 復(fù)模塊具體用于: 通過調(diào)用第一接口將所述目的PE當(dāng)前的狀態(tài)數(shù)據(jù)緩存到本地內(nèi)存; 啟動備份線程,以使所述備份線程將所述本地內(nèi)存中的狀態(tài)數(shù)據(jù)備份至所述分布式存 儲器。
17. 根據(jù)權(quán)利要求16所述的目的執(zhí)行單元,其特征在于,在加載自身備份的狀態(tài)數(shù)據(jù), 并基于所述備份的狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢復(fù)和數(shù)據(jù)回放的方面,所述備份與恢復(fù)模塊具體用 于: 從所述分布式存儲器中加載自身最近一次備份的狀態(tài)數(shù)據(jù),并基于所述最近一次備份 的狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢復(fù)和數(shù)據(jù)回放。
18. -種流計(jì)算系統(tǒng)中的源執(zhí)行單元,其特征在于,所述流計(jì)算系統(tǒng)包括所述源執(zhí)行 單元和目的執(zhí)行單元;所述源執(zhí)行單元的發(fā)送隊(duì)列中緩存有待發(fā)送給所述目的執(zhí)行單元的 元組,且所述待發(fā)送的元組包括普通元組和檢查點(diǎn)元組,且每個元組攜帶有用于表示該元 組批次的批號;其中,檢查點(diǎn)元組用于指示執(zhí)行單元進(jìn)行數(shù)據(jù)備份或數(shù)據(jù)恢復(fù);所述源執(zhí) 行單元的發(fā)送隊(duì)列中不同的檢查點(diǎn)元組具有不同的批號,處于相鄰的兩個檢查點(diǎn)元組之間 的普通元組具有相同的批號,且每個檢查點(diǎn)元組的批號與其相鄰的一個普通元組的批號相 同;所述源執(zhí)行單元包括: 檢查點(diǎn)模塊,用于接收用于狀態(tài)數(shù)據(jù)備份的第一檢查點(diǎn)命令;根據(jù)所述第一檢查點(diǎn)命 令生成第一檢查點(diǎn)元組; 發(fā)送模塊,用于將所述檢查點(diǎn)模塊生成的檢查點(diǎn)元組加入所述源執(zhí)行單元的發(fā)送隊(duì) 列;并將所述發(fā)送隊(duì)列中緩存的元組發(fā)送至所述目的執(zhí)行單元的接收隊(duì)列,以使所述目的 執(zhí)行單元從所述接收隊(duì)列中讀取所述第一檢查點(diǎn)元組之后,若判斷所述第一檢查點(diǎn)元組的 批號與當(dāng)前批號相同,且與所述第一檢查點(diǎn)元組具有相同批號的所有普通元組均已處理完 畢時,將所述目的執(zhí)行單元當(dāng)前的狀態(tài)數(shù)據(jù)進(jìn)行備份;其中,所述目的執(zhí)行單元的狀態(tài)數(shù)據(jù) 包括所述目的執(zhí)行單元在處理元組的過程中產(chǎn)生的數(shù)據(jù)。
19. 一種流計(jì)算系統(tǒng),其特征在于,包括:多個工作節(jié)點(diǎn),所述多個工作節(jié)點(diǎn)通過調(diào)用 多個執(zhí)行單元(PE)來對元組進(jìn)行處理,所述多個執(zhí)行單元包括:源PE和目的PE;其中,所 述源PE,用于將自身的發(fā)送隊(duì)列中緩存的元組發(fā)送到所述目的PE的接收隊(duì)列中;所述目的 PE,用于讀取自身的接收隊(duì)列中的元組并進(jìn)行處理;其中,所述源PE的發(fā)送隊(duì)列中緩存的 元組包括普通元組和檢查點(diǎn)元組,且每個元組攜帶有用于表示該元組批次的批號;其中,檢 查點(diǎn)元組用于指示PE進(jìn)行數(shù)據(jù)備份或數(shù)據(jù)恢復(fù);所述源PE的發(fā)送隊(duì)列中不同的檢查點(diǎn)元 組具有不同的批號,處于相鄰的兩個檢查點(diǎn)元組之間的普通元組具有相同的批號,且每個 檢查點(diǎn)元組的批號與其相鄰的一個普通元組的批號相同;其中: 所述源PE,還用于接收用于狀態(tài)數(shù)據(jù)備份的第一檢查點(diǎn)命令,根據(jù)所述第一檢查點(diǎn)命 令生成第一檢查點(diǎn)元組,將生成的檢查點(diǎn)元組加入所述源PE的發(fā)送隊(duì)列,將所述發(fā)送隊(duì)列 中緩存的所述第一檢查點(diǎn)元組發(fā)送至所述目的PE的接收隊(duì)列; 所述目的PE,還用于從自身的接收隊(duì)列中讀取所述第一檢查點(diǎn)元組,若判斷所述第一 檢查點(diǎn)元組的批號與當(dāng)前批號相同,且與所述第一檢查點(diǎn)元組具有相同批號的所有普通元 組都已處理完畢,則將自身的狀態(tài)數(shù)據(jù)進(jìn)行備份;其中,所述當(dāng)前批號為所述目的PE當(dāng)前 處理的普通元組的批號;所述目的PE的狀態(tài)數(shù)據(jù)包括所述目的PE在處理所述普通元組過 程中產(chǎn)生的數(shù)據(jù)。
20. 根據(jù)權(quán)利要求19所述的流計(jì)算系統(tǒng),其特征在于, 所述源PE還用于,接收用于數(shù)據(jù)恢復(fù)的第二檢查點(diǎn)命令,根據(jù)所述第二檢查點(diǎn)命令生 成用于指示所述目的PE進(jìn)行狀態(tài)數(shù)據(jù)恢復(fù)的第二檢查點(diǎn)元組,將生成的第二檢查點(diǎn)元組 加入所述源PE的發(fā)送隊(duì)列,將所述發(fā)送隊(duì)列中緩存的所述第二檢查點(diǎn)元組發(fā)送至所述目 的PE的接收隊(duì)列; 所述目的PE還用于,從自身的接收隊(duì)列中讀取所述第二檢查點(diǎn)元組,根據(jù)所述第二檢 查點(diǎn)元組加載自身備份的狀態(tài)數(shù)據(jù),并基于所述狀態(tài)數(shù)據(jù)進(jìn)行狀態(tài)恢復(fù)和數(shù)據(jù)回放。
21. 根據(jù)權(quán)利要求19或20所述的流計(jì)算系統(tǒng),其特征在于, 所述源PE還用于,接收用于狀態(tài)數(shù)據(jù)清理的第三檢查點(diǎn)命令,根據(jù)所述第三檢查點(diǎn)命 令生成第三檢查點(diǎn)元組,將生成的第三檢查點(diǎn)元組加入所述源PE的發(fā)送隊(duì)列,將所述發(fā)送 隊(duì)列中緩存的所述第三檢查點(diǎn)元組通過消息通道發(fā)送至所述目的PE的接收隊(duì)列; 所述目的PE還用于,從自身的接收隊(duì)列中讀取所述第三檢查點(diǎn)元組,并根據(jù)所述第三 檢查點(diǎn)元組清理自身備份的狀態(tài)數(shù)據(jù)。
22. 根據(jù)權(quán)利要求19-21任一項(xiàng)所述的流計(jì)算系統(tǒng),其特征在于,所述流計(jì)算系統(tǒng)還包 括:分布式存儲器; 在將自身的狀態(tài)數(shù)據(jù)進(jìn)行備份的方面,所述目的PE具體用于,通過調(diào)用第一接口將自 身當(dāng)前的狀態(tài)數(shù)據(jù)緩存到本地內(nèi)存;通過第二接口調(diào)用備份與恢復(fù)模塊,以使所述備份與 恢復(fù)模塊啟動備份恢復(fù)線程,將所述本地內(nèi)存中的狀態(tài)數(shù)據(jù)備份至所述分布式存儲器。
23. 根據(jù)權(quán)利要求22所述的流計(jì)算系統(tǒng),其特征在于,在加載自身備份的狀態(tài)數(shù)據(jù)的 方面,所述目的PE具體用于,從所述分布式存儲器中加載自身備份的狀態(tài)數(shù)據(jù)。
24. 根據(jù)權(quán)利要求19-23任一項(xiàng)所述的流計(jì)算系統(tǒng),其特征在于,所述流計(jì)算系統(tǒng)還包 括:主控節(jié)點(diǎn),用于向所述源PE發(fā)送所述第一檢查點(diǎn)命令、第二檢查點(diǎn)命令和第三檢查點(diǎn) 命令中的至少一個。
25. 根據(jù)權(quán)利要求19-23任一項(xiàng)所述的流計(jì)算系統(tǒng),其特征在于,所述流計(jì)算系統(tǒng)還包 括:主控節(jié)點(diǎn);所述多個工作節(jié)點(diǎn)包括檢查點(diǎn)PE所處的工作節(jié)點(diǎn); 所述主控節(jié)點(diǎn),用于向所述檢查點(diǎn)PE下發(fā)用于用于數(shù)據(jù)備份的備份命令、用于數(shù)據(jù)恢 復(fù)的恢復(fù)命令或者用于狀態(tài)數(shù)據(jù)清理的數(shù)據(jù)清理命令;所述檢查點(diǎn)PE用于,在接收到所述 主控節(jié)點(diǎn)發(fā)送的備份命令后,向所述源PE發(fā)送所述第一檢查點(diǎn)命令;或者,在接收到所述 主控節(jié)點(diǎn)發(fā)送的恢復(fù)命令后,向所述源PE發(fā)送所述第二檢查點(diǎn)命令;或者,在接收到所述 主控節(jié)點(diǎn)發(fā)送的數(shù)據(jù)清理命令后,向所述源PE發(fā)送所述第三檢查點(diǎn)命令。
【文檔編號】G06F11/14GK104063293SQ201410317676
【公開日】2014年9月24日 申請日期:2014年7月4日 優(yōu)先權(quán)日:2014年7月4日
【發(fā)明者】夏命榛, 史云龍 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
建瓯市| 普安县| 白银市| 安平县| 南部县| 化隆| 象州县| 佛山市| 来宾市| 拉萨市| 长汀县| 新野县| 福建省| 襄樊市| 德江县| 惠州市| 连平县| 太仆寺旗| 抚顺县| 鄂温| 苗栗县| 疏附县| 康马县| 调兵山市| 景宁| 平泉县| 岳阳县| 法库县| 渝北区| 思南县| 甘谷县| 佛坪县| 绥德县| 西平县| 长岭县| 山阳县| 志丹县| 曲周县| 黑龙江省| 武胜县| 双峰县|