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