• / 12
  • 下載費用:30 金幣  

面向流式處理系統的內存對象管理方法及系統.pdf

摘要
申請專利號:

CN201510683179.X

申請日:

2015.10.20

公開號:

CN105242971A

公開日:

2016.01.13

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):G06F 9/50申請日:20151020|||公開
IPC分類號: G06F9/50 主分類號: G06F9/50
申請人: 北京航空航天大學
發明人: 林學練; 王家興; 張明明; 徐煦; 申陽
地址: 100191北京市海淀區北京航空航天大學7-28#信箱
優先權:
專利代理機構: 北京同立鈞成知識產權代理有限公司11205 代理人: 楊貝貝; 黃健
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201510683179.X

授權公告號:

||||||

法律狀態公告日:

2019.02.22|||2016.02.10|||2016.01.13

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

本發明提供一種面向流式處理系統的內存對象管理方法及系統,其中,面向流式處理系統的內存對象管理方法包括:檢測內存中流數據對象的狀態;若檢測到流數據對象的狀態為不活躍態,則將流數據對象從內存中移除,并將流數據對象移動到外部存儲器。本發明提供的面向流式處理系統的內存對象管理方法及系統,能夠避免有效因長期運行而造成大量不活躍的流數據對象長期占用內存,從而避免系統資源的浪費。

權利要求書

權利要求書
1.  一種面向流式處理系統的內存對象管理方法,其特征在于,包括:
檢測內存中流數據對象SDO的狀態;
其中,所述SDO的狀態包括:所述SDO的不活躍態,所述SDO的不活躍態指的是所述SDO在預設時間內沒有被訪問或者是內存中所有SDO的數量達到第一預設閾值時所述SDO是內存中最近最少訪問的;
若檢測到所述SDO的狀態為不活躍態,則將所述SDO從內存中移除,并將所述SDO移動到外部存儲器。

2.  根據權利要求1所述的方法,其特征在于,所述檢測內存中流數據對象SDO的狀態,包括:
檢測內存中所有SDO的數量是否達到所述第一預設閾值;
若內存中所有SDO的數量達到所述第一預設閾值,則檢測所述SDO是否是內存中最近最少訪問的;
若所述SDO是內存中最近最少訪問的,則所述SDO的狀態為不活躍態。

3.  根據權利要求1所述的方法,其特征在于,所述檢測內存中流數據對象SDO的狀態,包括:
檢測所述SDO在預設時間內是否被訪問;
若檢測到所述SDO在預設時間內沒有被訪問,則所述SDO的狀態為不活躍態。

4.  根據權利要求3所述的方法,其特征在于,在所述檢測所述SDO在預設時間內是否被訪問之前,包括:
計算內存中所有訪問次數小于第二預設閾值的SDO形成的滑動窗口的大小,將所述滑動窗口的大小作為所述預設時間;
具體的,采用公式delay(w,t)=hr(w,t)*dnosdo+(1-hr(w,t))*dload計算出擊中內存的概率hr的大小;
采用公式hr=P(w,t)計算處所述滑動窗口w的大小;
上述公式中,hr為擊中內存的概率,擊中內存指的是所述SDO是內存中活躍態SDO的概率,t為時間,P(w,t)為采用窗口w、在t時刻的統計函數,delay為采用窗口w、在t時刻的處理延遲;dnosdo為直接從內存中取出所述SDO并投入計算應用時的處理延時;dload為從外部存儲器取出并恢復所述SDO狀態 時的處理延遲。

5.  一種面向流式處理系統的內存對象管理系統,其特征在于,包括:
檢測模塊,用于檢測內存中流數據對象SDO的狀態;
其中,所述SDO的狀態包括:所述SDO的不活躍態,所述SDO的不活躍態指的是所述SDO在預設時間內沒有被訪問或者是內存中所有SDO的數量達到第一預設閾值時所述SDO是內存中最近最少訪問的;
處理模塊,用于若檢測到所述SDO的狀態為不活躍態,則將所述SDO從內存中移除,并將所述SDO移動到外部存儲器。

