亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

流計算處理方法、設(shè)備和系統(tǒng)的制作方法

文檔序號:6504768閱讀:225來源:國知局
流計算處理方法、設(shè)備和系統(tǒng)的制作方法
【專利摘要】本申請公開了一種流計算處理方法、設(shè)備和系統(tǒng),通過應(yīng)用本申請實施例的技術(shù)方案,在分布式流計算集群進行當(dāng)前批次消息的處理過程中,將當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到數(shù)據(jù)庫中,進行持久化操作,同時,將當(dāng)前批次消息的實時計算結(jié)果存儲到內(nèi)存中,以供上游應(yīng)用進行數(shù)據(jù)查詢,從而,在滿足持久化操作需求實現(xiàn)容錯和故障可恢復(fù)保障的前提下,將上游應(yīng)用對實時計算結(jié)果的查詢操作通過內(nèi)存進行提供,重新定義了數(shù)據(jù)流的走向,使上游應(yīng)用不與數(shù)據(jù)庫直接打交道,避免了數(shù)據(jù)庫訪問連接數(shù)的限制,同時,節(jié)省了由于頻繁訪問數(shù)據(jù)庫而導(dǎo)致的大量磁盤I/O,達到大幅提升并發(fā)訪問性能的效果。
【專利說明】流計算處理方法、設(shè)備和系統(tǒng)

【技術(shù)領(lǐng)域】
[0001]本申請涉及通信領(lǐng)域,尤其涉及一種流計算處理方法、設(shè)備和系統(tǒng)。

【背景技術(shù)】
[0002]流計算(Stream Computing)產(chǎn)品主要用于實時計算。如圖1所示,為現(xiàn)有技術(shù)中最基礎(chǔ)的流計算數(shù)據(jù)流的示意圖。
[0003]在圖1所示的場景中,消息中間件發(fā)送的消息流是一條一條的,而通常流計算產(chǎn)品對消息流進行消費是按批次為單位的,即將若干條消息捆綁在一個批次中,一個批次中消息流的條數(shù)是可以調(diào)整的。
[0004]為了實現(xiàn)保序與容錯的需求,流計算框架設(shè)計了一種通用的消費策略:只有對一個批次的消費完全成功,并對消息發(fā)送組件做出應(yīng)答后,下一批次的消息才能發(fā)送出來。如果本批次消息在消費過程中產(chǎn)生錯誤,或者在規(guī)定的時間內(nèi)沒有對消息發(fā)送組件做出應(yīng)答,那么該批次的消息會由消息發(fā)送組件重新發(fā)送。
[0005]消息中間件集群與分布式流計算集群是兩個獨立的集群。消息中間件維護著一個關(guān)于消息隊列的偏移量,這個偏移量記錄著目前已發(fā)送出去的消息在消息隊列中所處的位置。只有當(dāng)一個批次的消息被流計算集群成功消費并作出應(yīng)答答后,消息中間件才會發(fā)送下一批次的消息,同時將偏移量向后移動至相應(yīng)的位置。通常偏移量不能回溯,即如果消息中間件發(fā)送了新的一批次消息,則之前的消息就不能再次發(fā)送了。
[0006]為了做到容災(zāi)和故障可恢復(fù),必須將每個批次計算的結(jié)果和中間明細數(shù)據(jù)持久化到磁盤中,以避免分布式流計算集群宕機導(dǎo)致數(shù)據(jù)丟失,這個過程叫做同步持久化。
[0007]持久化操作也屬于對一個批次消息的消費過程,因此,只有持久化成功后才會對消息發(fā)送組件做出應(yīng)答。這樣,假如對一個批次消息消費沒有結(jié)束時發(fā)生了集群宕機,則消費組件不會對消息發(fā)送組件做出應(yīng)答。當(dāng)故障恢復(fù),實時計算應(yīng)用重啟后,消息發(fā)送組件會重新發(fā)送這批次消息,不會造成數(shù)據(jù)丟失。假如對一個批次消息消費成功并已經(jīng)對消息發(fā)送組件做出應(yīng)答后發(fā)生了集群宕機,那么當(dāng)故障恢復(fù),實時計算應(yīng)用重啟后,消費組件會從磁盤中加載之前成功持久化的數(shù)據(jù),然后繼續(xù)對新的批次消息進行消費,因此也不會造成數(shù)據(jù)丟失。
[0008]實時計算結(jié)果持久化到磁盤的方式通常是存儲到數(shù)據(jù)庫中。當(dāng)數(shù)據(jù)存儲到數(shù)據(jù)庫中以后,就可以供后續(xù)大量應(yīng)用訪問查詢,但是這也帶來了訪問瓶頸。因為涉及到數(shù)據(jù)庫連接數(shù)限制以及磁盤I/O (Input/Output,輸入/輸出)性能的影響。再加上實時計算結(jié)果的更新是秒級的,上游應(yīng)用對數(shù)據(jù)庫的訪問會非常頻繁,會導(dǎo)致數(shù)據(jù)庫的TPS (Transact1nPer Second,每秒事務(wù)處理量)非常高,這些都限制了并發(fā)訪問性能。
[0009]采用加載緩存的策略可以在一些場景下解決這個問題。如圖2所示,為現(xiàn)有的通過加載緩存實現(xiàn)流計算數(shù)據(jù)流優(yōu)化的示意圖。
[0010]例如,上游應(yīng)用訪問的實時數(shù)據(jù)如果是公共的,需要每5秒鐘獲取一次數(shù)據(jù)。那么可以將數(shù)據(jù)庫中的數(shù)據(jù)每5秒鐘刷新到緩存中一次,然后所有的應(yīng)用都從緩存中讀取數(shù)據(jù)。這樣,無論同一時刻有多少訪問請求,對數(shù)據(jù)庫的訪問壓力都是每5秒鐘I次,并發(fā)訪問性能可以提升約2個數(shù)量級。
[0011]在實現(xiàn)本申請的過程中,本申請的 申請人:發(fā)現(xiàn)現(xiàn)有技術(shù)存在以下缺陷:
[0012]對于粒度更細的維度的實時數(shù)據(jù),例如個人維度的實時數(shù)據(jù),每一個用戶訪問的數(shù)據(jù)都不相同。如果每一個用戶都需要每5秒鐘獲取一次數(shù)據(jù),那么為每一個用戶每5秒鐘緩存一次數(shù)據(jù)是沒有意義的。因為一個用戶在5秒鐘內(nèi)只會獲取一次數(shù)據(jù),而為他緩存的數(shù)據(jù)又不會被其他用戶使用,這也就失去了緩存的意義。這時候每個用戶每5秒鐘都要訪問一次數(shù)據(jù)庫做查詢操作,導(dǎo)致數(shù)據(jù)庫的TPS會非常高。


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

