面向流式處理系統(tǒng)的內(nèi)存對(duì)象管理方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及分布式計(jì)算機(jī)領(lǐng)域,尤其涉及一種面向流式處理系統(tǒng)的內(nèi)存對(duì)象管理方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)的持續(xù)發(fā)展和物聯(lián)網(wǎng)的迅速崛起,流數(shù)據(jù)廣泛出現(xiàn)在網(wǎng)絡(luò)監(jiān)控、傳感器網(wǎng)絡(luò)、航空航天、電子商務(wù)、智慧交通和智慧旅游等應(yīng)用領(lǐng)域,其中,流數(shù)據(jù)是一組順序、大量、快速、連續(xù)到達(dá)的數(shù)據(jù)序列。相比于傳統(tǒng)的大數(shù)據(jù),流數(shù)據(jù)以大量、快速、時(shí)變的數(shù)據(jù)流持續(xù)到達(dá),由此產(chǎn)生了一個(gè)新的研究問(wèn)題:實(shí)時(shí)流數(shù)據(jù)處理。
[0003]—般情況,實(shí)時(shí)流數(shù)據(jù)處理是針對(duì)持續(xù)產(chǎn)生的流數(shù)據(jù),根據(jù)應(yīng)用需求快速建模,讓用戶實(shí)時(shí)地得到反饋,從而保證流數(shù)據(jù)的時(shí)效性。目前,由于流數(shù)據(jù)具有運(yùn)行周期長(zhǎng)、處理延遲低等需求和特點(diǎn),在實(shí)時(shí)流數(shù)據(jù)處理過(guò)程中,需要在內(nèi)存中保存大量計(jì)算參數(shù)、中間狀態(tài)等流數(shù)據(jù)對(duì)象(Streaming Data Ob ject,簡(jiǎn)稱SD0)。然而,在實(shí)時(shí)流數(shù)據(jù)處理過(guò)程中因長(zhǎng)期運(yùn)行大量流數(shù)據(jù)對(duì)象的使用并不活躍,并且大量不活躍的流數(shù)據(jù)對(duì)象長(zhǎng)期占用內(nèi)存。
[0004]因此,目前在實(shí)時(shí)流數(shù)據(jù)處理過(guò)程中,因長(zhǎng)期運(yùn)行而造成大量不活躍的流數(shù)據(jù)對(duì)象長(zhǎng)期占用內(nèi)存,從而造成系統(tǒng)資源的浪費(fèi)。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種面向流式處理系統(tǒng)的內(nèi)存對(duì)象管理方法及系統(tǒng),能夠避免有效因長(zhǎng)期運(yùn)行而造成大量不活躍的流數(shù)據(jù)對(duì)象長(zhǎng)期占用內(nèi)存,從而避免系統(tǒng)資源的浪費(fèi)。
[0006]本發(fā)明第一方面提供的面向流式處理系統(tǒng)的內(nèi)存對(duì)象管理方法,包括:
[0007]檢測(cè)內(nèi)存中SD0的狀態(tài);
[0008]其中,SD0的狀態(tài)包括:SD0的不活躍態(tài),SD0的不活躍態(tài)指的是SD0在預(yù)設(shè)時(shí)間內(nèi)沒(méi)有被訪問(wèn)或者是內(nèi)存中所有SD0的數(shù)量達(dá)到第一預(yù)設(shè)閾值時(shí)SD0是內(nèi)存中最近最少訪問(wèn)的;
[0009]若檢測(cè)到SD0的狀態(tài)為不活躍態(tài),則將SD0從內(nèi)存中移除,并將SD0移動(dòng)到外部存儲(chǔ)器。
[0010]本發(fā)明第二方面提供的面向流式處理系統(tǒng)的內(nèi)存對(duì)象管理系統(tǒng),包括:
[0011]檢測(cè)模塊,用于檢測(cè)內(nèi)存中SD0的狀態(tài);
[0012]其中,SD0的狀態(tài)包括:SD0的不活躍態(tài),SD0的不活躍態(tài)指的是SD0在預(yù)設(shè)時(shí)間內(nèi)沒(méi)有被訪問(wèn)或者是內(nèi)存中所有SD0的數(shù)量達(dá)到第一預(yù)設(shè)閾值時(shí)SD0是內(nèi)存中最近最少訪問(wèn)的;
[0013]處理模塊,用于若檢測(cè)到SD0的狀態(tài)為不活躍態(tài),則將SD0從內(nèi)存中移除,并將SD0移動(dòng)到外部存儲(chǔ)器。
[0014]本發(fā)明提供的面向流式處理系統(tǒng)的內(nèi)存對(duì)象管理方法及系統(tǒng),通過(guò)檢測(cè)內(nèi)存中SD0的狀態(tài),若檢測(cè)到SD0的狀態(tài)為不活躍態(tài),則將SD0從內(nèi)存中移除,并將SD0移動(dòng)到外部存儲(chǔ)器,實(shí)現(xiàn)自動(dòng)檢測(cè)內(nèi)存中不活躍的流數(shù)據(jù)對(duì)象,避免了在實(shí)時(shí)流數(shù)據(jù)處理過(guò)程中,因長(zhǎng)期運(yùn)行而造成大量不活躍的流數(shù)據(jù)對(duì)象長(zhǎng)期占用內(nèi)存,從而避免了系統(tǒng)資源的浪費(fèi)。
【附圖說(shuō)明】
[0015]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0016]圖1為本發(fā)明實(shí)施例一提供的面向流式處理系統(tǒng)的內(nèi)存對(duì)象管理方法流程圖;
[0017]圖2為本發(fā)明實(shí)施例一提供的SD0的生命周期的狀態(tài)轉(zhuǎn)換圖;
[0018]圖3為本發(fā)明實(shí)施例二提供的面向流式處理系統(tǒng)的內(nèi)存對(duì)象管理方法流程圖;
[0019]圖4為本發(fā)明實(shí)施例三提供的面向流式處理系統(tǒng)的內(nèi)存對(duì)象管理方法流程圖;
[0020]圖5為本發(fā)明實(shí)施例一提供的SD0滑動(dòng)窗口示意圖;
[0021]圖6為本發(fā)明實(shí)施例一提供的面向流式處理系統(tǒng)的內(nèi)存對(duì)象管理系統(tǒng)結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0022]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0023]圖1為本發(fā)明實(shí)施例一提供的面向流式處理系統(tǒng)的內(nèi)存對(duì)象管理方法流程圖。如圖1所示,本發(fā)明實(shí)施例提供的內(nèi)存對(duì)象管理方法,包括:
[0024]S101:檢測(cè)內(nèi)存中SD0的狀態(tài)。
[0025]其中,SD0的狀態(tài)包括:SD0的不活躍態(tài),SD0的不活躍態(tài)指的是SD0在預(yù)設(shè)時(shí)間內(nèi)沒(méi)有被訪問(wèn)或者是內(nèi)存中所有SD0的數(shù)量達(dá)到第一預(yù)設(shè)閾值時(shí)SD0是內(nèi)存中最近最少訪問(wèn)的。
[0026]需要說(shuō)明的是,本發(fā)明實(shí)施例提供的面向流式處理系統(tǒng)的內(nèi)存對(duì)象管理方法的管理對(duì)象可以是系統(tǒng)中的任何Java對(duì)象以及用戶的自定義對(duì)象,但對(duì)于自定義對(duì)象,用戶須為其提供相應(yīng)的序列化方法。本發(fā)明實(shí)施例提供的面向流式處理系統(tǒng)(簡(jiǎn)稱流式系統(tǒng))的內(nèi)存對(duì)象管理方法能夠自動(dòng)檢測(cè)不活躍對(duì)象,并將其持久化到可靠存儲(chǔ),防止因不必要的內(nèi)存占用而浪費(fèi)內(nèi)存資源;當(dāng)對(duì)象恢復(fù)活躍時(shí),能夠較快地恢復(fù)內(nèi)存狀態(tài),正常地為流式系統(tǒng)提供服務(wù)。為方便敘述,本發(fā)明實(shí)施例將流式處理系統(tǒng)中的管理對(duì)象統(tǒng)稱為流數(shù)據(jù)對(duì)象(Streaming Data Object,簡(jiǎn)稱SD0)。流式系統(tǒng)使用SD0容器組織和管理SDO,SD0容器功能包括SD0組織和SD0生命周期管理等,將SD0容器集成到流式處理系統(tǒng)JStorm中,實(shí)現(xiàn)流式任務(wù)的數(shù)據(jù)對(duì)象管理。其中,JStorm是目前安裝和使用最多的流式處理系統(tǒng),能夠提供分布式、低延遲、高吞吐的數(shù)據(jù)處理服務(wù),其中JStorm是一個(gè)Java對(duì)象到關(guān)系數(shù)據(jù)庫(kù)的映射工具。
[0027]具體的,本發(fā)明實(shí)施例中將每個(gè)SD0分為三種狀態(tài):不存在、活躍態(tài)和不活躍態(tài)。不存在指的是SDO還沒(méi)有被實(shí)施化,不在內(nèi)存中。活躍態(tài)指的是流式系統(tǒng)可正常且經(jīng)常使用SD0,SD0在內(nèi)存中經(jīng)常被訪問(wèn)。不活躍態(tài)指的是流式系統(tǒng)基本不使用SD0,也即,使用上不活躍的SDO,SD0在預(yù)設(shè)時(shí)間內(nèi)沒(méi)有被訪問(wèn)或者是內(nèi)存中所有SD0的數(shù)量達(dá)到第一預(yù)設(shè)閾值時(shí)SD0是內(nèi)存中最近最少訪問(wèn)的。
[0028]S102:若檢測(cè)到SD0的狀態(tài)為不活躍態(tài),則將SD0從內(nèi)存中移除,并將SD0移動(dòng)到外部存儲(chǔ)器。
[0029]其中,本發(fā)明實(shí)施例將檢測(cè)到的不活躍態(tài)的SD0從內(nèi)存中移除,并將SD0移動(dòng)到外部存儲(chǔ)器。需要說(shuō)明的是,將SD0從內(nèi)存中移除之前,釋放SD0持有的所有資源。將SD0移動(dòng)到外部存儲(chǔ)器指的是將SD0序列化、持久化到外部存儲(chǔ)器。
[0030]具體的,本發(fā)明實(shí)施例為數(shù)據(jù)對(duì)象提供生命周期管理,防止不活躍數(shù)據(jù)對(duì)象占用內(nèi)存。每個(gè)SD0的生命周期是在不存在、活躍態(tài)和不活躍態(tài)三個(gè)狀態(tài)間的流動(dòng),圖2為本發(fā)明實(shí)施例一提供的SD0的生命周期的狀態(tài)轉(zhuǎn)換圖,如圖2所示,SD0的生命周期的狀態(tài)轉(zhuǎn)換具體的存在以下情況:
[0031]不存在到活躍態(tài):當(dāng)流式系統(tǒng)用戶創(chuàng)建一個(gè)新的SD0實(shí)例時(shí),SD0的生命周期開(kāi)始,SD0由不存在轉(zhuǎn)換到活躍態(tài),SD0初始化后,SD0保存在內(nèi)存中開(kāi)始被流式系統(tǒng)使用,此時(shí),SD0從不存在轉(zhuǎn)換到活躍態(tài)。
[0032]活躍態(tài)到不活躍態(tài):SD0保存在內(nèi)存中開(kāi)始被流式系統(tǒng)使用后,對(duì)SD0進(jìn)行實(shí)時(shí)檢測(cè),若檢測(cè)到SD0在預(yù)設(shè)時(shí)間內(nèi)沒(méi)有被訪問(wèn)或者是內(nèi)存中所有SD0的數(shù)量達(dá)到第一預(yù)設(shè)閾值時(shí)SD0是內(nèi)存中最近最少訪問(wèn)的,SD0處于不活躍態(tài),此時(shí),SD0由活躍態(tài)轉(zhuǎn)換到不活躍
??τ ο
[0033]不活躍態(tài)到不存在:當(dāng)將不活躍態(tài)的SD0從內(nèi)存中移除時(shí),此時(shí),SD0由不活躍態(tài)轉(zhuǎn)換到不存在。
[0034]活躍態(tài)到不存在:需要說(shuō)明的是