6.  根據權利要求5所述的系統,其特征在于,所述檢測模塊具體用于:
檢測內存中所有SDO的數量是否達到所述第一預設閾值;
若內存中所有SDO的數量達到所述第一預設閾值,則檢測所述SDO是否是內存中最近最少訪問的;
若所述SDO是內存中最近最少訪問的,則所述SDO的狀態為不活躍態。

7.  根據權利要求5所述的系統,其特征在于,所述檢測模塊具體用于:
檢測所述SDO在預設時間內是否被訪問;
若檢測到所述SDO在預設時間內沒有被訪問,則所述SDO的狀態為不活躍態。

8.  根據權利要求7所述的系統,其特征在于,所述處理模塊還用于:
計算內存中所有訪問次數小于第二預設閾值的SDO形成的滑動窗口的大小,將所述滑動窗口的大小作為所述預設時間;
具體的,采用公式delay(w,t)=hr(w,t)*dnosdo+(1-hr(w,t))*dload計算出擊中內存的概率hr的大小;
采用公式hr=P(w,t)計算處所述滑動窗口w的大小;
上述公式中,hr為擊中內存的概率,擊中內存指的是所述SDO是內存中活躍態SDO的概率,t為時間,P(w,t)為采用窗口w、在t時刻的統計函數,delay為采用窗口w、在t時刻的處理延遲;dnosdo為直接從內存中取出所述SDO并投入計算應用時的處理延時;dload為從外部存儲器取出并恢復所述SDO狀態時的處理延遲。

說明書

