?

商用多媒體信息發布系統持久層設計與優化

2015-06-27 08:26吉亞云葉德建
計算機工程 2015年1期
關鍵詞:節目單組件對象

吉亞云,劉 新,葉德建

(復旦大學a.軟件學院;b.網絡信息安全審計與監控教育部工程研究中心,上海201203)

商用多媒體信息發布系統持久層設計與優化

吉亞云a,劉 新b,葉德建b

(復旦大學a.軟件學院;b.網絡信息安全審計與監控教育部工程研究中心,上海201203)

大規模的商業多媒體信息發布系統因資源及終端數量龐大,會導致系統性能低下。為此,提出一種能優化系統數據存取操作的數據持久層設計方案。研究并分析多媒體信息發布系統的特征,選擇Hibernate框架設計系統持久層,總結Hibernate框架在該類系統中合理并高效使用的方法,針對基于Web的多媒體信息發布系統,給出可以使用Servlet過濾器來管理Hibernate的Session緩存,以延長Session對象的生命周期,減少系統對Session對象的查找,并能較為充分地利用Session對象中的緩存數據。實驗結果表明,綜合上述多種優化方法,可大幅減少多媒體信息發布系統的資源消耗,有效提高系統的整體性能。

多媒體信息發布系統;數據持久性;Session緩存;過濾器

1 概述

多媒體信息發布系統融合網絡技術、信息技術和多媒體技術[1],實現對音視頻、圖片、文本等多種素材的編輯制作和控制播放,同時支持在顯示器、電視機、LED、拼接墻、觸摸屏、安卓廣告機等多種顯示終端上自由組合發布信息,支持在顯示屏上任意劃分顯示區域、定點定時播放以及遠程集中式管理[2]。目前,國內多媒體信息發布系統(Multimedia Information Publishing System,MPS)已廣泛應用于酒店、醫院、銀行、商場、交通、傳媒、社區等場所,為現代化城市提供了便捷、多樣、實時的信息傳播。

大型商業多媒體信息發布系統具有資源數量多、終端數量龐大、發布內容豐富多樣等特點,因此,系統性能尤為重要。較好的數據持久層設計,能夠優化數據存取操作,提高數據庫訪問效率,從而有效提高系統的性能表現。

數據持久化領域存在著多種成熟的持久化框架,本文結合大規模商用多媒體信息發布系統數據量大、數據之間關系復雜的特點,選擇合適的持久化框架,并在系統中進行應用,提出一種優化系統數據存取操作的數據持久層設計方案。

2 多媒體信息發布系統

2.1 系統介紹

多媒體信息發布系統通常由機頂盒終端、發布系統服務器、資源服務器、播放管理工作站等部分組成。依據不同的應用場景,系統組成可能略有不同。在實際應用中,發布系統服務器和資源服務器可以合并為同一臺服務器。多媒體信息發布系統網絡拓撲結構如圖1所示。

圖1 多媒體信息發布系統網絡拓撲

播放管理中心是對多媒體信息進行編輯處理和控制發布的專業系統平臺,它的主要功能包括播放資源管理、節目單制作、終端管理、終端播放管理、數據統計查詢、用戶管理、權限管理以及系統參數配置等模塊。

在一般情況下,用戶通過多媒體信息系統,發布信息的操作過程可以分為以下步驟:(1)準備播放資源。用戶將音視頻、圖片、文本、文檔、天氣等資源上傳至系統,進行編輯、預覽、分類等操作管理。(2)繪制布局。布局是一個平面的顯示模式,定義屏幕上不同區域顯示不同類型資源。資源顯示區域稱為組件。(3)制作節目。用戶選擇一個布局,為布局中每一個組件設置一系列與組件相同類型的資源進行播放,每個組件的所有資源播放屬性集合稱為資源播放任務集。(4)編輯節目單。用戶選擇多個節目編輯為節目單,設置節目播放順序與播放屬性(常規、定時、插播)。(5)發布節目單。用戶選擇多個終端或終端組播放選定的節目單。終端收到播放命令將即時更新播放內容。

節目單制作與發布相關的概念分析如圖 2所示。

圖2 節目單制作與發布相關的概念分析

2.2 系統特征分析

本文通過對新華社智能信息發布系統一個星期內的用戶操作日志進行統計分析,節目單制作與發布操作所占比例最高,其次是資源上傳與用戶登錄操作。然而節目單制作與發布卻是系統性能問題最為突出的地方。存在如下問題:

(1)數據之間關聯多且關系復雜

一個節目單可發布到多個終端或終端組進行播放,節目單可包含多個節目,節目對應特定的布局,而一個布局可以被多個節目使用,節目布局中的組件可包含多個資源播放任務,而一個資源又可以被多個節目所使用。

