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