閻婷婷
性能是數(shù)字電視運營前端實時播出系統(tǒng)至關(guān)重要的因素之一。對于計算機本身,合理的軟、硬件的配置可以使系統(tǒng)的使用達(dá)到最佳。
一、代碼優(yōu)化
對于一套系統(tǒng),使用不同的變量,函數(shù)和邏輯雖然最終都可以達(dá)到目的,但程序可讀性、易維護(hù)性、復(fù)雜性可能完全不同,效率可能截然不同。
在MSCAS中有一個實際需求就是通過三個數(shù)字合起來定位一個元素。也就是說以DWORD1+DWORD2+DWORD3作為Key,去獲取一個Value。MFC和STL都沒有通過多個鍵查找一個元素的類,所以采用變通的辦法,即首先將3個DWORD類型鍵轉(zhuǎn)換成一個字符串型鍵:“DWORD1_DWORD2_DWORD3”這時問題就變成了通過一個字符串型key值查找一個元素了。MFC有基于CMap類的CMapStringToPtr類,而STL中有::std::map,在經(jīng)過大量的效率測試后發(fā)現(xiàn)后者比前者具有很高的效率。
鑒于MSCAS程序多處使用了CMap,為了保持代碼的兼容性,將改進(jìn)后的代碼按照CMap的方式將::std::map進(jìn)行了封裝,這樣可以保證代碼的最小改動性以適應(yīng)其他開發(fā)人員的開發(fā)習(xí)慣。
二、數(shù)據(jù)庫優(yōu)化與實現(xiàn)
2.1MSCAS數(shù)據(jù)庫瓶頸分析
CAS數(shù)據(jù)庫是整個系統(tǒng)的數(shù)據(jù)中心,它的性能直接影響著整個系統(tǒng)的性能,根據(jù)分析,其特點是:
·數(shù)據(jù)表結(jié)構(gòu)簡單,但數(shù)據(jù)量大。
·數(shù)據(jù)庫類型屬于OLTP和OLAP混合模式。
針對上述特點,數(shù)據(jù)庫在設(shè)計的時候應(yīng)該充分考慮到數(shù)據(jù)壓力對數(shù)據(jù)庫性能的影響,使用Oracle提供的分區(qū)表選件對大表進(jìn)行拆分;使用存儲過程封裝絕大多數(shù)數(shù)據(jù)庫操作以及使用合理的備份、遷移、數(shù)據(jù)生成方式提高整體系統(tǒng)的效率。
優(yōu)化前的MSCAS,在用戶數(shù)量到達(dá)10000以后,整體性能明顯下降。主要原因在于:
CAS數(shù)據(jù)庫的表沒有建立合適的索引,致使在數(shù)據(jù)庫數(shù)據(jù)量增加以后,過多的全表掃描大大增加了Oracle數(shù)據(jù)庫的磁盤讀寫I/O壓力和內(nèi)存訪問壓力。數(shù)據(jù)庫配置不合理,分配內(nèi)存過少引起數(shù)據(jù)庫中不必要的磁盤頁面交換和內(nèi)存調(diào)整。
為了提升整個CAS系統(tǒng)的效率,調(diào)優(yōu)方法如下:
通過對數(shù)據(jù)庫的表結(jié)構(gòu)和索引重新進(jìn)行合理設(shè)計,減少不必要的高負(fù)荷數(shù)據(jù)庫操作;對Oracle數(shù)據(jù)庫進(jìn)行運行時刻調(diào)優(yōu),讓Oracle在不同數(shù)據(jù)量壓力下都能運行在最佳狀態(tài)。
2.2分區(qū)表和分區(qū)索引的使用
在分區(qū)表上建立三種索引模式:全局分區(qū)索引、全局不分區(qū)索引和本地分區(qū)索引。在CAS數(shù)據(jù)庫中,對于查詢效率比較高的索引采用全局分區(qū)索引,同時對更新頻率相對比較高的字段建立本地分區(qū)索引。
2.3索引的使用
索引(Index)是常見的數(shù)據(jù)庫對象,它的設(shè)置好壞、使用是否得當(dāng),直接影響著數(shù)據(jù)庫應(yīng)用程序和數(shù)據(jù)庫的性能。通過建立B-TREE索引、復(fù)合索引和普通索引以及位圖索引相,系統(tǒng)速度大大提高,同時數(shù)據(jù)庫壓力也減小不少。
2.4測試和驗證
通過對100萬用戶量級批量授權(quán)速度進(jìn)行測試,結(jié)果表明在大用戶量的情況下,一次進(jìn)行190條記錄的批量設(shè)置,速度仍然可以達(dá)到1分鐘以內(nèi),完全可以滿足商用目的。
三、數(shù)據(jù)包的收發(fā)優(yōu)化策略與實現(xiàn)
授權(quán)信息、OSD,E-mail等信息都要求用戶能即時收到的信息都是通過EMM包來傳送的。因此,如何設(shè)計一種高效的發(fā)送接收策略能讓用戶即時的收到EMM包是條件接收系統(tǒng)性能優(yōu)化中的最重要部分。
3.1EMM包概述
EMM包是數(shù)字電視前端向終端發(fā)送的主要信息。EMM包的收發(fā)原理是所有數(shù)據(jù)在一個大的隊列中循環(huán)發(fā)送。在終端,當(dāng)用戶將智能卡插入機頂盒后,機頂盒將根據(jù)此智能卡的卡號來過濾流中屬于此智能卡的EMM數(shù)據(jù)。EMM包發(fā)送優(yōu)化的目的就是使前端新產(chǎn)生的數(shù)據(jù)包在終端能在最短的時間內(nèi)接收處理。
3.2終端的接收機制和策略
數(shù)字電視信息終端由機頂盒、智能卡和電視機組成。機頂盒接收所有前端傳來的信號,其中與CAS模塊有關(guān)的EMM包和ECM包需要送入智能卡解密。最終通過ECM包得到明文的CW后,機頂盒解擾芯片將加擾的節(jié)目流解開后就可以在電視機上正常的播放。
機頂盒的工作原理如圖1所示:
對于EMM包的接收,機頂盒有一個過濾器,可以通過設(shè)置特定的過濾條件來接收需要的包。通過設(shè)置過濾器,機頂盒就可以收到制定卡號的包,當(dāng)過濾到一個需要的包后,會有一定的判斷、解析和處理時間。因此同一張卡的兩個數(shù)據(jù)包需要有一定的間隔。
3.3前端的發(fā)送機制、策略和實現(xiàn)
前端的發(fā)送機制首先是建立在終端接收機制基礎(chǔ)上,只有分析研究出一個準(zhǔn)確的業(yè)務(wù)模型,才能建立好的發(fā)送策略。
以授權(quán)包的發(fā)送為例,一個新的業(yè)務(wù)交易流程如下:用戶交費→SMS調(diào)用CAS發(fā)送授權(quán)→CAS生成EMM包通過復(fù)用器發(fā)送→終端接收到EMM包→解密節(jié)目,用戶可以收看節(jié)目。
大部分情況下,新業(yè)務(wù)是由用戶引起的,因此前端在發(fā)送數(shù)據(jù)的時候終端機頂盒處于開狀態(tài),智能卡插在機頂盒中等待接收數(shù)據(jù),稱為第一類用戶,(約占90%)。發(fā)送授權(quán)數(shù)據(jù)的當(dāng)時,終端機頂盒并沒有處在準(zhǔn)備好的狀態(tài),用戶可能在晚上才看電視,稱為第二類用戶(約占8%)。對于自動扣款的用戶,有可能出差等緣故幾天都不看電視,稱為第三類用戶(約占2%)。
根據(jù)上述分布,為了保證對于用戶響應(yīng)的及時性,提出優(yōu)先級不同的三個邏輯上的隊列:即時隊列、優(yōu)化隊列和惰性隊列。所有的數(shù)據(jù)包最后通過復(fù)用器向終端發(fā)送的時候都是一個一個串行發(fā)送的,通過點名控制模塊解決如何查找“下一個”的問題。不同的是三個隊列包含的數(shù)據(jù)包不同,發(fā)送的頻率不同。
三個隊列優(yōu)先級由高到低排列如下:即時隊列>優(yōu)化隊列>惰性隊列。
3.4測試和驗證
在數(shù)據(jù)包的發(fā)送策略沒有優(yōu)化之前,用戶接收到的數(shù)據(jù)最大時間依賴于惰性隊列發(fā)送一輪的時間,這種劣勢在數(shù)據(jù)量小的時候不明顯,但當(dāng)數(shù)據(jù)量較大時對于用戶接收新數(shù)據(jù)包就體現(xiàn)的相當(dāng)明顯。表2為優(yōu)化前與優(yōu)化后的測試數(shù)據(jù)比較:(發(fā)送帶寬500kbps,每天更新數(shù)據(jù)包4000個)。
由試驗結(jié)果得出,在沒有優(yōu)化的情況下,接收數(shù)據(jù)的時間會隨著數(shù)據(jù)量的增加的不斷的增加,無法適用于大用戶量的情況。
優(yōu)化后即時隊列和優(yōu)化隊列的接收時間基本上保持穩(wěn)定,沒有隨著用戶量的增加而增加,解決了98%的用戶的接收問題。只有惰性隊列的接收時間與用戶量的增加有關(guān)并且比優(yōu)化前的要慢。
四、結(jié)論
MSCAS的設(shè)計在可擴展性、兼容性、穩(wěn)定性、安全性等方面具有借鑒意義。在具體的設(shè)計和實現(xiàn)方面,對于在條件接收系統(tǒng)的設(shè)計和實現(xiàn)、C/S結(jié)構(gòu)模式通信方式、性能優(yōu)化、后臺控制程序設(shè)計原則、數(shù)據(jù)廣播的策略等方面也有一定的借鑒意義。
五、進(jìn)一步探討
對于MSCAS本身,操作系統(tǒng)平臺的選擇和裁剪方面還可以進(jìn)一步優(yōu)化,以增加系統(tǒng)的穩(wěn)定性、安全性和效率。
而在監(jiān)控方面,除了有良好的監(jiān)控界面和完善的日志系統(tǒng)外,遠(yuǎn)程調(diào)試也是一個節(jié)省時間,提高效率的選擇。