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