□ 許紅燕
世紀常熟網(wǎng)是常熟廣播電視總臺旗下的門戶網(wǎng)站,從2004年網(wǎng)站開通至今,經(jīng)歷了十多年的發(fā)展。早期網(wǎng)站架設在自建機房內(nèi),隨著時間的推移,硬件設備更新?lián)Q代,網(wǎng)絡資源的分布和優(yōu)化越來越困擾運維人員。越來越多的公有云技術(shù)出現(xiàn),極大地解決了現(xiàn)有運維的困難。
目前網(wǎng)站主要由.NET動態(tài)技術(shù)實現(xiàn)對外提供WEB服務,所有.NET文件、腳本文件、樣式表文件和圖片都存放在此服務器上,和WEB應用對接的數(shù)據(jù)庫也部署在此服務器上。這使得服務器承擔了過多的任務職責。但是耦合度太高,出現(xiàn)故障時影響面比較大,故障也不容易排除。
視頻點播服務器主要承擔常熟電視臺自有欄目的在線回看點播功能,視頻源的錄制和采集則使用采集器對播放的電視節(jié)目定時錄制,并轉(zhuǎn)碼成適用于網(wǎng)絡上的碼率,通過視頻服務器上的Adobe流媒體服務器對外播發(fā)。目前主要錄制了包括《常熟新聞》《今日傳播》《春來茶館》等十余檔節(jié)目。電視播放結(jié)束之后,網(wǎng)上可實時回看。視頻點播服務器的難點在于帶寬,由于接入帶寬的限制(100m帶寬)不能滿足高峰時期用戶的點播需求,容易發(fā)生卡頓,視頻服務器也有負載過高的現(xiàn)象。
圖1 網(wǎng)站現(xiàn)有架構(gòu)
網(wǎng)站整體上云后主要實現(xiàn)了各個模塊的相對獨立,松耦合。主要包含靜態(tài)小文件模塊、視頻資源模塊和動態(tài)數(shù)據(jù)接口模塊。
將所有的html、js、css、圖片靜態(tài)小文件等全部放置在阿里云OSS,并且對這些小文件資源進行CDN加速,最大化提高用戶打開的速度。這樣做的好處是優(yōu)化了訪問的響應速度,降低了使用成本,更有安全保障(OSS由阿里云負責安全防護),同時在OSS層上使用了SSL的證書,用戶全程使用HTTPS訪問,確保用戶訪問安全。用戶訪問時打開的全部是經(jīng)過CDN加速,阿里云OSS提供的文件。HTML負責整個頁面框架,CSS負責頁面樣式風格,JS負責互動腳本和動態(tài)API資源的獲取與填充。
網(wǎng)站所有的動態(tài)數(shù)據(jù)內(nèi)容均由此接口提供,此接口部署在阿里云API網(wǎng)關(guān)上,由阿里云提供安全防護。API網(wǎng)關(guān)通過策略訪問內(nèi)網(wǎng)負載均衡,負載均衡監(jiān)聽服務器集群的HTTP端口,使用阿里云彈性伸縮對服務器集群做健康監(jiān)控與彈性伸縮,確保服務器集群能夠高效健康穩(wěn)定地提供服務。后端數(shù)據(jù)層使用了阿里的表格存儲,而非傳統(tǒng)的關(guān)系型數(shù)據(jù)庫。表格存儲能夠做到低延遲高并發(fā)、PB級的存儲、數(shù)據(jù)的容災等。同時使用表格存儲的另外一個好處是費用上的極大降低。較同量級的關(guān)系型數(shù)據(jù)庫SQLSERVER,能省80%的費用。所有的資源都部署在阿里云VPC私有云上,對外只有阿里云API網(wǎng)關(guān)與內(nèi)部溝通,極大地提高了資源的安全性。與直接通過負載均衡向外部提供服務相比,我們增加了云API層,好處是:降低了攻擊風險,內(nèi)網(wǎng)負載均衡是免費使用的,成本上更節(jié)約,同時在API上啟用了SSL證書,為前端js獲取數(shù)據(jù)提供HTTPS安全連接。
針對常熟臺的自辦欄目,使用客戶機PC加采集卡采集的方法,這種架構(gòu)較傳統(tǒng)的采編碼一體機的好處是可靈活配置,并且在采集工作站非采集工作任務時,可以為視頻存儲服務器提供轉(zhuǎn)碼服務,極大地減輕了視頻服務器轉(zhuǎn)碼所產(chǎn)生的工作負荷。具體工作流程是為客戶機PC的采集卡接入電視信號源,根據(jù)電視節(jié)目播出時間設置計劃任務,通過Adobe Flash Media Live Encoder進行命令行形式啟動和停止錄制(根據(jù)節(jié)目播放時間設置前后偏移量)。錄制的視頻為6M碼流MP4文件。
節(jié)目原始MP4文件錄制好之后,使用Adobe Flash Media Live Encoder根據(jù)設定的節(jié)目片頭和片尾對原始MP4文件進行掐頭去尾工作,并且對原始MP4的黑邊進行切除處理,確保每個視頻是干凈完整的不含黑邊的視頻。此步工作完成后,由客戶機PC本身對原始MP4文件進行轉(zhuǎn)碼操作。將6M的高碼流文件轉(zhuǎn)出為1M碼流2次編碼,音頻64k的視頻MP4文件,轉(zhuǎn)碼完成后自動通過FTP推送到視頻存儲服務器上,通過Adobe Media Server對外進行視頻點播的播發(fā)。
圖2 視頻采集工區(qū)
在前端頁面上展示的視頻資源都是統(tǒng)一放置在阿里云的OSS媒體庫上,同時也做了CDN加速和SSL安全證書。視頻資源部署的核心點在于OSS獲取錄制好的電視節(jié)目MP4文件。世紀常熟網(wǎng)使用被動調(diào)用的策略,當用戶訪問OSS上的MP4資源時,如果OSS上沒有此MP4文件則回源到本地服務器。一方面,在成本上,如果把所有的視頻資源都遷移到OSS上,勢必會涉及存儲成本,使用現(xiàn)有的服務器作為源站可以很好地解決這一問題。另一方面,所有錄制的MP4文件存放在本地服務器上,更加方便查閱。相比較其他資源的上云,視頻采集端是無法實現(xiàn)上云的,所以采集工作站依舊在本地完成,通過將采集下來的MP4文件預定轉(zhuǎn)碼為不同碼率存放到本地服務器上。這樣可以充分發(fā)揮采集工作站的工作效能,節(jié)省了使用云轉(zhuǎn)碼時產(chǎn)生的高昂的轉(zhuǎn)碼費用。
圖3 上云架構(gòu)圖
世紀常熟網(wǎng)資源完成了從自建系統(tǒng)到上云的技術(shù)操作,接下來計劃對上云架構(gòu)中的API接口的性能做進一步的提升,并逐步實現(xiàn)對外公共接口。在視頻資源播發(fā)上實現(xiàn)更大容量的容災備份、歷史資料存檔和去中心化。我們云上新的應用架構(gòu)既會兼容部分老應用架構(gòu)的特性,也會采用云上新技術(shù)和云上產(chǎn)品來解決我們曾經(jīng)的痛點和瓶頸。并且云上新架構(gòu)需要滿足未來2-3年的廣電業(yè)務發(fā)展規(guī)劃,在安全性上也會做進一步優(yōu)化。