[0013]本申請?zhí)峁┝艘环N流計算處理方法、設(shè)備和系統(tǒng),能夠解決現(xiàn)有的流計算技術(shù)對數(shù)據(jù)流的消費過程中,在實現(xiàn)持久化操作的同時,會出現(xiàn)上游應(yīng)用直接從磁盤中訪問數(shù)據(jù),導(dǎo)致并發(fā)訪問性能降低的問題。
[0014]為達到上述目的,本申請實施例一方面提供了一種流計算處理方法,包括:
[0015]分布式流計算集群將當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到數(shù)據(jù)庫中,進行持久化操作;
[0016]所述分布式流計算集群將所述當(dāng)前批次消息的實時計算結(jié)果存儲到內(nèi)存中,以供上游應(yīng)用進行數(shù)據(jù)查詢。
[0017]優(yōu)選的,所述方法,還包括:
[0018]在當(dāng)前批次消息的處理過程,所述當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到所述數(shù)據(jù)庫的過程,以及所述當(dāng)前批次消息的實時計算結(jié)果存儲到所述內(nèi)存的過程在預(yù)設(shè)時間內(nèi)全部完成后,所述分布式流計算集群向所述當(dāng)前批次消息所對應(yīng)的消息發(fā)送端發(fā)送應(yīng)答消息。
[0019]優(yōu)選的,所述方法,還包括:
[0020]當(dāng)所述當(dāng)前批次消息所對應(yīng)的消息發(fā)送端在預(yù)設(shè)的時間區(qū)間內(nèi)沒有收到所述分布式流計算集群所發(fā)送的應(yīng)答消息,所述消息發(fā)送端重新將所述當(dāng)前批次消息發(fā)送給所述分布式流計算集群。
[0021]優(yōu)選的,所述分布式流計算集群將當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到數(shù)據(jù)庫中,進行持久化操作之后,還包括:
[0022]當(dāng)所述分布式流計算集群出現(xiàn)故障并重啟后,所述分布式流計算集群從所述數(shù)據(jù)庫中獲取當(dāng)前存儲的所述當(dāng)前批次消息的中間計算明細數(shù)據(jù);
[0023]所述分布式流計算集群接收所述當(dāng)前批次消息所對應(yīng)的消息發(fā)送端所重新發(fā)送的所述當(dāng)前批次消息,并繼續(xù)進行所述當(dāng)前批次消息的處理過程。
[0024]優(yōu)選的,所述內(nèi)存,具體通過內(nèi)存數(shù)據(jù)庫軟件來實現(xiàn)。
[0025]另一方面,本申請實施例還提出了一種分布式流計算集群,至少包括:
[0026]接收模塊,用于接收消息發(fā)送端所發(fā)送的消息;
[0027]處理模塊,用于對所述接收模塊所接收到的消息進行處理;
[0028]第一存儲模塊,用于將所述處理模塊所得到的當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到數(shù)據(jù)庫中,進行持久化操作;
[0029]第二存儲模塊,用于將所述處理模塊所得到的所述當(dāng)前批次消息的實時計算結(jié)果存儲到內(nèi)存中,以供上游應(yīng)用進行數(shù)據(jù)查詢。
[0030]優(yōu)選的,所述分布式流計算集群,還包括:
[0031]發(fā)送模塊,用于在所述處理模塊所進行的當(dāng)前批次消息的處理過程,所述第一存儲模塊所進行的所述當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到所述數(shù)據(jù)庫的過程,以及所述第二存儲模塊所進行的所述當(dāng)前批次消息的實時計算結(jié)果存儲到所述內(nèi)存的過程在預(yù)設(shè)時間內(nèi)全部完成后,向所述當(dāng)前批次消息所對應(yīng)的消息發(fā)送端發(fā)送應(yīng)答消息。
[0032]優(yōu)選的,所述分布式流計算集群,還包括:
[0033]讀取模塊,用于在所述分布式流計算集群出現(xiàn)故障并重啟后,從所述數(shù)據(jù)庫中獲取當(dāng)前存儲的所述當(dāng)前批次消息的中間計算明細數(shù)據(jù);
[0034]所述接收模塊,還用于在所述分布式流計算集群出現(xiàn)故障并重啟后,接收所述當(dāng)前批次消息所對應(yīng)的消息發(fā)送端所重新發(fā)送的所述當(dāng)前批次消息;
[0035]所述處理模塊,還用于根據(jù)所述讀取模塊所獲取的中間計算明細數(shù)據(jù)和所述接收模塊所接收到的重新發(fā)送的所述當(dāng)前批次消息,繼續(xù)進行所述當(dāng)前批次消息的處理過程。
[0036]另一方面,本申請實施例還提供了一種流計算處理系統(tǒng),至少包括消息發(fā)送端,分布式流計算集群,數(shù)據(jù)庫和內(nèi)存:
[0037]所述消息發(fā)送端,用于向所述分布式流計算集群發(fā)送消息,并在接收到所述分布式流計算集群所返回的應(yīng)答消息后,向所述分布式流計算集群發(fā)送下一批次的消息;
[0038]所述分布式流計算集群,用于接收所述消息發(fā)送端所發(fā)送的當(dāng)前批次消息,并對所述當(dāng)前批次消息進行處理,將相應(yīng)的中間計算明細數(shù)據(jù)存儲到所述數(shù)據(jù)庫中,進行持久化操作,并將相應(yīng)的實時計算結(jié)果存儲到所述內(nèi)存中,以供上游應(yīng)用進行數(shù)據(jù)查詢。
[0039]優(yōu)選的,
[0040]所述消息發(fā)送端,還用于在向所述分布式流計算集群發(fā)送消息之后的預(yù)設(shè)的時間區(qū)間內(nèi)沒有收到所述分布式流計算集群所發(fā)送的應(yīng)答消息時,重新將所述當(dāng)前批次消息發(fā)送給所述分布式流計算集群。
[0041]與現(xiàn)有技術(shù)相比,本申請所提出的技術(shù)方案至少具有以下優(yōu)點:
[0042]通過應(yīng)用本申請實施例的技術(shù)方案,在分布式流計算集群進行當(dāng)前批次消息的處理過程中,將當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到數(shù)據(jù)庫中,進行持久化操作,同時,將當(dāng)前批次消息的實時計算結(jié)果存儲到內(nèi)存中,以供上游應(yīng)用進行數(shù)據(jù)查詢,從而,在滿足持久化操作需求實現(xiàn)容錯和故障可恢復(fù)保障的前提下,將上游應(yīng)用對實時計算結(jié)果的查詢操作通過內(nèi)存進行提供,重新定義了數(shù)據(jù)流的走向,使上游應(yīng)用不與數(shù)據(jù)庫直接打交道,避免了數(shù)據(jù)庫訪問連接數(shù)的限制,同時,節(jié)省了由于頻繁訪問數(shù)據(jù)庫而導(dǎo)致的大量磁盤1/0,達到大幅提升并發(fā)訪問性能的效果。