綜上所述,系統中各種數據之間密切的關聯,且關系復雜。對一個節目單進行編輯時,節目單初始化過程如圖3所示,系統將對節目單、節目、布局、組件、任務集、任務、資源等數據進行聯合查詢,然后將節目單所有相關信息封裝并返回到編輯頁面。

圖3 節目單制作初始化流程

(2)產生大量數據庫SQL且以查詢為主

因為系統上述特征,在對節目進行編輯時,系統將查詢所有使用該節目的節目單,然后更新所有使用這些節目單的終端的播放內容,這將導致大量的數據庫操作。

連續添加播放資源后數據庫的狀態如圖4所示,在節目資源播放屬性進行修改并應用時,數據庫SQL執行語句突增,并且大部分SQL語句為數據庫查詢語句,增刪改語句相對較少。

圖4 連續添加播放資源后數據庫的狀態

(3)用戶操作獨立性高

在一般情況下,用戶對節目單的制作與發布控制獨立性比較高。雖然節目或節目單制作操作時間長,但用戶的操作數據都是臨時存放在瀏覽器客戶端,只有在保存修改時才會對數據庫進行修改,并向終端發送發布命令。

2.3 系統持久層設計

在軟件的分層體系結構中,持久層是與數據庫打交道的邏輯層,在數據庫中對數據的增加、刪除、查找和修改操作由持久層進行處理[3]。目前,在Java EE應用開發領域存在著JDBC、JDO、EJB實體Bean、對象/關系映射(Object/Relation Mapping, ORM)工具這幾種常用的持久層的解決方案[4]。文獻[5]對以上解決方案進行了詳細的對比。

Hibernate是當前流行的開源ORM工具,它對JDBC進行了輕量級的封裝[6],使開發人員可以用面向對象編程的方式操控數據庫[7]。Hibernate不僅提供了Java類到數據庫表的映射,還提供了數據查詢和獲取方法。相對于使用JDBC和SQL來手工操作數據庫,可大幅度減少操作數據庫工作量[8]。文獻[5]指出,對于大的項目,特別是持久層關系映射很復雜的情況下,Hibernate效率會高的驚人,JDBC次之,而EJB架構很可能會失敗。

商業多媒體信息發布系統可定義為大的項目,且具有持久層關系映射復雜的特征。采用Hibernate框架對業務層數據的操作進行持久化是最好的選擇。

3 Hibernate在系統中的優化使用

本文采用新華社多媒體信息發布系統作為分析對象,該系統應用于新華社新聞、傳媒、娛樂、廣告等信息的發布,應用于全國多個城市,擁有上萬個顯示終端。

3.1 抓取策略的調整

本文2.2節分析指出,多媒體信息發布系統數據之間關系多且相對復雜,所以,在查詢獲取數據時需對查詢對象及其關聯對象的獲取方式進行權衡。

Hibernate提供4種抓取策略來獲取關聯對象,即連接抓取、查詢抓取、子查詢抓取和批量抓取[9]。連接抓取為立即抓取;Hibernate默認為延遲抓取除非你顯式的指定lazy=false禁止延遲抓取,否則只有真正訪問關聯關系時,才會執行對關聯的對象的查詢語句。

在新華社多媒體信息發布系統的Hibernate配置文件中,所有的關聯對象的lazy屬性都被設置為false,即立即抓取。這使得用戶在對一個簡單對象進行查詢時,如節目單信息,系統將會自動加載與其相關聯對象,節目單相關聯的節目列表、節目相關聯的布局等信息,造成極大的浪費。因此,對于持久層關系映射復雜的多媒體信息發布系統應盡量使用Hibernate的延遲加載特性,以避免大量不需要的查詢。

另外,在對關聯對象進行抓取時可以使用批量抓取方式,通過對配置文件顯示地設定合理的批處理參數(batch_size)在類級別或集合級別批量抓取關聯對象。

3.2 Hibernate緩存的使用

Hibernate緩存包括一級緩存和二級緩存,一級緩存是通過將數據存放在Session對象中來實現的,也稱為 Session緩 存;Hibernate二級緩存由SessionFactory對象進行管理,是應用級別的緩存,二級緩存主要由可卸載的第三方緩存組件構成,如EHCache、0SCache、JBossCache等[10]。

使用Hibernate二級緩存當系統對數據進行過一次查詢后,在Session對象已經關閉再次對相同的數據進行查詢時,就會先從二級緩存查找是否已經有了該條數據,當二級緩存中沒有找到該數據才會到數據庫中查詢[11]。

新華社多媒體信息發布系統中未配置Hibernate二級緩存,而多媒體信息發布系統用戶的操作數據在一段時間內具有重復性,使用二級緩存可減少對數據庫的查詢。

3.3 Session管理機制

