一種數(shù)據(jù)處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本申請涉及計算機(jī)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)處理方法及裝置。
【背景技術(shù)】
[0002] 流數(shù)據(jù)是一組順序、大量、快速、連續(xù)到達(dá)的數(shù)據(jù)序列,一般情況下,流數(shù)據(jù)可被視 為一個隨時間延續(xù)而無限增長的動態(tài)數(shù)據(jù)集合。由于流數(shù)據(jù)具有數(shù)據(jù)量巨大的特性,因此, 通常采用分布式服務(wù)器處理流數(shù)據(jù)。
[0003] 目前,分布式服務(wù)器處理流數(shù)據(jù)的過程一般是:分布式服務(wù)器接收目標(biāo)設(shè)備發(fā)送 的流數(shù)據(jù),并對接收到的流數(shù)據(jù)進(jìn)行處理,再將接收到的流數(shù)據(jù)和處理后得到的結(jié)果數(shù)據(jù) 發(fā)送給數(shù)據(jù)庫存儲。
[0004] 對于流數(shù)據(jù)的處理而言,主要的處理是去重處理和累加處理。例如,要對某電子商 務(wù)網(wǎng)站各商品類目下每天的買家數(shù)量進(jìn)行統(tǒng)計時,則一個分布式服務(wù)器接收該電子商務(wù)網(wǎng) 站實時發(fā)送的一個商品類目下的新增訂單數(shù)據(jù),也就是流數(shù)據(jù),并對訂單數(shù)據(jù)中攜帶相同 買家標(biāo)識的數(shù)據(jù)進(jìn)行去重處理,將去重處理后的數(shù)據(jù)的數(shù)量累加到結(jié)果數(shù)據(jù)中,最后將去 重處理后的數(shù)據(jù)和結(jié)果數(shù)據(jù)發(fā)送給數(shù)據(jù)庫存儲。
[0005] 假設(shè)某個分布式服務(wù)器接收到的流數(shù)據(jù)是用戶A購買了某商品類目下的商品1、 用戶B購買了該商品類目下的商品2、用戶A購買了該商品類目下的商品2,則該分布式服 務(wù)器對接收到的這三條流數(shù)據(jù)進(jìn)行去重處理后得到的數(shù)據(jù)就是用戶A和用戶B,再將去重 處理后的這兩條數(shù)據(jù)累加到結(jié)果數(shù)據(jù)中,就得到了該商品類目下的買家數(shù)量。
[0006] 可見,由于分布式服務(wù)器在對流數(shù)據(jù)進(jìn)行去重處理時,需要對比當(dāng)前接收的流數(shù) 據(jù)與之前接收的流數(shù)據(jù)中指定類型的信息(如上述用戶標(biāo)識)是否相同,因此,分布式服務(wù) 器在處理流數(shù)據(jù)的整個過程中,都需要把流數(shù)據(jù)和結(jié)果數(shù)據(jù)存儲在自身的內(nèi)存中。
[0007] 在上述過程中,各分布式服務(wù)器由應(yīng)用管理中心統(tǒng)一進(jìn)行管理控制,各分布式服 務(wù)器會按照設(shè)定的時間間隔向應(yīng)用管理中心發(fā)送心跳檢測報文,如果應(yīng)用管理中心監(jiān)測 到某個分布式服務(wù)器沒有在設(shè)定時間內(nèi)發(fā)來心跳檢測報文,則確定該分布式服務(wù)器出現(xiàn)故 障,控制該分布式服務(wù)器進(jìn)行重啟。
[0008] 然而,對于一個分布式服務(wù)器來說,當(dāng)該分布式服務(wù)器重啟后會清除自身內(nèi)存中 的所有數(shù)據(jù),而由于分布式服務(wù)器處理后續(xù)的流數(shù)據(jù)是要基于之前已經(jīng)處理過的流數(shù)據(jù)和 結(jié)果數(shù)據(jù)進(jìn)行處理的,因此,在清除自身內(nèi)存中的數(shù)據(jù)后,分布式服務(wù)器需要從數(shù)據(jù)庫中讀 取該分布式服務(wù)器之前已經(jīng)處理過的流數(shù)據(jù)和結(jié)果數(shù)據(jù),以便基于讀取的流數(shù)據(jù)和結(jié)果數(shù) 據(jù)對后續(xù)接收到的流數(shù)據(jù)進(jìn)行處理。但由于數(shù)據(jù)庫中存儲了多個分布式服務(wù)器發(fā)送的處理 后的流數(shù)據(jù)和結(jié)果數(shù)據(jù),重啟后的該分布式服務(wù)器卻并不能獲知數(shù)據(jù)庫中存儲的哪些流數(shù) 據(jù)和結(jié)果數(shù)據(jù)是該分布式服務(wù)器處理后續(xù)的流數(shù)據(jù)所要基于的流數(shù)據(jù)和結(jié)果數(shù)據(jù),也即, 重啟后的該分布式服務(wù)器并不能獲知數(shù)據(jù)庫中存儲的哪些流數(shù)據(jù)和結(jié)果數(shù)據(jù)是該分布式 服務(wù)器之前發(fā)送給數(shù)據(jù)庫的流數(shù)據(jù)和結(jié)果數(shù)據(jù),從而,分布式服務(wù)器重啟后只能從數(shù)據(jù)庫 中讀取全量的流數(shù)據(jù)和結(jié)果數(shù)據(jù),而由于數(shù)據(jù)庫中存儲的不只是出現(xiàn)故障的這一個分布式 服務(wù)器發(fā)來的流數(shù)據(jù),而是所有分布式服務(wù)器發(fā)來的流數(shù)據(jù),因此,出現(xiàn)故障的分布式服務(wù) 器重啟后從數(shù)據(jù)庫中讀取全量的流數(shù)據(jù)的數(shù)據(jù)量是非常巨大的,這不僅會浪費網(wǎng)絡(luò)資源, 而且也很可能會造成分布式服務(wù)器自身的內(nèi)存溢出而再次出現(xiàn)故障并重啟,從而陷入不斷 重啟的死循環(huán),無法正常處理流數(shù)據(jù)。
[0009] 例如,由服務(wù)器1、服務(wù)器2、服務(wù)器3這三個分布式服務(wù)器分別統(tǒng)計類目a、類目 b、類目c這三個商品類目下的處理流數(shù)據(jù),這三個分布式服務(wù)器都將自身去重處理后的流 數(shù)據(jù)以及累加處理后得到的結(jié)果數(shù)據(jù)發(fā)送給數(shù)據(jù)庫存儲。當(dāng)服務(wù)器1出現(xiàn)故障而重啟后, 由于其并不能獲知數(shù)據(jù)庫中存儲的哪些流數(shù)據(jù)是服務(wù)器1之前發(fā)送給數(shù)據(jù)庫的,因此服務(wù) 器1只能從數(shù)據(jù)庫中讀取全量的流數(shù)據(jù),即,服務(wù)器1從數(shù)據(jù)庫中讀取的流數(shù)據(jù)不僅僅是之 前服務(wù)器1發(fā)送給數(shù)據(jù)庫存儲的流數(shù)據(jù),而是之前這三個服務(wù)器發(fā)送給數(shù)據(jù)庫存儲的全部 流數(shù)據(jù),其數(shù)據(jù)量遠(yuǎn)大于服務(wù)器1發(fā)送給數(shù)據(jù)庫存儲的流數(shù)據(jù)的數(shù)據(jù)量,這樣不僅浪費了 傳輸這些數(shù)據(jù)所消耗的網(wǎng)絡(luò)資源,服務(wù)器1也很有可能由于自身的內(nèi)存溢出而再次故障重 啟。
【發(fā)明內(nèi)容】
[0010] 本申請實施例提供一種數(shù)據(jù)處理方法及裝置,用以解決現(xiàn)有技術(shù)中當(dāng)服務(wù)器故障 重啟后從數(shù)據(jù)庫中讀取流數(shù)據(jù)時浪費網(wǎng)絡(luò)資源,也很可能再次發(fā)生故障的問題。
[0011] 本申請實施例提供的一種數(shù)據(jù)處理方法,包括:
[0012] 分布式服務(wù)器接收流數(shù)據(jù);并
[0013] 基于自身保存的對之前接收到的前續(xù)流數(shù)據(jù)進(jìn)行第一處理得到的第一前續(xù)處理 數(shù)據(jù),對接收到的流數(shù)據(jù)進(jìn)行第一處理得到第一處理數(shù)據(jù);
[0014] 在所述第一處理數(shù)據(jù)中添加所述分布式服務(wù)器的服務(wù)器標(biāo)識,將添加了所述服務(wù) 器標(biāo)識的第一處理數(shù)據(jù)發(fā)送給數(shù)據(jù)庫存儲;
[0015] 當(dāng)所述分布式服務(wù)器重啟后,根據(jù)自身的服務(wù)器標(biāo)識,從所述數(shù)據(jù)庫中讀取攜帶 所述服務(wù)器標(biāo)識的第一處理數(shù)據(jù),并基于讀取的第一處理數(shù)據(jù)對接收到的后續(xù)流數(shù)據(jù)繼續(xù) 進(jìn)行第一處理。
[0016] 本申請實施例提供的一種數(shù)據(jù)處理裝置,包括:
[0017] 接收模塊,用于接收流數(shù)據(jù);
[0018] 第一處理模塊,用于基于自身保存的對之前接收到的前續(xù)流數(shù)據(jù)進(jìn)行第一處理得 到的第一前續(xù)處理數(shù)據(jù),對接收到的流數(shù)據(jù)進(jìn)行第一處理得到第一處理數(shù)據(jù);
[0019] 第一添加模塊,用于在所述第一處理數(shù)據(jù)中添加所述裝置的服務(wù)器標(biāo)識;
[0020] 發(fā)送模塊,用于將添加了所述服務(wù)器標(biāo)識的第一處理數(shù)據(jù)發(fā)送給數(shù)據(jù)庫存儲;
[0021] 第一讀取模塊,用于當(dāng)所述裝置重啟后,根據(jù)所述裝置的服務(wù)器標(biāo)識,從所述數(shù)據(jù) 庫中讀取攜帶所述服務(wù)器標(biāo)識的第一處理數(shù)據(jù);
[0022] 所述第一處理模塊還用于,基于讀取的第一處理數(shù)據(jù)對所述接收模塊接收到的后 續(xù)流數(shù)據(jù)繼續(xù)進(jìn)行第一處理。
[0023] 本申請實施例提供一種數(shù)據(jù)處理方法及裝置,該方法分布式服務(wù)器對接收到的流 數(shù)據(jù)進(jìn)行第一處理得到第一處理數(shù)據(jù)后,向第一處理數(shù)據(jù)中添加該分布式服務(wù)器的服務(wù)器 標(biāo)識,并發(fā)送給數(shù)據(jù)庫存儲,當(dāng)分布式服務(wù)器重啟后,從數(shù)據(jù)庫中讀取攜帶該服務(wù)器標(biāo)識的 第一處理數(shù)據(jù),并基于讀取的第一處理數(shù)據(jù)對接收到的后續(xù)流數(shù)據(jù)繼續(xù)進(jìn)行第一處理。通 過上述方法,分布式服務(wù)器在發(fā)生故障并重啟后,無需從數(shù)據(jù)庫中讀取全量的第一處理數(shù) 據(jù),只需讀取攜帶該分布式服務(wù)器自身的服務(wù)器標(biāo)識的第一處理數(shù)據(jù)即可,因此可有效降 低分布式服務(wù)器從數(shù)據(jù)庫中讀取數(shù)據(jù)的數(shù)據(jù)量,從而節(jié)省了網(wǎng)絡(luò)資源,分布式服務(wù)器也不 會因讀取的數(shù)據(jù)過多導(dǎo)致自身內(nèi)存溢出而再次發(fā)生故障。
【附圖說明】
[0024] 此處所說明的附圖用來提供對本申請的進(jìn)一步理解,構(gòu)成本申請的一部分,本申 請的示意性實施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當(dāng)限定。在附圖中:
[0025]