【專利附圖】

【附圖說明】
[0043]圖1為現(xiàn)有技術(shù)中最基礎(chǔ)的流計算數(shù)據(jù)流的示意圖;
[0044]圖2為現(xiàn)有的通過加載緩存實現(xiàn)流計算數(shù)據(jù)流優(yōu)化的示意圖;
[0045]圖3為本申請實施例提供的一種流計算處理方法的流程示意圖;
[0046]圖4為本申請實施例提供的一種具體應(yīng)用場景下的流計算處理方法的流程示意圖;
[0047]圖5為本申請實施例提供的一種流計算處理系統(tǒng)的結(jié)構(gòu)示意圖;
[0048]圖6為本申請實施例提供的一種分布式流計算集群的結(jié)構(gòu)示意圖。

【具體實施方式】
[0049]如【背景技術(shù)】所述,在現(xiàn)有的流計算處理過程中,一方面,出于容錯、故障可恢復(fù)等需求,需要進行持久化處理,現(xiàn)有技術(shù)中可以通過緩存策略來實現(xiàn),但是,另一方面,通過數(shù)據(jù)庫提供實時數(shù)據(jù)查詢服務(wù)存在可能導(dǎo)致數(shù)據(jù)庫訪問量過高,影響I/O性能的問題,而現(xiàn)有的緩存策略不能很好地解決這樣的問題。
[0050]為了解決這樣的問題,本申請?zhí)岢隽艘环N流計算處理方法,使上游應(yīng)用不與數(shù)據(jù)庫直接打交道,避免了數(shù)據(jù)庫訪問連接數(shù)的限制,同時節(jié)省了大量磁盤1/0,從而達到大幅提升并發(fā)訪問性能的效果。
[0051]如圖3所示,為本申請實施例提供的一種流計算處理方法的流程示意圖,包括:
[0052]步驟S301、分布式流計算集群接收消息發(fā)送端所發(fā)送的消息。
[0053]步驟S302、分布式流計算集群對當(dāng)前批次消息進行處理。
[0054]步驟S303、分布式流計算集群將當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到數(shù)據(jù)庫中,進行持久化操作。
[0055]通過這樣的處理,所述分布式流計算集群通過滿足持久化操作需求,實現(xiàn)了容錯和故障可恢復(fù)保障。
[0056]步驟S304、所述分布式流計算集群將所述當(dāng)前批次消息的實時計算結(jié)果存儲到內(nèi)存中,以供上游應(yīng)用進行數(shù)據(jù)查詢。
[0057]通過這樣的處理,所述分布式流計算集群將上游應(yīng)用對實時計算結(jié)果的查詢操作通過內(nèi)存進行提供,重新定義了數(shù)據(jù)流的走向,使上游應(yīng)用不與數(shù)據(jù)庫直接打交道,避免了數(shù)據(jù)庫訪問連接數(shù)的限制,同時,節(jié)省了由于頻繁訪問數(shù)據(jù)庫而導(dǎo)致的大量磁盤1/0,達到大幅提升并發(fā)訪問性能的效果。
[0058]步驟S305、所述分布式流計算集群分別判斷步驟S302,步驟S303和步驟S304的處理過程是否在預(yù)設(shè)時間內(nèi)完成。
[0059]如果判斷結(jié)果為是,執(zhí)彳丁步驟S306 ;
[0060]如果判斷結(jié)果為否,則不作任何處理,并按照相應(yīng)的判斷規(guī)則進行下一次判斷。
[0061]在此種情況下,由于沒有及時執(zhí)行步驟S306,即分布式流計算集群沒有在預(yù)設(shè)時間內(nèi)向消息發(fā)送端發(fā)送相應(yīng)的應(yīng)答消息,所以,消息發(fā)送端確認(rèn)所發(fā)送的本批次的消息沒有在預(yù)設(shè)的時間內(nèi)完成處理,因此,重新向所述分布式流計算集群發(fā)送本批次的消息,從而,重新執(zhí)行步驟S301,進行本批次的消息的處理。
[0062]步驟S306、所述分布式流計算集群向所述當(dāng)前批次消息所對應(yīng)的消息發(fā)送端發(fā)送應(yīng)答消息。
[0063]步驟S307、所述消息發(fā)送端接收到所述應(yīng)答消息后,繼續(xù)向所述分布式流計算集群發(fā)送下一批次的消息,從而重新執(zhí)行步驟S301,進行下一批次的消息的。
[0064]在當(dāng)前批次消息的處理過程,所述當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到所述數(shù)據(jù)庫的過程,以及所述當(dāng)前批次消息的實時計算結(jié)果存儲到所述內(nèi)存的過程全部完成后,所述分布式流計算集群向所述當(dāng)前批次消息所對應(yīng)的消息發(fā)送端發(fā)送應(yīng)答消息。
[0065]需要進行說明的是,如果上述的步驟S302、步驟S303和步驟S304中的任何一個步驟出現(xiàn)故障而導(dǎo)致操作無法完成,則所述分布式計算集群將不會向消息發(fā)送端發(fā)送應(yīng)答消肩、O
[0066]相應(yīng)的,當(dāng)所述當(dāng)前批次消息所對應(yīng)的消息發(fā)送端在預(yù)設(shè)的時間區(qū)間內(nèi)沒有收到所述分布式流計算集群所發(fā)送的應(yīng)答消息,所述消息發(fā)送端重新將所述當(dāng)前批次消息發(fā)送給所述分布式流計算集群。
[0067]在實際的應(yīng)用場景中,分布式流計算集群可能應(yīng)為故障而宕機,那么。當(dāng)所述分布式流計算集群出現(xiàn)故障并重啟后,所述分布式流計算集群從所述數(shù)據(jù)庫中獲取當(dāng)前存儲的所述當(dāng)前批次消息的中間計算明細數(shù)據(jù)。
[0068]然后,由于之前的處理操作沒有完成,所以,所述分布式流計算集群必然沒有向消息發(fā)送端發(fā)送應(yīng)答消息,所以,所述消息發(fā)送端會重新向所述分布式流計算集群發(fā)送該批次的消息,所述分布式流計算集群接收所述當(dāng)前批次消息所對應(yīng)的消息發(fā)送端所重新發(fā)送的所述當(dāng)前批次消息,并繼續(xù)進行所述當(dāng)前批次消息的處理過程。
[0069]通過這樣的處理,分布式流計算集群實現(xiàn)了故障恢復(fù)處理。
[0070]優(yōu)選的,所述內(nèi)存,具體可以通過內(nèi)存數(shù)據(jù)庫軟件來實現(xiàn),當(dāng)然,其他能夠達到相同技術(shù)效果的方式也可以應(yīng)用在本申請所提出的技術(shù)方案中。
[0071]在具體的應(yīng)用場景中,本申請所提出的技術(shù)方案還存在以下替代方案:
[0072]本申請在實施過程中,對持久化和寫內(nèi)存分別使用了獨立的軟件。可以開發(fā)一個軟件,既能夠管理內(nèi)存的寫入與訪問,又能夠做持久化。目前已存在既提供分布式緩存,又提供持久化的軟件,但是并不能滿足同步持久化的需求。替代產(chǎn)品必須能夠做到在對一個批次消息的消費過程中既完成寫內(nèi)存,又完成持久化操作。
[0073]該方案同樣屬于本申請的保護范圍。
[0074]與現(xiàn)有技術(shù)相比,本申請實施例所提出的技術(shù)方案具有以下優(yōu)點:
[0075]通過應(yīng)用本申請實施例的技術(shù)方案,在分布式流計算集群進行當(dāng)前批次消息的處理過程中,將當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到數(shù)據(jù)庫中,進行持久化操作,同時,將當(dāng)前批次消息的實時計算結(jié)果存儲到內(nèi)存中,以供上游應(yīng)用進行數(shù)據(jù)查詢,從而,在滿足持久化操作需求實現(xiàn)容錯和故障可恢復(fù)保障的前提下,將上游應(yīng)用對實時計算結(jié)果的查詢操作通過內(nèi)存進行提供,重新定義了數(shù)據(jù)流的走向,使上游應(yīng)用不與數(shù)據(jù)庫直接打交道,避免了數(shù)據(jù)庫訪問連接數(shù)的限制,同時,節(jié)省了由于頻繁訪問數(shù)據(jù)庫而導(dǎo)致的大量磁盤1/0,達到大幅提升并發(fā)訪問性能的效果。
[0076]下面將結(jié)合本申請中的附圖,對本申請中的技術(shù)方案進行清楚、完整的描述,顯然,所描述的實施例是本申請的一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├绢I(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
[0077]發(fā)明人發(fā)現(xiàn),持久化操作在流計算處理過程中,主要用于容錯可故障可恢復(fù),以及為上游應(yīng)用提供實時數(shù)據(jù)查詢。
[0078]本申請所提出的技術(shù)方案有所不同,持久化操作只負責(zé)存儲分布式流計算集群各個節(jié)點在消費每個批次消息時的中間明細數(shù)據(jù),用于容錯和故障可恢復(fù),不需要存儲實時結(jié)果數(shù)據(jù)。
[0079]例如:實時計算某購物網(wǎng)站當(dāng)天的有效買家人數(shù),需要存儲有效買家ID明細數(shù)據(jù)用于去重。
[0080]如果發(fā)生了集群宕機等故障,在故障恢復(fù),流計算應(yīng)用重啟后,有效買家ID明細數(shù)據(jù)會從數(shù)據(jù)庫中重新加載到流計算集群的消費組件內(nèi)存中,同時繼續(xù)對新發(fā)送過來的消息流做消費,計算最新的實時結(jié)果數(shù)據(jù)。
[0081]另一方面,在具體的流計算處理過程中,實時計算結(jié)果數(shù)據(jù)是用于最終展現(xiàn)的數(shù)據(jù),通常是按某一維度計算得到的聚合值。它的數(shù)據(jù)量與中間計算明細數(shù)據(jù)相比可以忽略不計,可以常駐內(nèi)存。
[0082]因此,在本申請所提出的技術(shù)方案中,將流計算應(yīng)用的實時計算結(jié)果直接寫到一塊內(nèi)存中,供上游應(yīng)用查詢數(shù)據(jù)使用。這樣,由于不再需要從數(shù)據(jù)庫中查詢數(shù)據(jù),就節(jié)省了大量磁盤I/o。并發(fā)訪問性能與通過數(shù)據(jù)庫中查詢數(shù)據(jù)相比可以提升2個數(shù)量級。
[0083]如圖4所示,為本申請實施例所提出的一種具體應(yīng)用場景下的流計算處理方法的流程示意圖。
[0084]這塊內(nèi)存區(qū)域與現(xiàn)有技術(shù)中所提到的緩存在概念上有所區(qū)別,具體說明如下:
[0085]緩存主要是為了避免頻繁的磁盤讀,將熱度較高的數(shù)據(jù)加載到內(nèi)存以備后續(xù)查詢請求在內(nèi)存中直接命中,免去了再次讀取磁盤的性能損耗。
[0086]而在本申請所提出的技術(shù)方案中,內(nèi)存區(qū)域完全是供上游應(yīng)用在獲取數(shù)據(jù)時使用,其不關(guān)心保存在這塊內(nèi)存區(qū)域中的數(shù)據(jù)是否會被其他查詢請求命中。因此,這塊內(nèi)存區(qū)域可以使用內(nèi)存數(shù)據(jù)庫軟件,在技術(shù)實現(xiàn)上有較多的選擇空間。
[0087]在技術(shù)實現(xiàn)上,將中間計算明細數(shù)據(jù)寫數(shù)據(jù)庫和將實時計算數(shù)據(jù)寫內(nèi)存這兩個環(huán)節(jié)都屬于對一個批次消息的消費過程,因此,只有對消息的計算處理、寫數(shù)據(jù)庫、寫內(nèi)存這三個環(huán)節(jié)全部成功之后消息消費組件才會對消息發(fā)送組件做出應(yīng)答。這三個環(huán)節(jié)中任何一個環(huán)節(jié)執(zhí)行失敗,或者在規(guī)定的時間內(nèi)沒有做出應(yīng)答,消息發(fā)送組件都會重新發(fā)送這批次的消息,從而,保證了容錯和故障可恢復(fù)。
[0088]本申請所提出的技術(shù)方案在保證了并發(fā)訪問性能與使用數(shù)據(jù)庫查詢方案相比提升2個數(shù)量級之外,對容錯和故障可恢復(fù)的級別沒有任何降低,具體說明如下:
[0089]1、當(dāng)分布式流計算集群出現(xiàn)故障時,由于采用了同步持久化策略,明細數(shù)據(jù)都保存在磁盤中,待故障恢復(fù),實時計算應(yīng)用重啟后,明細數(shù)據(jù)可以重新從磁盤中加載,保證數(shù)據(jù)沒有丟失。
[0090]2、當(dāng)數(shù)據(jù)庫出現(xiàn)故障時,由于寫數(shù)據(jù)庫屬于消息消費的過程,數(shù)據(jù)庫故障將導(dǎo)致寫數(shù)據(jù)庫不會成功,因此,也不會對消息發(fā)送組件做出應(yīng)答。消息發(fā)送組件會不斷重新發(fā)送本批次的消息,直到數(shù)據(jù)庫故障恢復(fù),從而,保證不會有未被成功消費的消息。
[0091]3、當(dāng)提供特定內(nèi)存區(qū)域的服務(wù)器出現(xiàn)故障時,同樣寫內(nèi)存的操作也屬于消息消費的過程,寫內(nèi)存不成功就不會對消息發(fā)送組件做出應(yīng)答。消息發(fā)送組件同樣會不斷重新發(fā)送本批次的消息,直到服務(wù)器故障恢復(fù)。
[0092]4、實時結(jié)果數(shù)據(jù)只保存在內(nèi)存中,沒有保存在磁盤中,不會導(dǎo)致數(shù)據(jù)丟失。因為磁盤保存有明細數(shù)據(jù),在故障恢復(fù)時,消息消費組件可以使用明細數(shù)據(jù)重新計算得到結(jié)果數(shù)據(jù)。對一個批次的消息重新計算結(jié)果數(shù)據(jù)所花費的時間通常是毫秒級的,這個影響可以忽略不計。
[0093]與現(xiàn)有技術(shù)相比,本申請實施例所提出的技術(shù)方案具有以下優(yōu)點:
[0094]通過應(yīng)用本申請實施例的技術(shù)方案,在分布式流計算集群進行當(dāng)前批次消息的處理過程中,將當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到數(shù)據(jù)庫中,進行持久化操作,同時,將當(dāng)前批次消息的實時計算結(jié)果存儲到內(nèi)存中,以供上游應(yīng)用進行數(shù)據(jù)查詢,從而,在滿足持久化操作需求實現(xiàn)容錯和故障可恢復(fù)保障的前提下,將上游應(yīng)用對實時計算結(jié)果的查詢操作通過內(nèi)存進行提供,重新定義了數(shù)據(jù)流的走向,使上游應(yīng)用不與數(shù)據(jù)庫直接打交道,避免了數(shù)據(jù)庫訪問連接數(shù)的限制,同時,節(jié)省了由于頻繁訪問數(shù)據(jù)庫而導(dǎo)致的大量磁盤1/0,達到大幅提升并發(fā)訪問性能的效果。
[0095]為了實現(xiàn)上述的技術(shù)方案,本申請實施例提供了一種流計算處理系統(tǒng),其結(jié)構(gòu)示意圖如圖5所示,至少包括消息發(fā)送端51,分布式流計算集群52,數(shù)據(jù)庫53和內(nèi)存54:
[0096]所述消息發(fā)送端51,用于向所述分布式流計算集群52發(fā)送消息,并在接收到所述分布式流計算集群52所返回的應(yīng)答消息后,向所述分布式流計算集群52發(fā)送下一批次的消息;
[0097]所述分布式流計算集群52,用于接收所述消息發(fā)送端51所發(fā)送的當(dāng)前批次消息,并對所述當(dāng)前批次消息進行處理,將相應(yīng)的中間計算明細數(shù)據(jù)存儲到所述數(shù)據(jù)庫53中,進行持久化操作,并將相應(yīng)的實時計算結(jié)果存儲到所述內(nèi)存54中,以供上游應(yīng)用進行數(shù)據(jù)查詢。
[0098]在具體的應(yīng)用場景中,
[0099]所述消息發(fā)送端51,還用于在向所述分布式流計算集群52發(fā)送消息之后的預(yù)設(shè)的時間區(qū)間內(nèi)沒有收到所述分布式流計算集群52所發(fā)送的應(yīng)答消息時,重新將所述當(dāng)前批次消息發(fā)送給所述分布式流計算集群52。
[0100]進一步的,本申請實施例還提出了一種分布式流計算集群,其結(jié)構(gòu)示意圖如圖6所示,至少包括:
[0101]接收模塊61,用于接收消息發(fā)送端所發(fā)送的消息;
[0102]處理模塊62,用于對所述接收模塊61所接收到的消息進行處理;
[0103]第一存儲模塊63,用于將所述處理模塊62所得到的當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到數(shù)據(jù)庫中,進行持久化操作;
[0104]第二存儲模塊64,用于將所述處理模塊62所得到的所述當(dāng)前批次消息的實時計算結(jié)果存儲到內(nèi)存中,以供上游應(yīng)用進行數(shù)據(jù)查詢。
[0105]優(yōu)選的,所述分布式流計算集群,還包括:
[0106]發(fā)送模塊65,用于在所述處理模塊62所進行的當(dāng)前批次消息的處理過程,所述第一存儲模塊63所進行的所述當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到所述數(shù)據(jù)庫的過程,以及所述第二存儲模塊64所進行的所述當(dāng)前批次消息的實時計算結(jié)果存儲到所述內(nèi)存的過程在預(yù)設(shè)時間內(nèi)全部完成后,向所述當(dāng)前批次消息所對應(yīng)的消息發(fā)送端發(fā)送應(yīng)答消肩、O
[0107]優(yōu)選的,所述分布式流計算集群,還包括:
[0108]讀取模塊66,用于在所述分布式流計算集群出現(xiàn)故障并重啟后,從所述數(shù)據(jù)庫中獲取當(dāng)前存儲的所述當(dāng)前批次消息的中間計算明細數(shù)據(jù);
[0109]所述接收模塊61,還用于在所述分布式流計算集群出現(xiàn)故障并重啟后,接收所述當(dāng)前批次消息所對應(yīng)的消息發(fā)送端所重新發(fā)送的所述當(dāng)前批次消息;
[0110]所述處理模塊62,還用于根據(jù)所述讀取模塊66所獲取的中間計算明細數(shù)據(jù)和所述接收模塊61所接收到的重新發(fā)送的所述當(dāng)前批次消息,繼續(xù)進行所述當(dāng)前批次消息的處理過程。
[0111]與現(xiàn)有技術(shù)相比,本申請實施例所提出的技術(shù)方案具有以下優(yōu)點:
[0112]通過應(yīng)用本申請實施例的技術(shù)方案,在分布式流計算集群進行當(dāng)前批次消息的處理過程中,將當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到數(shù)據(jù)庫中,進行持久化操作,同時,將當(dāng)前批次消息的實時計算結(jié)果存儲到內(nèi)存中,以供上游應(yīng)用進行數(shù)據(jù)查詢,從而,在滿足持久化操作需求實現(xiàn)容錯和故障可恢復(fù)保障的前提下,將上游應(yīng)用對實時計算結(jié)果的查詢操作通過內(nèi)存進行提供,重新定義了數(shù)據(jù)流的走向,使上游應(yīng)用不與數(shù)據(jù)庫直接打交道,避免了數(shù)據(jù)庫訪問連接數(shù)的限制,同時,節(jié)省了由于頻繁訪問數(shù)據(jù)庫而導(dǎo)致的大量磁盤1/0,達到大幅提升并發(fā)訪問性能的效果。
[0113]本領(lǐng)域技術(shù)人員可以理解實施例中的裝置中的模塊可以按照實施例描述進行分布于實施例的裝置中,也可以進行相應(yīng)變化位于不同于本實施例的一個或多個裝置中。上述實施例的模塊可以合并為一個模塊,也可以進一步拆分成多個子模塊。
[0114]上述本申請實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
[0115]通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機,個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請各個實施例所述的方法。
[0116]以上所述僅是本申請的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫離本申請原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視本申請的保護范圍。
【權(quán)利要求】
1.一種流計算處理方法,其特征在于,包括: 分布式流計算集群將當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到數(shù)據(jù)庫中,進行持久化操作; 所述分布式流計算集群將所述當(dāng)前批次消息的實時計算結(jié)果存儲到內(nèi)存中,以供上游應(yīng)用進行數(shù)據(jù)查詢。
2.如權(quán)利要求1所述的方法,其特征在于,還包括: 在當(dāng)前批次消息的處理過程,所述當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到所述數(shù)據(jù)庫的過程,以及所述當(dāng)前批次消息的實時計算結(jié)果存儲到所述內(nèi)存的過程在預(yù)設(shè)時間內(nèi)全部完成后,所述分布式流計算集群向所述當(dāng)前批次消息所對應(yīng)的消息發(fā)送端發(fā)送應(yīng)答消肩、O
3.如權(quán)利要求2所述的方法,其特征在于,還包括: 當(dāng)所述當(dāng)前批次消息所對應(yīng)的消息發(fā)送端在預(yù)設(shè)的時間區(qū)間內(nèi)沒有收到所述分布式流計算集群所發(fā)送的應(yīng)答消息,所述消息發(fā)送端重新將所述當(dāng)前批次消息發(fā)送給所述分布式流計算集群。
4.如權(quán)利要求1所述的方法,其特征在于,所述分布式流計算集群將當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到數(shù)據(jù)庫中,進行持久化操作之后,還包括: 當(dāng)所述分布式流計算集群出現(xiàn)故障并重啟后,所述分布式流計算集群從所述數(shù)據(jù)庫中獲取當(dāng)前存儲的所述當(dāng)前批次消息的中間計算明細數(shù)據(jù); 所述分布式流計算集群接收所述當(dāng)前批次消息所對應(yīng)的消息發(fā)送端所重新發(fā)送的所述當(dāng)前批次消息,并繼續(xù)進行所述當(dāng)前批次消息的處理過程。
5.如權(quán)利要求1所述的方法,其特征在于,所述內(nèi)存,具體通過內(nèi)存數(shù)據(jù)庫軟件來實現(xiàn)。
6.一種分布式流計算集群,其特征在于,至少包括: 接收模塊,用于接收消息發(fā)送端所發(fā)送的消息; 處理模塊,用于對所述接收模塊所接收到的消息進行處理; 第一存儲模塊,用于將所述處理模塊所得到的當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到數(shù)據(jù)庫中,進行持久化操作; 第二存儲模塊,用于將所述處理模塊所得到的所述當(dāng)前批次消息的實時計算結(jié)果存儲到內(nèi)存中,以供上游應(yīng)用進行數(shù)據(jù)查詢。
7.如權(quán)利要求6所述的分布式流計算集群,其特征在于,還包括: 發(fā)送模塊,用于在所述處理模塊所進行的當(dāng)前批次消息的處理過程,所述第一存儲模塊所進行的所述當(dāng)前批次消息的中間計算明細數(shù)據(jù)存儲到所述數(shù)據(jù)庫的過程,以及所述第二存儲模塊所進行的所述當(dāng)前批次消息的實時計算結(jié)果存儲到所述內(nèi)存的過程在預(yù)設(shè)時間內(nèi)全部完成后,向所述當(dāng)前批次消息所對應(yīng)的消息發(fā)送端發(fā)送應(yīng)答消息。
8.如權(quán)利要求6所述的分布式流計算集群,其特征在于,還包括: 讀取模塊,用于在所述分布式流計算集群出現(xiàn)故障并重啟后,從所述數(shù)據(jù)庫中獲取當(dāng)前存儲的所述當(dāng)前批次消息的中間計算明細數(shù)據(jù); 所述接收模塊,還用于在所述分布式流計算集群出現(xiàn)故障并重啟后,接收所述當(dāng)前批次消息所對應(yīng)的消息發(fā)送端所重新發(fā)送的所述當(dāng)前批次消息; 所述處理模塊,還用于根據(jù)所述讀取模塊所獲取的中間計算明細數(shù)據(jù)和所述接收模塊所接收到的重新發(fā)送的所述當(dāng)前批次消息,繼續(xù)進行所述當(dāng)前批次消息的處理過程。
9.一種流計算處理系統(tǒng),其特征在于,至少包括消息發(fā)送端,分布式流計算集群,數(shù)據(jù)庫和內(nèi)存: 所述消息發(fā)送端,用于向所述分布式流計算集群發(fā)送消息,并在接收到所述分布式流計算集群所返回的應(yīng)答消息后,向所述分布式流計算集群發(fā)送下一批次的消息; 所述分布式流計算集群,用于接收所述消息發(fā)送端所發(fā)送的當(dāng)前批次消息,并對所述當(dāng)前批次消息進行處理,將相應(yīng)的中間計算明細數(shù)據(jù)存儲到所述數(shù)據(jù)庫中,進行持久化操作,并將相應(yīng)的實時計算結(jié)果存儲到所述內(nèi)存中,以供上游應(yīng)用進行數(shù)據(jù)查詢。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于, 所述消息發(fā)送端,還用于在向所述分布式流計算集群發(fā)送消息之后的預(yù)設(shè)的時間區(qū)間內(nèi)沒有收到所述分布式流計算集群所發(fā)送的應(yīng)答消息時,重新將所述當(dāng)前批次消息發(fā)送給所述分布式流計算集群。
【文檔編號】G06F12/02GK104252466SQ201310259814
【公開日】2014年12月31日 申請日期:2013年6月26日 優(yōu)先權(quán)日:2013年6月26日
【發(fā)明者】劉健男 申請人:阿里巴巴集團控股有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1