Hibernate Session緩存保著持Session內部的數據狀態同步[12]。在同一個Session中不會對同一個對象進行2次加載,因為第2次加載時Session會從緩存中讀取,所以不會向數據庫發出2條SQL語句。但Session緩存是不會共享的,在Session關閉之后數據將全部消失,所以合理的Session管理機制顯得尤為重要。

新華社多媒體信息發布系統很好地實現了業務邏輯層和數據持久層的分離,但在系統的每個數據訪問對象(Data Access Object,DAO)中,每一個方法都是先開辟一個Session對象,在獲取數據后立即將Session關閉。多媒體信息發布系統的關系映射復雜,在一個操作內可能對同一個對象多次加載或使用。另外,系統用戶操作相對獨立,單個用戶操作并不會長期占用資源。若在一個用戶操作內只開辟一個Session對象進行重復利用,將減少系統數據庫查詢。

在Hibernate中 SessionFactory是線程安全的, SessionFactory負責創建Session對象;而Session不是線程安全的,也就是說如果多個線程同時訪問一個Session進行數據操作將會導致Session數據邏輯混亂。ThreadLocal是一種Java線程綁定機制,JVM為每一個運行的線程綁定了私有的本地實例存取空間,從而為多線程環境提供了常出現的并發訪問問題提供了一種隔離機制[13]。

對于一個基于Web的應用,首先Servlet是多線程的。Servlet2.3規范中引入了過濾器(Filter)[14], Filter的生命周期是貫穿其所覆蓋的Servlet及其底層對象的,Filter在 Servlet被調用之前執行,在Servlet調用結束之后結束。

基于上面的分析,可以通過添加一個Hibernate Session對象管理Filter,設置一個靜態的ThreadLocal對象為其成員變量用以存取Session,在Filter的doFilter()方法中,鏈接其他Filter之前創建一個新的session實例到ThreadLocal中,在鏈接其他Filter之后設置ThreadLocal中的Session為空,并關閉Session。示例代碼如下:

以上代碼實現了通過Filter獲取和關閉Session,使得周期內所有對象都對此Session實例進行重用,保證了一個 HTTP請求處理過程中只占用一個Session,充分利用了Session對象的緩存,系統數據庫查詢次數將大大降低。

4 優化實施與結果

4.1 系統優化實施

本文對新華社智能多媒體信息發布系統持久層進行的優化工作,主要包括以下部分:

(1)使用Hibernate的延遲加載機制。

(2)集合的加載采用批量抓取策略,并且對批處理參數(batch_size)的設定進行優化。

(3)使用EHCache緩存組件作為Hibernate二級緩存。

(4)使用Servlet Filter進行Hibernate Session對象管理,并使用ThreadLocal機制實現Session的線程安全存取。

(5)此外,注重業務邏輯與持久層的分離,注重Hibernate查詢方法的選用。

4.2 Hibernate統計機制

沒有監測和性能參數而進行優化是毫無意義的。Hibernate為其內部操作提供了一系列的示意圖,因此,可以從每個Session Factory抓取其統計數據,如Session數、數據庫連接數、事務數、實體集合個數、二級緩存使用情況等。

可以通過在hibernate.cfg.xml配置文件中將統計屬性hibernate.generate_statistics設置為true,或者在運行期間調用 SessionFactory的 getStatistics(). setStatisticsEnabled(true)方法來使用Hibernate統計機制。

4.3 系統優化結果

系統具體優化實施環境為:硬件環境:CPU2.27 GHz,內存2.0 GB;操作系統:CentOS 5 Linux操作系統;Web容器:Tomcat 7.0服務器;數據庫: MySQL5.5版本。

測試用例1節目單編輯初始化。每個節目單包含10個節目信息,每個節目布局包含3個~4個組件,每個組件中包含10個~12個播放資源。節目單發布于4個播放終端。

測試用例2節目編輯刪除資源播放任務。節目包含5個資源組件,每個組件包含10個~12個資源,節目被5個節目單所使用,每個節目單發布給3個~4個終端組。

IIPS資源管理平臺優化前后性能對比如表1所示,表中頁面響應時間為同一個用例多次操作系統的平均響應時間。二級緩存second_level_cache指標表示放置數/命中數/錯過數(put/hit/miss)。

表1 IIPS資源管理平臺優化前后性能對比

通過表1可知,經過優化后的多媒體信息發布系統節目單初始化以及節目編輯操作,向數據庫發送的SQL數目大大減少,開辟的Session對象數和數據庫連接數也明顯降低,系統的頁面響應時間縮短,系統性能明顯提高。

5 結束語

本文通過對商用多媒體信息發布系統的特征進行分析,采用Hibernate作為系統持久層框架,并對Hibernate在該類系統中的使用進行了優化,實驗結果證明系統性能得到了提高。目前,本文分析的多媒體信息發布系統都是基于關系型數據庫,隨著商用多媒體信息發布系統的規模不斷擴大,后期將會對非關系型數據庫在該類系統中的應用進行調研與測試。

