新聞中心
【稿件】每日處理二十億以上播放請(qǐng)求的大型視頻網(wǎng)站,如何精準(zhǔn)高效地將用戶的請(qǐng)求迅速播放,是充滿挑戰(zhàn)的一件事。秒拍在這方面已經(jīng)積累了豐富的經(jīng)驗(yàn),技術(shù)團(tuán)隊(duì)采用細(xì)化用戶每次播放請(qǐng)求,并結(jié)合近期內(nèi)綜合調(diào)度大數(shù)據(jù),實(shí)現(xiàn)了在 C 段 IP 級(jí)別動(dòng)態(tài)的調(diào)度響應(yīng)及區(qū)分。

成都創(chuàng)新互聯(lián)公司專注于鐵西企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城網(wǎng)站制作。鐵西網(wǎng)站建設(shè)公司,為鐵西等地區(qū)提供建站服務(wù)。全流程按需搭建網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
本文針對(duì)短視頻播放面臨的挑戰(zhàn)、應(yīng)對(duì)方法以及調(diào)度系統(tǒng)的概念與特點(diǎn)等內(nèi)容進(jìn)行分享。
短視頻播放面臨的挑戰(zhàn)及應(yīng)對(duì)方法
短、長(zhǎng)視頻之間的區(qū)別
短視頻從 2015 年興起,爆發(fā)也是近兩年的事情。與長(zhǎng)視頻的區(qū)別主要有以下四個(gè)方面:
- 時(shí)長(zhǎng):短視頻時(shí)長(zhǎng)較短,一般為幾分鐘,長(zhǎng)視頻一般為 20 分鐘以上乃至數(shù)小時(shí)。
- 來(lái)源:短視頻來(lái)源廣泛,以 UGC 為主,比較鮮活,長(zhǎng)視頻以版權(quán)為主。
- 更新:短視頻更新量很大,每日數(shù)萬(wàn)條;長(zhǎng)視頻更新量比較少,每日數(shù)十條至數(shù)百條不等。
- 播放量:短視頻平均播放量小,數(shù)次至數(shù)十次;長(zhǎng)視頻平均播放量在數(shù)千到數(shù)萬(wàn)級(jí)別。
短視頻播放面臨的難點(diǎn)
基于短視頻的特性,短視頻播放面臨的挑戰(zhàn)有以下幾個(gè)方面:
- 因播放時(shí)長(zhǎng)短,所以對(duì)首播延時(shí)時(shí)間很敏感。相比幾十分鐘的長(zhǎng)視頻,用戶對(duì)出現(xiàn)的廣告還可以接受。但短視頻加廣告,用戶可能三分之一的時(shí)間花在等待上,體驗(yàn)度就很差。
- 因上傳來(lái)源地區(qū)廣泛,需要快速分發(fā),這樣在推送上會(huì)存在很大挑戰(zhàn)。
- 更新量大,平均播放量太少,所以內(nèi)容整體會(huì)偏冷,對(duì)如何快速推廣到所有渠道觀看或產(chǎn)生關(guān)鍵行為的節(jié)點(diǎn),要求較高。
從上傳和播放兩端入手應(yīng)對(duì)難點(diǎn)
上傳端通過(guò)廣泛建立所在地區(qū)的節(jié)點(diǎn)來(lái)優(yōu)化,需要在原站和各大區(qū)都進(jìn)行建設(shè),如北京、天津覆蓋整個(gè)華北地區(qū),廣東覆蓋華南地區(qū),基本保證每個(gè)區(qū)有最快上傳點(diǎn)。
還有根據(jù)實(shí)際情況,數(shù)據(jù)會(huì)采用各種傳輸壓縮方法。對(duì)于播放端,技術(shù)上采用 CDN 分發(fā),然后做多節(jié)點(diǎn)預(yù)推送的操作。
調(diào)度系統(tǒng)的概念、功能及特點(diǎn)
面對(duì)節(jié)點(diǎn)繁多超過(guò) 200 家 CDN 的廠商,如何選擇核心的調(diào)度?如果用戶發(fā)出請(qǐng)求,如何知道具體派發(fā)到哪一家的哪一個(gè)節(jié)點(diǎn)?這就涉及調(diào)度系統(tǒng)的應(yīng)用。
什么是調(diào)度系統(tǒng)?
就是接到用戶請(qǐng)求,基于分析請(qǐng)求的上下文,對(duì)后端提供服務(wù)的所有節(jié)點(diǎn)進(jìn)行打分,憑打分結(jié)果把用戶請(qǐng)求轉(zhuǎn)發(fā)給合適的后端提供服務(wù)的系統(tǒng)。
視頻調(diào)度主要有以下幾個(gè)輸入輸出:
- 輸入用戶的 IP 和請(qǐng)求內(nèi)容
- 對(duì)可分發(fā)的 CDN 節(jié)點(diǎn)進(jìn)行邏輯處理,需要掌握后端有多少節(jié)點(diǎn),哪些節(jié)點(diǎn)是活的,還要做打分排序
- 確定節(jié)點(diǎn)之后,輸出請(qǐng)求到對(duì)應(yīng)的節(jié)點(diǎn)
調(diào)度系統(tǒng)的功能,要實(shí)現(xiàn):
- 負(fù)載均衡
- 對(duì)服務(wù)異常的節(jié)點(diǎn)做故障隔離
- 對(duì)后端節(jié)點(diǎn)、服務(wù)等做健康檢查
- 具備日志記錄功能
- 針對(duì)安全性問(wèn)題,有權(quán)限分配功能
調(diào)度系統(tǒng)的特點(diǎn)
作為吞吐量日播放二三十億的站點(diǎn),調(diào)度系統(tǒng)不可能是一個(gè)單點(diǎn),且用戶來(lái)源非常多且重要,這樣在高吞吐、高可用基礎(chǔ)上,技術(shù)上要盡可能壓縮用戶的等待播放時(shí)間,來(lái)提升用戶體驗(yàn),所以要求系統(tǒng)高性能。
秒拍調(diào)度系統(tǒng)的發(fā)展
調(diào)度系統(tǒng)主要分為 GSLB v1 和 GSLB v2 兩個(gè)版本。在秒拍剛成立時(shí),播放量每天大概近百萬(wàn),這時(shí) GSLB v1 是基于第三方評(píng)分的地域調(diào)度系統(tǒng),直接通過(guò)原站加 CDN 的方式來(lái)支撐。
新浪投資秒拍后,工程師開(kāi)始使用新浪的 CDN,之后接入一些商用 CDN,當(dāng)時(shí)選擇的方式是第三方評(píng)分,量化結(jié)果,進(jìn)行排序,最終進(jìn)入調(diào)度系統(tǒng)。
伴隨業(yè)務(wù)的不斷發(fā)展,***代系統(tǒng)的準(zhǔn)確性和性能不能很好滿足需求了,所以設(shè)計(jì)了一個(gè)基于 C 端的 IP 精細(xì)調(diào)度系統(tǒng) GSLB v2。
秒拍調(diào)度系統(tǒng)的發(fā)展之 GSLB v1
GSLB v1 的數(shù)據(jù)主要來(lái)自第三方的監(jiān)測(cè)結(jié)果,第三方監(jiān)測(cè)有自己的 API,如播放時(shí)間、延時(shí)等。來(lái)源是請(qǐng)求的地域與運(yùn)營(yíng)商,地域就是省、市、區(qū),當(dāng)然越細(xì)越好。
運(yùn)營(yíng)商是三大運(yùn)營(yíng)商,也有比較大的用戶及小運(yùn)營(yíng)商。工程師通過(guò)API獲得第三方數(shù)據(jù)后,進(jìn)行綜合打分,***通過(guò)用戶請(qǐng)求的IP地域,調(diào)度到相應(yīng)節(jié)點(diǎn)。
GSLB v1 的結(jié)構(gòu)
如下圖,最右邊是 Clients,發(fā)起客戶請(qǐng)求的客戶端,如 MiaopaiApp、H5、PC Web、Weibo App 等。
API 部分是對(duì)一些友站進(jìn)行視頻的輸出,當(dāng)時(shí)主要是新浪,用的是 sina lb、Apache+PHP、同時(shí)采用第三方的 monitor 來(lái)監(jiān)測(cè) CDN 節(jié)點(diǎn),記錄產(chǎn)生的數(shù)據(jù),獲取監(jiān)測(cè)結(jié)果,并存儲(chǔ)到 DB。
之后基于用戶發(fā)出的請(qǐng)求,讀取 IP,分析 IP 對(duì)應(yīng)的城市、運(yùn)營(yíng)商等。***根據(jù)對(duì)地域和運(yùn)營(yíng)商打分的結(jié)果,進(jìn)行調(diào)度。
GSLB v1的評(píng)分原理
把全國(guó)主要城市,包括省會(huì)、直轄市以及省市下每個(gè)主流運(yùn)營(yíng)商的節(jié)點(diǎn)作為監(jiān)測(cè)目標(biāo),通過(guò)第三方監(jiān)測(cè)機(jī)構(gòu)定時(shí)去測(cè)試播放。
評(píng)分體系主要針對(duì)城市+運(yùn)營(yíng)商級(jí)別做排序,判定原理很簡(jiǎn)單,就是用戶發(fā)來(lái) IP,獲得城市及運(yùn)營(yíng)商數(shù)據(jù),根據(jù)評(píng)分選定節(jié)點(diǎn)。
GSLB v1 的優(yōu)點(diǎn)與不足
優(yōu)點(diǎn)是整體結(jié)構(gòu)相對(duì)簡(jiǎn)單,維護(hù)起來(lái)比較容易,水平擴(kuò)展性強(qiáng),性能方面也能滿足當(dāng)前需求。
而缺點(diǎn)是測(cè)試點(diǎn)數(shù)有限,測(cè)試時(shí)間間隔較長(zhǎng),不能反映及時(shí)情況。最重要的是系統(tǒng)在高并發(fā)上有瓶頸,如 IP 反查很慢、Apache+PHP 單次請(qǐng)求時(shí)間長(zhǎng)、受限實(shí)體環(huán)境,難于及時(shí)擴(kuò)展等。
秒拍調(diào)度系統(tǒng)的發(fā)展之 GSLB v2
GSLB v2 的核心思想
針對(duì) GSLB v1 的實(shí)際應(yīng)用情況,第二代系統(tǒng)從精準(zhǔn)和性能兩方面進(jìn)行考慮。核心思想如下:
- 精細(xì)化調(diào)度方面,調(diào)度粒度細(xì)化、積累測(cè)試數(shù)據(jù)和接近實(shí)時(shí)反饋
- 提升吞吐量方面,做云端遷移,引入 OpenResty 和 IP 快速定位
GSLB v2 的質(zhì)量評(píng)測(cè)
想要做好調(diào)度系統(tǒng),首先要有一個(gè)好的評(píng)價(jià)體系,做好質(zhì)量檢測(cè)。質(zhì)量檢測(cè)工作從最初依靠第三方,到完全基于客戶端,可以及時(shí)獲取有效信息、節(jié)省自身的檢測(cè)速度和頻度,這里建設(shè)基于客戶端的反饋機(jī)制很重要。
質(zhì)量檢測(cè)主要是基于 CDN 廠商和節(jié)點(diǎn)質(zhì)量的報(bào)告,因?yàn)榱6容^細(xì),參數(shù)方面還是依賴視頻播放。操作員可參考的具體指標(biāo),如首播時(shí)間、卡頓率、播放成功率,播放完成比例等等。
GSLBv2調(diào)度的精細(xì)化
- 精準(zhǔn)度。GSLB v1 調(diào)度是基于 IP,所以精準(zhǔn)度取決于 IP 庫(kù),經(jīng)常會(huì)出現(xiàn) IP 判斷不準(zhǔn)的問(wèn)題,以及小運(yùn)營(yíng)商的出口問(wèn)題。
- 傳統(tǒng) IP 庫(kù)現(xiàn)狀。傳統(tǒng)的 IP 庫(kù)是通過(guò)一些官方數(shù)據(jù) IANA(InternetAssigned Numbers Authority)、渠道收集、網(wǎng)友上報(bào)、運(yùn)營(yíng)商數(shù)據(jù)等手段實(shí)現(xiàn)。傳統(tǒng)運(yùn)用上,因存在非結(jié)構(gòu)化的數(shù)據(jù),會(huì)有很多繁雜的信息,給使用者帶來(lái)不便。
- 純真 IP 數(shù)據(jù)庫(kù)。傳統(tǒng)的庫(kù)是純真 IP 庫(kù),常規(guī)結(jié)構(gòu)分為文件頭、索引區(qū)和記錄區(qū)三部分。通常查找 IP 時(shí),先在索引區(qū)查找記錄偏移,然后再到記錄區(qū)讀出信息。
由于記錄區(qū)的記錄長(zhǎng)度不定長(zhǎng),所以直接在記錄區(qū)中搜索是不可能的。另外,因?yàn)橛涗洈?shù)比較多,遍歷索引區(qū)會(huì)相對(duì)較慢。
- 記錄本身的復(fù)雜性。記錄首先是四個(gè)字節(jié) IP 地址開(kāi)始,每條 IP 記錄都由國(guó)家和地區(qū)名組成,國(guó)家地區(qū)在這里并不是太確切。
- 純真的特點(diǎn)。純真的核心算法是索引+二分查找,優(yōu)點(diǎn)是占用內(nèi)存小,文件體積也小。缺點(diǎn)是數(shù)據(jù)會(huì)越來(lái)越多,臃腫化會(huì)隨之嚴(yán)重。
再加上這些龐大的數(shù)據(jù)還是非結(jié)構(gòu)化的,導(dǎo)致無(wú)法根據(jù)一個(gè) IP 直接獲取它所在地域和運(yùn)營(yíng)商,可能還會(huì)出現(xiàn) 1-2 次查找的情況,浪費(fèi)很多時(shí)間。
GSLB v2 對(duì) IP 庫(kù)進(jìn)行重建
針對(duì)純真 IP 庫(kù)的一些缺點(diǎn),工程師對(duì) IP 庫(kù)進(jìn)行了重建,最終可以***時(shí)間找到 IP 對(duì)應(yīng)的運(yùn)營(yíng)商和信息。
IP 庫(kù)重建的解決方向。對(duì)數(shù)據(jù)進(jìn)行結(jié)構(gòu)化的存儲(chǔ),索引大小固定非增長(zhǎng)。這樣做是為了減少查找時(shí)間,從對(duì)數(shù)時(shí)間轉(zhuǎn)變成常數(shù)時(shí)間。***的結(jié)果就是 IP 過(guò)來(lái),用很簡(jiǎn)單的方式直接找到對(duì)應(yīng)數(shù)據(jù)。
IP 庫(kù)重建的核心算法:
- 一個(gè) C 段只有 256 個(gè) IP,A.B.C.0~A.B.C.255
- 一般一個(gè) C 段 IP 的地理位置,運(yùn)營(yíng)商信息都會(huì)與之保持一致
- 描述 C 段的所有 IP,只有 256*256*256 = 16777216 個(gè)
- 如果一個(gè) IP 對(duì)應(yīng)信息是一個(gè)字節(jié),需要儲(chǔ)存空間 16M;對(duì)應(yīng)信息是兩個(gè)字節(jié),需要儲(chǔ)存空間 32 M,每個(gè) C 段 IP 對(duì)應(yīng)一個(gè)編碼(IPC 碼)
- 查詢只需要根據(jù)偏移直接定位(A*256*256+B*+C)*2
- 信息的前半段描述地區(qū),后半段描述運(yùn)營(yíng)商
高效的信息表示方法:
- XXXX XXXXXXXXXXXX
- X 國(guó)內(nèi)/國(guó)外,國(guó)內(nèi) 0,國(guó)外 1,國(guó)外精度到國(guó)家
- XX 大區(qū),4 個(gè)大區(qū),華北,華中,華南和西部
- X XX 省,區(qū)內(nèi) 8 省
- XX 省內(nèi)區(qū)域,如粵東,粵西,粵北,珠三角
- XXX 區(qū)內(nèi) 8 市
- X X 市內(nèi) 4 縣區(qū)
- XXX ISP 區(qū)分
校驗(yàn)方式:
- Ipc& 0xF000 是否國(guó)外 IP
- Ipc& 0xFC00 得出 IP 省份
- Ipc& 0xFFE0 得出 IP 城市
- Ipc& 0x7 得出運(yùn)營(yíng)商
- Ipc - Ipc2 判斷兩 IP 的距離
GSLB v2 的數(shù)據(jù)積累
在數(shù)據(jù)積累方面,當(dāng)數(shù)據(jù)缺失時(shí),要主動(dòng)去探測(cè)。探測(cè)原則有二:
- 要同區(qū)域同 ISP 優(yōu)先;
- CDN 廠商節(jié)點(diǎn)分散化探測(cè)。然后,系統(tǒng)對(duì)已有的數(shù)據(jù)進(jìn)行更新得分操作。
GSLB v2 的評(píng)分原則
評(píng)分的原則還是依照一些指標(biāo)進(jìn)行,基于首播時(shí)間,越短越好,得出基礎(chǔ)分;播放卡頓或失敗罰分,得分加入時(shí)間因子,隨時(shí)間衰減更新而最終得分。
GSLB v2 的節(jié)點(diǎn)選擇
如下圖,是節(jié)點(diǎn)的選擇流程。節(jié)點(diǎn)選擇主要通過(guò)***確定比較閾值,基于 IPC 碼獲取同區(qū)域不同節(jié)點(diǎn)得分。
如果區(qū)域內(nèi)節(jié)點(diǎn)數(shù)據(jù)滿足閾值要求,進(jìn)行調(diào)度。如果節(jié)點(diǎn)得分需要更新,則探測(cè)新節(jié)點(diǎn)。否則向上反饋回溯節(jié)點(diǎn)。
GSLB v2 的吞吐量?jī)?yōu)化
吞吐量方面,數(shù)據(jù)源使用了 Memcache 和 Redis、純異步通信選擇 Lua。
如下圖,是 GSLB v2 的***階段。
調(diào)度系統(tǒng)的***階段:配置方面包含 1 個(gè) SLB,2 個(gè) gslb server,redis 存儲(chǔ)是從主站同步過(guò)來(lái)的視頻狀態(tài)數(shù)據(jù),memcache 存儲(chǔ)的是 CDN 播放質(zhì)量的歷史數(shù)據(jù)。
如下圖,是 GSLB v2 的第二階段。
調(diào)度系統(tǒng)的第二階段:面對(duì)播放量成倍增長(zhǎng)的情況,對(duì) server 進(jìn)行了橫向擴(kuò)展。配置方面,增加了多個(gè) SLB 和 gslb server。
如下圖,是 GSLB v2 的第三階段。
調(diào)度系統(tǒng)的第三階段:由于每個(gè)請(qǐng)求都需要對(duì) redis 進(jìn)行 get 操作獲取 channel 的狀態(tài)數(shù)據(jù),導(dǎo)致 redis 性能出現(xiàn)瓶頸。于是,系統(tǒng)替換掉了 redis,把 redis 的存儲(chǔ)變?yōu)?memcache。
配置方面,增加了多個(gè) SLB 和 gslb server。memcache 存儲(chǔ)來(lái)自 CDN 播放質(zhì)量的歷史數(shù)據(jù),以及從主站同步過(guò)來(lái)的視頻狀態(tài)數(shù)據(jù)。由于 openresty 不支持 mc 的 sasl 驗(yàn)證協(xié)議,所以沒(méi)有對(duì) mc 進(jìn)行橫向擴(kuò)展。
未來(lái)展望
目前,秒拍的數(shù)據(jù)節(jié)點(diǎn)還都在北京,后續(xù)會(huì)調(diào)整到包括北京、杭州、廣州等全國(guó)分區(qū)域進(jìn)行異地多活的部署。
面對(duì)云廠商不可依賴,會(huì)隱藏很多數(shù)據(jù)信息,出現(xiàn)問(wèn)題不好查找源頭等情況,秒拍還會(huì)考慮混合云的改造。
同時(shí),系統(tǒng)會(huì)接入一些基于 P2P 的調(diào)度及對(duì)自建 CDN 節(jié)點(diǎn)的融入、災(zāi)備建設(shè)和監(jiān)控統(tǒng)計(jì)等方面進(jìn)行完善。
以上內(nèi)容由編輯王雪燕根據(jù)鄧錚老師在 WOTA2017 “高可用架構(gòu)”專場(chǎng)的演講內(nèi)容整理。
鄧錚
一下科技高級(jí)研發(fā)總監(jiān),公司創(chuàng)始團(tuán)隊(duì)成員
主要負(fù)責(zé)后端服務(wù)整體研發(fā)工作,參與了一下科技從創(chuàng)辦肇始到成為短視頻領(lǐng)域獨(dú)角獸的全過(guò)程?,F(xiàn)負(fù)責(zé)公司研發(fā)中心管理工作,他帶領(lǐng)后端團(tuán)隊(duì)支撐公司每日數(shù)十億以上的 PV,重點(diǎn)支持公司新品研發(fā)/大數(shù)據(jù)部門與預(yù)研部門,主要關(guān)注高并發(fā)/機(jī)器學(xué)習(xí)/智能系統(tǒng)領(lǐng)域。
網(wǎng)站名稱:何以突圍短視頻紅海?秒拍海量播放下的高性能視頻調(diào)度實(shí)踐
當(dāng)前網(wǎng)址:http://m.fisionsoft.com.cn/article/dpeisjc.html


咨詢
建站咨詢