說明書面向流式處理系統的內存對象管理方法及系統
技術領域
本發明涉及分布式計算機領域,尤其涉及一種面向流式處理系統的內存對象管理方法及系統。
背景技術
隨著互聯網的持續發展和物聯網的迅速崛起,流數據廣泛出現在網絡監控、傳感器網絡、航空航天、電子商務、智慧交通和智慧旅游等應用領域,其中,流數據是一組順序、大量、快速、連續到達的數據序列。相比于傳統的大數據,流數據以大量、快速、時變的數據流持續到達,由此產生了一個新的研究問題:實時流數據處理。
一般情況,實時流數據處理是針對持續產生的流數據,根據應用需求快速建模,讓用戶實時地得到反饋,從而保證流數據的時效性。目前,由于流數據具有運行周期長、處理延遲低等需求和特點,在實時流數據處理過程中,需要在內存中保存大量計算參數、中間狀態等流數據對象(StreamingDataObject,簡稱SDO)。然而,在實時流數據處理過程中因長期運行大量流數據對象的使用并不活躍,并且大量不活躍的流數據對象長期占用內存。
因此,目前在實時流數據處理過程中,因長期運行而造成大量不活躍的流數據對象長期占用內存,從而造成系統資源的浪費。
發明內容
本發明提供一種面向流式處理系統的內存對象管理方法及系統,能夠避免有效因長期運行而造成大量不活躍的流數據對象長期占用內存,從而避免系統資源的浪費。
本發明第一方面提供的面向流式處理系統的內存對象管理方法,包括:
檢測內存中SDO的狀態;
其中,SDO的狀態包括:SDO的不活躍態,SDO的不活躍態指的是SDO 在預設時間內沒有被訪問或者是內存中所有SDO的數量達到第一預設閾值時SDO是內存中最近最少訪問的;
若檢測到SDO的狀態為不活躍態,則將SDO從內存中移除,并將SDO移動到外部存儲器。
本發明第二方面提供的面向流式處理系統的內存對象管理系統,包括:
檢測模塊,用于檢測內存中SDO的狀態;
其中,SDO的狀態包括:SDO的不活躍態,SDO的不活躍態指的是SDO在預設時間內沒有被訪問或者是內存中所有SDO的數量達到第一預設閾值時SDO是內存中最近最少訪問的;
處理模塊,用于若檢測到SDO的狀態為不活躍態,則將SDO從內存中移除,并將SDO移動到外部存儲器。
本發明提供的面向流式處理系統的內存對象管理方法及系統,通過檢測內存中SDO的狀態,若檢測到SDO的狀態為不活躍態,則將SDO從內存中移除,并將SDO移動到外部存儲器,實現自動檢測內存中不活躍的流數據對象,避免了在實時流數據處理過程中,因長期運行而造成大量不活躍的流數據對象長期占用內存,從而避免了系統資源的浪費。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明實施例一提供的面向流式處理系統的內存對象管理方法流程圖;
圖2為本發明實施例一提供的SDO的生命周期的狀態轉換圖;
圖3為本發明實施例二提供的面向流式處理系統的內存對象管理方法流程圖;
圖4為本發明實施例三提供的面向流式處理系統的內存對象管理方法流程圖;
圖5為本發明實施例一提供的SDO滑動窗口示意圖;
圖6為本發明實施例一提供的面向流式處理系統的內存對象管理系統結構示意圖。
具體實施方式
為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
圖1為本發明實施例一提供的面向流式處理系統的內存對象管理方法流程圖。如圖1所示,本發明實施例提供的內存對象管理方法,包括:
S101:檢測內存中SDO的狀態。
其中,SDO的狀態包括:SDO的不活躍態,SDO的不活躍態指的是SDO在預設時間內沒有被訪問或者是內存中所有SDO的數量達到第一預設閾值時SDO是內存中最近最少訪問的。
需要說明的是,本發明實施例提供的面向流式處理系統的內存對象管理方法的管理對象可以是系統中的任何Java對象以及用戶的自定義對象,但對于自定義對象,用戶須為其提供相應的序列化方法。本發明實施例提供的面向流式處理系統(簡稱流式系統)的內存對象管理方法能夠自動檢測不活躍對象,并將其持久化到可靠存儲,防止因不必要的內存占用而浪費內存資源;當對象恢復活躍時,能夠較快地恢復內存狀態,正常地為流式系統提供服務。為方便敘述,本發明實施例將流式處理系統中的管理對象統稱為流數據對象(StreamingDataObject,簡稱SDO)。流式系統使用SDO容器組織和管理SDO,SDO容器功能包括SDO組織和SDO生命周期管理等,將SDO容器集成到流式處理系統JStorm中,實現流式任務的數據對象管理。其中,JStorm是目前安裝和使用最多的流式處理系統,能夠提供分布式、低延遲、高吞吐的數據處理服務,其中JStorm是一個Java對象到關系數據庫的映射工具。
具體的,本發明實施例中將每個SDO分為三種狀態:不存在、活躍態和不活躍態。不存在指的是SDO還沒有被實施化,不在內存中。活躍態指的是流式系統可正常且經常使用SDO,SDO在內存中經常被訪問。 不活躍態指的是流式系統基本不使用SDO,也即,使用上不活躍的SDO,SDO在預設時間內沒有被訪問或者是內存中所有SDO的數量達到第一預設閾值時SDO是內存中最近最少訪問的。
S102:若檢測到SDO的狀態為不活躍態,則將SDO從內存中移除,并將SDO移動到外部存儲器。
其中,本發明實施例將檢測到的不活躍態的SDO從內存中移除,并將SDO移動到外部存儲器。需要說明的是,將SDO從內存中移除之前,釋放SDO持有的所有資源。將SDO移動到外部存儲器指的是將SDO序列化、持久化到外部存儲器。
具體的,本發明實施例為數據對象提供生命周期管理,防止不活躍數據對象占用內存。每個SDO的生命周期是在不存在、活躍態和不活躍態三個狀態間的流動,圖2為本發明實施例一提供的SDO的生命周期的狀態轉換圖,如圖2所示,SDO的生命周期的狀態轉換具體的存在以下情況:
不存在到活躍態:當流式系統用戶創建一個新的SDO實例時,SDO的生命周期開始,SDO由不存在轉換到活躍態,SDO初始化后,SDO保存在內存中開始被流式系統使用,此時,SDO從不存在轉換到活躍態。
活躍態到不活躍態:SDO保存在內存中開始被流式系統使用后,對SDO進行實時檢測,若檢測到SDO在預設時間內沒有被訪問或者是內存中所有SDO的數量達到第一預設閾值時SDO是內存中最近最少訪問的,SDO處于不活躍態,此時,SDO由活躍態轉換到不活躍態。
不活躍態到不存在:當將不活躍態的SDO從內存中移除時,此時,SDO由不活躍態轉換到不存在。
活躍態到不存在:需要說明的是,當SDO處于活躍態時,也有可能將SDO從內存中移除,此時,SDO由活躍態轉換到不存在。
需要說明的是,本發明實施例在外部存儲器可以是磁盤文件,也可以是數據庫,也可以是其他存儲形式,本發明實施例在此不進行限定和贅述。本發明實施例中將不活躍態的SDO移動到外部存儲器時,流式系統會為用戶提供接口,實現內存中的數據與外部存儲器中的數據交換。
本發明實施例提供的內存對象管理方法,通過檢測內存中SDO的狀態,若檢測到SDO的狀態為不活躍態,則將SDO從內存中移除,并將SDO 移動到外部存儲器,實現自動檢測內存中不活躍的流數據對象,避免了在實時流數據處理過程中,因長期運行而造成大量不活躍的流數據對象長期占用內存,從而避免了系統資源的浪費。
圖3為本發明實施例二提供的面向流式處理系統的內存對象管理方法流程圖。本發明實施例提供的方法為圖1所示實施例一提供方法的一種具體實現方式,如圖3所示,本發明實施例提供的內存對象管理方法,包括:
S301:檢測內存中所有SDO的數量是否達到第一預設閾值。
具體的,本發明實施例中基于空間的管理模式檢測SDO的狀態,設定一個內存中SDO的數量上限,即對內存中SDO的數量設定一個第一預設閾值。通過檢測內存中所有SDO的數量是否達到第一預設閾值,可以防止SDO無限制地占用內存,實現對系統資源的保護。
需要說明的是,本發明實施例中的第一預設閾值根據實際應用中流式系統的資源情況和SDO的大小而定,本發明實施例在此不進行限定和贅述。
S302:若內存中所有SDO的數量達到第一預設閾值,則檢測SDO是否是內存中最近最少訪問的。
具體的,當檢測到內存中SDO的數量達到第一預設閾值時,則檢測SDO是否是內存中最近最少訪問的。當檢測到內存中所有SDO的數量達到第一預設閾值,按照內存中最近最少訪問順序移除SDO,可以在保護流式系統資源的前提下,為流水系統中的任務提供最低延遲。
需要說明的是,SDO容器可以對內存中的所有SDO進行排序,根據SDO在固定時間內SDO的訪問情況對SDO進行排序。內存中最近最少訪問的SDO指的是在內存中SDO在固定時間內訪問最少的。
S303:若檢測到SDO是內存中最近最少訪問的,則將SDO從內存中移除,并將SDO移動到外部存儲器。
其中,若SDO是內存中最近最少訪問的,則SDO的狀態為不活躍態。
具體的,當內存中SDO的數量達到上限時,將內存中最近最少訪問的SDO從內存中移除。
本發明實施例提供的內存對象管理方法,通過檢測內存中所有SDO的數量是否達到第一預設閾值,若內存中所有SDO的數量達到第一預設閾值,則檢測SDO是否是內存中最近最少訪問的,將內存中最近最少訪 問的SDO從內存中移除,并將SDO移動到外部存儲器,實現基于空間的管理模式自動檢測內存中不活躍的流數據對象,避免了在實時流數據處理過程中,因長期運行而造成大量不活躍的流數據對象長期占用內存,從而避免了系統資源的浪費。
圖4為本發明實施例三提供的面向流式處理系統的內存對象管理方法流程圖。本發明實施例提供的方法為圖1所示實施例一提供方法的另一種具體實現方式,如圖4所示,本發明實施例提供的內存對象管理方法,包括:
S401:檢測SDO在預設時間內是否被訪問。
具體的,本發明實施例中基于時間的管理模式檢測SDO的狀態,設定一個超時時間,即設定一個預設時間,通過檢測SDO在預設時間內是否被訪問來檢測SDO的狀態。
S402:若檢測到SDO在預設時間內沒有被訪問,則將SDO從內存中移除,并將SDO移動到外部存儲器。
其中,若檢測到SDO在預設時間內沒有被訪問,則SDO的狀態為不活躍態。
具體的,當檢測到SDO在預設時間內沒有被訪問,則SDO的狀態為不活躍態,將SDO從內存中移除。可知,本發明實施例中基于時間的管理模式,按照SDO在預設時間內是否被訪問移除SDO,將在預設時間內沒有被訪問的SDO從內存中移除。
本發明實施例提供的內存對象管理方法,通過檢測SDO在預設時間內是否被訪問,若檢測到SDO在預設時間內沒有被訪問,則將SDO從內存中移除,并將SDO移動到外部存儲器,實現基于時間的管理模式自動檢測內存中不活躍的流數據對象,避免了在實時流數據處理過程中,因長期運行而造成大量不活躍的流數據對象長期占用內存,從而避免了系統資源的浪費。
進一步地,在圖4所示實施例中,在檢測SDO在預設時間內是否被訪問之前,包括:
計算內存中所有訪問次數小于第二預設閾值的SDO形成的滑動窗口的大小,將滑動窗口的大小作為預設時間;
具體的,采用公式delay(w,t)=hr(w,t)*dnosdo+(1-hr(w,t))*dload計算出擊中內 存的概率hr的大小;
采用公式hr=P(w,t)計算處滑動窗口w的大小;
上述公式中,hr為擊中內存的概率,擊中內存指的是SDO是內存中活躍態SDO的概率,t為時間,P(w,t)為采用窗口w、在t時刻的統計函數,delay為采用窗口w、在t時刻的處理延遲;dnosdo為直接從內存中取出SDO并投入計算應用時的處理延時;dload為從外部存儲器取出并恢復SDO狀態時的處理延遲。
具體的,圖5為本發明實施例一提供的SDO滑動窗口示意圖,如圖5所示,本發明實施例中為開發者提供“合適的”SDO過期時間的計算方法,“合適的”過期時間是指在保證延遲用戶可接受的前提下,最大限度的降低內存占用率。如圖5所示,可以將內存中SDO看成是最近最少使用SDO鏈上的滑動窗口范圍內的數據,滑動窗口代表著SDO的過期時間。
需要說明的是,本發明實施例中的第二預設閾值根據實際應用中流式系統的資源情況和SDO的訪問次數而定,本發明實施例在此不進行限定和贅述。
在實際應用中,可以測試得到直接從內存中取出SDO并投入計算應用時的處理延時dnosdo和從外部存儲器取出并恢復SDO狀態時的處理延遲dload,根據測試得到的dnosdo和dload采用公式delay(w,t)=hr(w,t)*dnosdo+(1-hr(w,t))*dload可以得到采用窗口w、在t時刻的處理延遲delay隨擊中內存的概率hr變化的函數。給定一個用戶最大可接受的處理延遲delay,即可得到相應的內存的概率hr。采用擬合統計公式hr=P(w,t),可以得到隨時間t變化的滑動窗口w的大小。
需要說明的是,在實際應用中,滑動窗口的大小對內存占用率和處理延遲具有一定的影響,具體為:增大滑動窗口,導致內存中活躍對象的比例增大,內存占用率與活躍對象比例呈正比,因此內存占用率相應增大;而處理延遲與內存擊中率直接相關,內存擊中率受活躍對象比例和數據連續性兩方面共同影響,對于連續性穩定的數據,整體上內存擊中率隨活躍對象比例增大而增大或不變,例如:當數據隨機到達時,內存擊中率與活躍對象比例呈正比關系,數據活躍比例一定時,數據的連續性高,內存擊中率越大。用戶給定最大可接受的處理延遲,在每個時間點會對應一組滑動窗口值,由于內 存占用隨滑動窗口的增大而增大,因此取這組滑動窗口值中最小值作滑動窗口的大小,即可達到在給定最大可接受處理延遲的前提下,將內存占用降到最低。
需要說明的是,本發明實施例提供的面向流式處理系統的內存對象管理方法為達到防止不活躍對象耗費內存的目的,須對檢測出的不活躍SDO采取一定的處置措施,使得其不占用或盡量少占用內存。本發明為流失系統的用戶提供接口,開發者可自行選擇如何處置不活躍的SDO,可通過接口將不活躍的SDO做適當壓縮或直接將其移動到外部存儲器(磁盤文件、數據庫或其他存儲形式)中。
圖6為本發明實施例一提供的面向流式處理系統的內存對象管理系統結構示意圖。如圖6所示,本發明實施例提供的內存對象管理系統,包括:檢測模塊601和處理模塊602。
檢測模塊601,用于檢測內存中SDO的狀態。
其中,SDO的狀態包括:SDO的不活躍態,SDO的不活躍態指的是SDO在預設時間內沒有被訪問或者是內存中所有SDO的數量達到第一預設閾值時SDO是內存中最近最少訪問的。
處理模塊602,用于若檢測到SDO的狀態為不活躍態,則將SDO從內存中移除,并將SDO移動到外部存儲器。
本發明實施例的內存對象管理系統用于執行圖1所示方法實施例的技術方案,其實現原理和技術效果類似,此處不再贅述。
進一步地,在上述所示實施例中,檢測模塊601具體用于:
檢測內存中所有SDO的數量是否達到第一預設閾值。
若內存中所有SDO的數量達到第一預設閾值,則檢測SDO是否是內存中最近最少訪問的。
若SDO是內存中最近最少訪問的,則SDO的狀態為不活躍態。
進一步地,在上述所示實施例中,檢測模塊601具體用于:
檢測SDO在預設時間內是否被訪問。
若檢測到SDO在預設時間內沒有被訪問,則SDO的狀態為不活躍態。
進一步地,在上述所示實施例中,處理模塊602還用于:
計算內存中所有訪問次數小于第二預設閾值的SDO形成的滑動窗口的 大小,將滑動窗口的大小作為預設時間;
具體的,采用公式delay(w,t)=hr(w,t)*dnosdo+(1-hr(w,t))*dload計算出擊中內存的概率hr的大小;
采用公式hr=P(w,t)計算處滑動窗口w的大小;
上述公式中,hr為擊中內存的概率,擊中內存指的是SDO是內存中活躍態SDO的概率,t為時間,P(w,t)為采用窗口w、在t時刻的統計函數,delay為采用窗口w、在t時刻的處理延遲;dnosdo為直接從內存中取出SDO并投入計算應用時的處理延時;dload為從外部存儲器取出并恢復SDO狀態時的處理延遲。
最后應說明的是:以上各實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述各實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使對應技術方案的本質脫離本發明各實施例技術方案的范圍。

關 鍵 詞:
面向 處理 系統 內存 對象 管理 方法
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:面向流式處理系統的內存對象管理方法及系統.pdf
鏈接地址:http://www.rgyfuv.icu/p-6409451.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
山东11选5中奖结果走势图