[1] 趙艷偉.淺析多媒體信息發布系統[J].科技與企業, 2012,21(5):85-85.

[2] 遠紅亮.多媒體信息發布系統及圖書館應用[J].現代情報,2011,31(7):85-89.

[3] 吳衛平,王麗芳,蔣澤軍,等.基于ORM的數據持久層框架研究[J].微電子學與計算機,2008,25(7):188-190,193.

[4] 徐世友,袁兆山,李 峻,等.Java EE數據持久層解決方案的設計與實現[J].合肥工業大學學報:自然科學版,2009,32(1):47-50.

[5] 方 巍,孫 涌,崔志明,等.J2EE數據持久層的應用研究[J].計算機技術與發展,2007,17(2):68-71.

[6] Wu Peng,Yin Ke.Application Research on a Persistent Technique Based on Hibernate[C]//Proceedingsof InternationalConference on Computer Design and Applications.[S.l.]:IEEE Press,2010:629-631.

[7] 董洪杉,竇延平.利用Hibernate的J2EE數據持久層的解決方案[J].計算機工程,2004,30(z1):17-18,86.

[8] 劉艷霞.J2EE項目中的數據持久層設計[J].工程地質計算機應用,2005,10(1):10-13.

[9] 陳正舉.基于HIBERNATE的數據庫訪問優化[J].計算機應用與軟件,2012,29(7):144-149.

[10] 程光磊.關于Hibernate緩存機制的研究[J].軟件導刊,2011,10(4):30-31.

[11] Wu Qinglin,Hu Yanzhong,Wang Yan.Research on Data Persistence Layer Based on Hibernate Framework[C]// Proceedings of the 2nd IEEE International Workshop on Intelligent Systems and Applications.[S.l.]:IEEE Press, 2010:1-4.

[12] 敖小玲,黃 晉.Hibernate緩存機制研究與應用[J].計算機與現代化,2010,26(9):68-72.

[13] 唐擁政,衡冬梅.基于Hibernate的數據持久層關鍵技術的研究[J].鹽城工學院學報:自然科學版,2006,19(2): 18-21.

[14] Coward D,Yoshida Y.Java Servlet Specification Version 2.3[EB/OL].(2010-11-21).http://download.csdn.net/ detail/bjdream1987/2706663.

編輯 劉 冰

Design and Optimization of Persistence Layer for Commercial Multimedia Information Publishing System

JI Yayuna,LIU Xinb,YE Dejianb
(a.School of Software;b.Engineering Research Center of Cyber Security Auditing and Monitoring,Ministry of Education,Fudan University,Shanghai 201203,China)

For large-scale commercial Multimedia Information Publishing System(MPS)contains huge number of resources and terminals,that can lead to low performance of the system,this paper puts forward a design plan of data persistence layer to optimize the system data access operation.Based on the research and analysis of the characteristics of MPS,it chooses the Hibernate framework as the system data persistence design,summarizes and analyzes the general methods of how to use Hibernate properly in MPS,and puts forward that web-based MPS can use the servlet filters to manage the Hibernate session,which can prolong the life cycle of the session object and reduces the system consumption of the session object,and makes full use of the cached data in the session object.Experimental results show that the integrated optimization method mentioned above,can greatly reduce the resource consumption of MPS system and improves the overall performance of the system effectively.

Multimedia Information Publishing System(MPS);data persistence;Session cache;filter

1000-3428(2015)01-0261-05

A

TP37

10.3969/j.issn.1000-3428.2015.01.049

上海市科技成果轉化和產業化基金資助項目“基于云計算構建的電信網絡交互式電視業務系統研發”(12511503000)。

吉亞云(1989-),女,碩士研究生,主研方向:網絡多媒體;劉 新,講師;葉德建,副教授。

2014-01-22

2014-04-04 E-mail:11212010013@fudan.edu.cn

中文引用格式:吉亞云,劉 新,葉德建.商用多媒體信息發布系統持久層設計與優化[J].計算機工程, 2015,41(1):261-265.

英文引用格式:Ji Yayun,Liu Xin,Ye Dejian.Design and Optimization of Persistence Layer for Commercial Multimedia Information Publishing System[J].Computer Engineering,2015,41(1):261-265.

猜你喜歡
節目單組件對象
無人機智能巡檢在光伏電站組件診斷中的應用
涉稅刑事訴訟中的舉證責任——以納稅人舉證責任為考察對象
新型碎邊剪刀盤組件
U盾外殼組件注塑模具設計
攻略對象的心思好難猜
幽你一默
到底誰先唱
基于熵的快速掃描法的FNEA初始對象的生成方法
區間對象族的可鎮定性分析
坐在節目單上
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合