杜歆文,瞿向雷,戴 駿
(蘇州廣播電視總臺 技術(shù)中心,江蘇 蘇州 215006)
電視互動應(yīng)用中大并發(fā)的處理
杜歆文,瞿向雷,戴 駿
(蘇州廣播電視總臺 技術(shù)中心,江蘇 蘇州 215006)
為了增加城市電視傳媒影響力,擴大收視群體,產(chǎn)生用戶即時互動,推進媒體融合,蘇州廣播電視總臺開發(fā)了一款城市傳媒即時互動手機應(yīng)用。該項目提供實時互動、點評節(jié)目、愛心捐助、獎品兌換、游戲娛樂等功能。在研發(fā)、使用過程中,發(fā)現(xiàn)業(yè)務(wù)存在大并發(fā)請求的問題。針對該問題,利用云計算資源,合理規(guī)劃系統(tǒng)架構(gòu),設(shè)計概率算法和金幣發(fā)放算法,滿足了業(yè)務(wù)需求,同時對系統(tǒng)的發(fā)展進行了規(guī)劃,使系統(tǒng)在一段時間內(nèi)能夠滿足業(yè)務(wù)增長。
互動;云計算;大數(shù)據(jù);并發(fā);概率
傳統(tǒng)模式下的電視節(jié)目互動方式有三種,即信件、電話以及采訪。信件互動的特點是信息量大,同步性相對較差;電話互動能實現(xiàn)同步,并且具備交流直觀特點;采訪互動的成本相對較高,但同樣能實現(xiàn)同步。在數(shù)字模式下,通常采用短信、網(wǎng)絡(luò)、數(shù)字機頂盒的形式進行互動。短信近十年已證明了這種模式的成功,但隨著網(wǎng)絡(luò)介入互動,需要研究費用更低、實時性更高、受眾更多的網(wǎng)絡(luò)模式以及如何與觀眾互動[1]。
借助網(wǎng)絡(luò)互動,原來不愿意看電視的網(wǎng)民可能被拉到電視機前,原來只是把電視當作“背景音樂”的觀眾可以關(guān)注到內(nèi)容上來,原來電視節(jié)目的鐵桿“粉絲”可以深度參與節(jié)目,借助互聯(lián)網(wǎng),可以實現(xiàn)對收視率的拉升,既增加了電視傳播的影響力,也體現(xiàn)了廣告價值。同時,借助網(wǎng)絡(luò)收集的大量數(shù)據(jù),針對節(jié)目受眾,分析用戶行為,節(jié)目制作、傳播更加契合市場需求。
目前,城市電視臺嘗試新媒體的方向主要有3種:第一,手機APP應(yīng)用提供文字、圖片、視頻資訊以及電視、廣播節(jié)目;第二,利用電視臺的影響力、公信力為用戶提供城市信息化服務(wù);第三,利用移動互聯(lián)網(wǎng),電視節(jié)目與觀眾互動,電視和觀眾互相影響[2]。
針對第三點,各電視臺也做了很多嘗試,比如利用微博、微信增加受眾并與觀眾互動,湖南衛(wèi)視開發(fā)了“芒果圈”、“呼啦”等應(yīng)用結(jié)合實時電視節(jié)目[3-4],在手機上開展互動式活動,以娛樂的形式參與節(jié)目,并形成用戶與節(jié)目、用戶與用戶之間的互動。
針對電視互動存在的問題,本項目擬研發(fā)一款針對電視互動的手機APP應(yīng)用。該軟件規(guī)劃有如下模塊:
1)搖搖看。用戶使用該應(yīng)用參與電視節(jié)目互動,當電視節(jié)目中出現(xiàn)通關(guān)密碼時,用戶輸入通關(guān)密碼可以進入該模塊,搖動手機獲得金幣或獎品。
2)評評看。根據(jù)欄目建立評論板塊,用戶進入相應(yīng)的板塊發(fā)布評論,參與互動。評論后臺打通與電視屏幕的接口,通過審核后可以在電視上顯示。
3)捐捐看。該模塊發(fā)布一些需要捐助的困難人士的資料,并設(shè)定一定的籌款目標,可以與幫忙類欄目相結(jié)合,用戶在該模塊中可以把擁有的金幣捐贈給需要幫助的人,后臺把金幣折算成人民幣捐給受捐人。
4)玩玩看。采用應(yīng)用內(nèi)游戲,或連接到外部游戲,使用金幣進行對戰(zhàn),增加娛樂性及用戶黏度。
5)換換看。該模塊發(fā)布一系列惠民商品,用戶使用金幣兌換實物商品。
6)活動。展示近期的熱門活動,吸引用戶積極參加。
由于軟件使用主要集中在晚間黃金時段,搖金幣活動的持續(xù)時間定位在數(shù)分鐘之內(nèi),在短時間內(nèi)大量用戶登錄系統(tǒng)搖金幣,這對系統(tǒng)軟、硬件架構(gòu)有極大的考驗,需要針對性地研究架構(gòu)和算法,解決大并發(fā)的問題。
3.1 云計算
云計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網(wǎng)絡(luò)訪問,進入可配置的計算資源共享池(資源包括網(wǎng)絡(luò)、服務(wù)器、存儲、應(yīng)用軟件、服務(wù)),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務(wù)供應(yīng)商進行很少的交互。
云計算在易用性、費用、部署方式等方面比傳統(tǒng)IT有著巨大的優(yōu)點,云計算使得項目能夠更加專注功能及架構(gòu)的設(shè)計,使得開發(fā)與運維完全分離,同時,云計算按使用量付費的模式避免了資源浪費問題,也能夠快速面對高峰的業(yè)務(wù)需求。另外,可擴展性是云計算非常大的特點,隨著業(yè)務(wù)增加,云計算能夠不斷擴展?jié)M足業(yè)務(wù)需求。
圖1 系統(tǒng)拓撲圖
云計算與“堆硬件”有本質(zhì)區(qū)別。首先,傳統(tǒng)IT方案針對業(yè)務(wù)壓力時,需要根據(jù)峰值采用大量硬件設(shè)備,從規(guī)劃、建設(shè)到投產(chǎn),整個鏈條周期長、投入大,當業(yè)務(wù)發(fā)生變動時,會造成巨大浪費。其次,如果實際業(yè)務(wù)峰值超過了初始估計,服務(wù)將面臨癱瘓,無法在面臨業(yè)務(wù)量激增時做到“即插即用”。
3.2 大數(shù)據(jù)
從技術(shù)上看,大數(shù)據(jù)與云計算的關(guān)系就像一枚硬幣的正反面一樣密不可分。大數(shù)據(jù)必然無法用單臺的計算機進行處理,必須采用分布式計算架構(gòu)。對海量數(shù)據(jù)的挖掘必須依托云計算的分布式處理、分布式數(shù)據(jù)庫、云存儲和虛擬化技術(shù)。
大數(shù)據(jù)技術(shù)就是從各種類型的海量數(shù)據(jù)中獲得有價值信息的技術(shù),其過程包括數(shù)據(jù)采集、存儲、管理、分析挖掘、可視化等技術(shù)及其集成。其特點體現(xiàn)為數(shù)據(jù)量特別大,數(shù)據(jù)類型繁多,對處理的速度要求高,價值密度低。
在電視行業(yè),收視率是以樣本戶體現(xiàn)的。在大數(shù)據(jù)時代,知道整體的用戶行為,了解所有的用戶在想什么、需要什么,對電視制作有現(xiàn)實的指導意義。
智能手機終端的發(fā)展,使得用戶生成數(shù)據(jù)能力的增強,隨著云計算的介入,使用數(shù)據(jù)的能力增強,其中必須要擁有有效的手段收集數(shù)據(jù)。電視互動應(yīng)用既可以吸引用戶收看電視,還可以在用戶使用過程中收集用戶數(shù)據(jù),分析用戶行為。由于該應(yīng)用的用戶同時為電視觀眾,使用時間也和電視觀看重合,因此,用戶數(shù)據(jù)近似認為是觀眾數(shù)據(jù)。
由于用戶的使用和電視直播有時間上的重合性,必然帶來一個問題——高并發(fā)的處理。根據(jù)項目需求,在“搖搖看”模塊,電視公布通關(guān)密碼,大量用戶會在同一時間同時涌入系統(tǒng);在“評評看”模塊,新聞直播過程中一個熱門話題拋出,大量用戶同一時間發(fā)表自己的看法,刷新別人的評論;在互動過程中,用戶打開應(yīng)用驗證登錄的時間都十分集中,這些特點會給系統(tǒng)帶來很大壓力。不同于一般新聞軟件或者社交類軟件,此類應(yīng)用的用戶訪問雖然在一天中也有起伏,但基本平穩(wěn),電視互動類應(yīng)用的用戶訪問有著集中、量大的特點,為了保證用戶正常使用、體驗流暢,必須對高并發(fā)的訪問進行特殊處理。
4.1 系統(tǒng)架構(gòu)
系統(tǒng)部署于云端,云平臺提供的彈性服務(wù)可以根據(jù)業(yè)務(wù)的變化而增加、減少系統(tǒng)資源,滿足業(yè)務(wù)發(fā)展,避免資源浪費,同時能夠快速部署、快速上線,適應(yīng)互聯(lián)網(wǎng)速度。
具體網(wǎng)絡(luò)拓撲如圖1所示。
手機客戶端與后臺交互通過Web Service的方式向后臺接口提出請求。后臺根據(jù)不同功能劃分為多個功能分區(qū),如“搖搖看”業(yè)務(wù)為功能分區(qū)1,“評評看”業(yè)務(wù)為功能分區(qū)2。請求到達反向代理服務(wù)器后,根據(jù)配置負載情況,將請求分發(fā)到各接口服務(wù)器,接口服務(wù)器經(jīng)過運算返回結(jié)果給客戶端。為了增加系統(tǒng)冗余,如圖中接口服務(wù)器5和6,被反向代理服務(wù)器1和2共享,即功能分區(qū)1中向反向代理服務(wù)器1的請求和功能分區(qū)2中向反向代理服務(wù)器2的請求,按設(shè)置權(quán)重都有可能被分發(fā)到接口服務(wù)器5和6進行計算,功能分區(qū)1和2的資源使用高峰不在同一時間點,這樣既增強了系統(tǒng)的安全性,同時也增強了系統(tǒng)資源的使用效率,提高了性能。
在數(shù)據(jù)庫方面,設(shè)計了一主多從的模式,從數(shù)據(jù)庫數(shù)據(jù)和主數(shù)據(jù)庫同步。數(shù)據(jù)庫服務(wù)器1作為主數(shù)據(jù)庫,所有寫操作都在主數(shù)據(jù)庫上操作,讀操作被分擔到不同的從數(shù)據(jù)庫2和3上。由于大部分數(shù)據(jù)庫操作都是讀操作,根據(jù)業(yè)務(wù)需求,從數(shù)據(jù)庫可以不斷擴展增加,如此架構(gòu)保證了系統(tǒng)的擴展性。
4.2 算法設(shè)計
4.2.1 概率設(shè)計
在電視上公布通關(guān)密碼的一刻,大量用戶同時涌入“搖搖看”模塊進行搖金幣操作,因此除了要有健壯的后臺架構(gòu)外,算法設(shè)計也是至關(guān)重要的。
首先是概率設(shè)計。用戶每次獲得金幣的數(shù)額應(yīng)該是一個隨機值,但總體金幣數(shù)量又需要可控。因此,設(shè)計的概率設(shè)置如圖2所示。
圖2 概率設(shè)置
以圖2為例,用戶獲得1~10個金幣的概率是15%,獲得10~20個金幣的概率是45%,獲得20~50個金幣的概率是20%,獲得50~70個金幣和70~100個金幣的概率均為10%。用戶進入搖金幣活動,搖動手機,手機客戶端訪問后臺接口,接口程序根據(jù)概率設(shè)計首先確定該用戶獲得的金幣區(qū)間,比如用戶有45%的概率獲得金幣值10~20,然后在10~20的區(qū)間內(nèi)再進行一次隨機,獲得的值為該用戶搖得的金幣。對于單個用戶來說,其每次搖金幣的概率滿足圖2分布,對于整體用戶而言,所有搖金幣次數(shù)應(yīng)該也滿足圖2分布,即獲得10~20金幣的用戶占整體用戶的45%。因此只需要調(diào)整金幣區(qū)間和每個區(qū)間的概率,即可控制用戶整體獲得金幣的數(shù)量。
4.2.2 金幣發(fā)放設(shè)計
通常情況下,每個用戶搖動手機,向服務(wù)器請求金幣,服務(wù)器按以上算法計算本次應(yīng)發(fā)金幣數(shù)量,并把已發(fā)放金幣總額和應(yīng)發(fā)放金幣總額進行比較,余額充足則直接發(fā)放,余額小于該次請求金額,則只發(fā)放剩余金幣。
當請求數(shù)量多時,大量請求在同一時刻到達服務(wù)器,如圖3 所示。假設(shè)剩余金幣僅夠一次發(fā)放,在第二步操作有多個請求同時計算已發(fā)放金幣,判斷剩余金幣是否滿足發(fā)放,多個請求都判斷滿足發(fā)放,執(zhí)行發(fā)放金幣操作,記錄發(fā)放金幣,如此發(fā)放金幣必然會超過預(yù)設(shè)值。該假設(shè)一般情況由于同時請求的概率很低,因此不會發(fā)生,當并發(fā)量大時,會造成發(fā)放無法控制。因此,計算已發(fā)放金幣和判斷剩余金幣必須線性操作,如圖4所示。
圖3 同時請求發(fā)金幣
圖4 線性的發(fā)金幣流程
按照圖4所示的方式發(fā)放金幣,可以保證金幣發(fā)放嚴格按照庫存進行,但同時帶來一個問題,大量請求積壓在等待環(huán)節(jié),數(shù)據(jù)庫變成單線程操作,用戶會感受到卡頓、反應(yīng)慢。如果業(yè)務(wù)能夠允許部分金幣超出預(yù)設(shè)值,按照圖3的方式,可以很大程度改善用戶性能。如果既保證性能,又保證業(yè)務(wù)的嚴謹性,算法就無法實現(xiàn)了。
既要保證客戶端請求在服務(wù)器上多線程并發(fā)處理,又要保證金幣數(shù)量一致性,需要采用預(yù)先生成的方式,將動態(tài)數(shù)據(jù)轉(zhuǎn)化為靜態(tài)數(shù)據(jù)。
在建立一個搖金幣活動時,后臺自動建立2張表,如圖5所示,根據(jù)設(shè)定概率和發(fā)放金幣總額預(yù)先生成金幣表并填充數(shù)據(jù),同時建立1張空的預(yù)生成用戶表,2張表的ID均從1自增,當進行搖金幣活動時,所有請求用戶被插入預(yù)生成用戶表,如第n個搖金幣的用戶插入表后返回插入行的ID值n,去預(yù)生成金幣表進行比對,相同ID行即ID等于n的行所對應(yīng)的金幣數(shù)量為該用戶獲得金幣數(shù)值。當預(yù)生成用戶表的返回ID值大于預(yù)生成金幣表的最大ID時,無法找到對應(yīng)金幣數(shù)量,說明金幣已發(fā)放完,直接返回0金幣即可。
預(yù)生成金幣表預(yù)生成用戶表ID金幣數(shù)量ID用戶1102123154759…………
圖5 搖金幣預(yù)生成表
由于數(shù)據(jù)庫的ID自增機制保證了2張表的ID列從1開始每行連續(xù)自動增長,因此,大量用戶同時對數(shù)據(jù)庫表進行插入操作,依然能夠保證ID的唯一性,預(yù)生成用戶表的插入操作自動返回當前插入行ID值,不需要進行額外計算,預(yù)生成金幣表中數(shù)據(jù)在活動開始前預(yù)先生成,節(jié)約了活動進行過程中的計算資源。整個流程無鎖表操作,不會造成數(shù)據(jù)沖突,既保證了效率,也保證了數(shù)據(jù)安全。
軟件的設(shè)計在目前階段已基本能滿足業(yè)務(wù)的發(fā)展,但隨著用戶的增長,必然會遇到性能瓶頸。當用戶量達到一定規(guī)模時,還可以從以下幾部分進一步優(yōu)化。
1)增加接口服務(wù)器數(shù)量。按照4.1節(jié)的系統(tǒng)架構(gòu)描述,本系統(tǒng)接口服務(wù)器數(shù)量可以橫向任意擴展,當訪問量增加時,必然需要更多服務(wù)器處理訪問請求。
2)使用數(shù)據(jù)緩存系統(tǒng)。當請求數(shù)過多時,數(shù)據(jù)庫的讀寫成為瓶頸,可以考慮使用Memcache或Redis等數(shù)據(jù)緩存系統(tǒng),將數(shù)據(jù)庫數(shù)據(jù)緩存進內(nèi)存,在內(nèi)存中進行讀寫,性能將有極大改善。
3)客戶端進行緩存。可以考慮從源頭上客戶端應(yīng)用減少請求次數(shù),每次請求服務(wù)器返回數(shù)據(jù)包含結(jié)果數(shù)據(jù)和數(shù)據(jù)有效期,根據(jù)業(yè)務(wù)類型設(shè)置不同的數(shù)據(jù)有效期??蛻舳双@得結(jié)果數(shù)據(jù)后緩存在手機本地,在數(shù)據(jù)有效期到達之前不再向服務(wù)器發(fā)起請求,直接從本地讀取數(shù)據(jù),如此將很大程度上減少請求數(shù)量。
[1] 陳琳娜. 新媒體時代電視節(jié)目互動研究[D].南京:南京師范大學,2011.
[2] 徐占基. TV“搖搖樂”助力城市臺新媒體啟航[R].北京:BIRTV臺長論壇與第二屆中國臺網(wǎng)融合高峰論壇,2014.
[3] 李真明. 電視互動類APP的興起——以湖南衛(wèi)視“呼啦”APP 為例[J].新聞世界,2014(3):8-9.
[4] 向方霖. 電視臺互動APP運用的問題與對策——以湖南衛(wèi)視“芒果圈”為例[J].新聞世界,2013(6):136-138.
責任編輯:任健男
Treatment of High Concurrentin TV Interactive Applications
DU Xinwen, QU Xianglei, DAI Jun
(TechnologyCenter,SuzhouBroadcastingSystem,JiangsuSuzhou215006,China)
In order to increase the city TV media influence, expand the audience groups, generate user real-time interaction, promote media convergence, a TV interactive application is developed. The project provides real-time interaction, program reviews, donations, prizes exchange, video games and other features. During the research, development and using, the business exists high concurrent problem. In this paper, some methods, such as using cloud computing resources, planning system architecture, designing algorithms of probabilistic and coins, are used to meet business needs. At the same time, the development planning of the system can meet the business growth in a period of time.
interactive;cloud computing;big data;concurrent;probability
TN948
B
10.16280/j.videoe.2015.16.007
2015-02-14
【本文獻信息】杜歆文,瞿向雷,戴駿.電視互動應(yīng)用中大并發(fā)的處理[J].電視技術(shù),2015,39(16).