http://www.sohu.com/a/111804108_474334
導(dǎo)語(yǔ):中國(guó)應(yīng)用性能管理行業(yè)盛宴——2016中國(guó)應(yīng)用性能管理大會(huì)(簡(jiǎn)稱(chēng)APMCon 2016)于8月18日至19日在北京新云南皇冠假日酒店隆重召開(kāi)。APMCon由聽(tīng)云、極客邦和InfoQ聯(lián)合主辦的作為國(guó)內(nèi)APM領(lǐng)域最具影響力的技術(shù)大會(huì)魏颓,首次舉辦的APMCon以“驅(qū)動(dòng)應(yīng)用架構(gòu)優(yōu)化與創(chuàng)新”為主題三痰,致力于推動(dòng)APM在國(guó)內(nèi)的成長(zhǎng)與發(fā)展劲赠。
云帆加速創(chuàng)始人王羲桀于CDN加速專(zhuān)場(chǎng)發(fā)表了題為《1秒延時(shí)的直播CDN與P2P服務(wù)實(shí)例分析》的演講饮睬,現(xiàn)場(chǎng)解讀了關(guān)于CDN +P2P直播服務(wù)的優(yōu)勢(shì)以及目前尚未突破的技術(shù)點(diǎn)铡原。
云帆加速創(chuàng)始人兼首席布道師王羲桀
以下為演講實(shí)錄:
今天,我來(lái)給各位分享一下直播以及P2P的結(jié)合應(yīng)用由捎。我們將圍繞著直播以及P2P的結(jié)合兔综,從以下五個(gè)維度開(kāi)始給大家展開(kāi)討論:
這是直播今年火爆的一個(gè)數(shù)據(jù),我相信在座的各位都有所了解狞玛。
直播的發(fā)展不像點(diǎn)播软驰,點(diǎn)播其實(shí)從2004年是爆發(fā)點(diǎn),大家開(kāi)始認(rèn)識(shí)到點(diǎn)播的CDN怎樣使用心肪,隨著時(shí)間的積累锭亏,開(kāi)源軟件包括商業(yè)的系統(tǒng)都有大量的積累和改善,所以說(shuō)可以看到的程序有Squid硬鞍、Nginx等很多慧瘤。直播從去年開(kāi)始成為大家的焦點(diǎn),過(guò)程中其實(shí)沒(méi)有太多允許我們程序員去積累的時(shí)間膳凝,所以整個(gè)直播的體系大家用到的比較常見(jiàn)的是Nginx-RTMP碑隆、SRS兩套開(kāi)源程序恭陡。
整個(gè)直播服務(wù)和點(diǎn)播服務(wù)的中心要做的事情比較多蹬音,比如說(shuō)轉(zhuǎn)碼、切塊休玩、錄制加水印以及鑒黃等等著淆。CDN做的事情比較簡(jiǎn)單,文件的復(fù)制拴疤,當(dāng)然現(xiàn)在也會(huì)用到存儲(chǔ)以及切塊的服務(wù)永部。直播對(duì)性能的要求更高,比如說(shuō)現(xiàn)在在做直播整個(gè)業(yè)界都做到1秒延時(shí)呐矾,甚至低于1秒苔埋。如果用戶(hù)在看今天的直播會(huì)議都會(huì)出現(xiàn)一些延時(shí),而點(diǎn)播用戶(hù)相對(duì)是分開(kāi)的蜒犯,所以對(duì)整個(gè)性能的要求组橄,直播會(huì)更高一些荞膘。從直播的內(nèi)容可以看得出來(lái),直播的流媒體比較復(fù)雜玉工,當(dāng)然這也涉及到動(dòng)態(tài)羽资,比較火的AR以及降噪、美顏這類(lèi)的技術(shù)遵班。
我們簡(jiǎn)單說(shuō)一下Nginx-RTMP以及SRS的改進(jìn)版屠升,Nginx-RTMP的性能比較弱,只是簡(jiǎn)單做了RTMP的轉(zhuǎn)發(fā)狭郑,實(shí)現(xiàn)高可擴(kuò)展性腹暖,簡(jiǎn)單測(cè)試進(jìn)程可以做到高的連接數(shù)。而SRS可以做到良好的提升翰萨,有豐富的一些開(kāi)放接口微服。在SRS的改進(jìn)版里面,就有做到剛剛前面提到的流媒體的處理功能缨历,做了很多的結(jié)合以蕴。
在此基礎(chǔ)上,當(dāng)前還有SRS的作者去做了一個(gè)商業(yè)版本BMS辛孵,以及云帆自己的版本YFMS丛肮。我們做一個(gè)簡(jiǎn)單的對(duì)比,云帆的直播服務(wù)器也是自研的魄缚,沒(méi)有用開(kāi)源的系統(tǒng)宝与。網(wǎng)絡(luò)協(xié)議支持的就是大家常用的RTMP、HLS冶匹、HTTP习劫,當(dāng)然也提到了HIS+,我跟各位簡(jiǎn)單說(shuō)一下嚼隘,在BMS的HIS+诽里,是把文件傳輸變成流件傳輸,在邊緣節(jié)點(diǎn)進(jìn)行處理飞蛹。云帆做的是在核心層處理谤狡,再邊緣化處理,能解決的問(wèn)題就是把HIS的流式延時(shí)降低卧檐。
前面比較多的時(shí)間在講系統(tǒng)墓懂,是希望大家能夠?qū)χ辈ハ到y(tǒng)架構(gòu)有一些認(rèn)識(shí),方便我們后面去講如何跟P2P進(jìn)行結(jié)合霉囚。其實(shí)所有的程序都是在功能捕仔、性能、穩(wěn)定性,以及響應(yīng)程度四個(gè)維度去做考核的榜跌。所以這里列出了一些指標(biāo)闸天,前面提到的幾個(gè)開(kāi)源系統(tǒng)在功能、性能斜做、穩(wěn)定性方面都比現(xiàn)在的低一些苞氮。BMS和YFMS兩個(gè)系統(tǒng)都能支持上萬(wàn)的單機(jī)并發(fā)壕翩,延時(shí)能做到1秒以?xún)?nèi)新博,并且可以進(jìn)行可追溯日志蝙昙。在這個(gè)基礎(chǔ)上整個(gè)的直播系統(tǒng)要滿(mǎn)足我們的高響應(yīng)度侨舆,這就是一個(gè)數(shù)據(jù)的分析塊脱货,數(shù)據(jù)分析這塊有蠻大的關(guān)系∷炭纾現(xiàn)在做可追溯日志祈惶,同時(shí)也會(huì)進(jìn)入聽(tīng)云的第三方平臺(tái)進(jìn)行監(jiān)測(cè)柒瓣。CDN廠(chǎng)商也會(huì)做大量的自我的監(jiān)測(cè)诱告、自我的查詢(xún)撵枢。自此基礎(chǔ)上我們做了一個(gè)主動(dòng)式分析系統(tǒng)叫做AAS,做AAS這塊我們把所有的服務(wù)節(jié)點(diǎn)放在一個(gè)平面圖上了解每一個(gè)節(jié)點(diǎn)的性能精居、網(wǎng)絡(luò)的卡頓以及知道每條流信息的音視頻卡頓锄禽。除了原來(lái)看到的網(wǎng)絡(luò)抖動(dòng)以外,我們更多做一些流媒體相關(guān)的整合靴姿,去做性能的改進(jìn)沃但。基于整體直播性能的提升佛吓,我們把CDN直播的質(zhì)量做到比較高宵晚,這樣才能結(jié)合P2P的較差質(zhì)量用戶(hù)進(jìn)行整合。
通過(guò)這張圖可以看出直播業(yè)務(wù)與點(diǎn)播業(yè)務(wù)峰值的差異维雇,為什么我們要把直播跟P2P進(jìn)行整合淤刃?直播的CDN已經(jīng)通過(guò)各家CDN的努力,通過(guò)功能吱型、性能逸贾、穩(wěn)定性以及響應(yīng)度各種努力,把它做到非常好了唁影,一秒的延時(shí)耕陷、秒開(kāi)、高質(zhì)量据沈、低卡頓,為什么要去結(jié)合饺蔑?
從這張圖可以看到锌介,下面是點(diǎn)播業(yè)務(wù)峰值,非常均衡,而直播大家可以看到孔祸,這是我們真實(shí)平臺(tái)里面的隆敢,我們自己平臺(tái)的一些客戶(hù)的數(shù)據(jù)。直播往往并發(fā)非常高崔慧,也就兩個(gè)小時(shí)拂蝎,會(huì)帶來(lái)高額的帶寬成本。在此基礎(chǔ)上我們引入P2P結(jié)合CDN惶室,以降低整體產(chǎn)品的使用成本温自。
傳統(tǒng)的P2P,就是早期的BitTorrent以及在快播做的P2SP架構(gòu)皇钞,這兩塊屬于傳統(tǒng)的P2P悼泌,它們最大的特點(diǎn)就是高分享率、低可用性夹界。比如說(shuō)原來(lái)在快播做的數(shù)據(jù)分享率可以做到99%馆里,但質(zhì)量是無(wú)法保障的。
所以我們?nèi)プ鯟DN+P2P的融合互補(bǔ)可柿,把CDN高可用性的服務(wù)鸠踪、可管理、可運(yùn)維的服務(wù)去和P2P的服務(wù)复斥,系統(tǒng)的可靠性以及突發(fā)處理能力做一個(gè)結(jié)合慢哈。CDN跟P2P本身是兩塊業(yè)務(wù),它是可以有機(jī)的結(jié)合在一起的永票,云帆加速P2P支持第三方CDN卵贱,它可以選擇任何一家CDN進(jìn)行結(jié)合,并沒(méi)有完全的相依賴(lài)的關(guān)系侣集。
CDN+P2P其實(shí)不是簡(jiǎn)單的疊加键俱,我們?cè)诰W(wǎng)絡(luò)層面提高了系統(tǒng)的可擴(kuò)展性,降低了成本世分,降低了跨域编振、跨流量的問(wèn)題。最大的問(wèn)題就是P2P的內(nèi)容不可控臭埋,所以加了CDN踪央,并在控制層面和內(nèi)容層面做了提升。
這里講到的是云帆自己的一個(gè)CDN+P2P的架構(gòu)瓢阴。首先云帆是一家CDN公司畅蹂,只是我們相比其他CDN公司擁有較長(zhǎng)時(shí)間的P2P積累,所以我們跟P2P進(jìn)行了一個(gè)結(jié)合荣恐。云帆的P2P能適配藍(lán)訊等各家CDN公司液斜。
從這個(gè)架構(gòu)圖上面我們可以看到累贤,整個(gè)原端體系的協(xié)議進(jìn)行切塊系統(tǒng),再分發(fā)到的CDN系統(tǒng)少漆,最后終端可以進(jìn)行P2P的傳輸臼膏,下面會(huì)講到具體的邏輯策略。終端可以覆蓋的是Android示损、iOS各端的P2P數(shù)據(jù)渗磅,是雙通道獲取數(shù)據(jù)的。
這是一個(gè)類(lèi)似的架構(gòu)模型检访,只是走的是RTMP的系統(tǒng)始鱼。整個(gè)P2P的體系里有兩種做法,一種是現(xiàn)在已經(jīng)成熟的烛谊,在市面上大量公司在做风响,包括芒果直播、幾個(gè)電視臺(tái)大量用的有延時(shí)的P2P丹禀,比如說(shuō)把用戶(hù)有序的分開(kāi)状勤,進(jìn)行0到30秒的延時(shí),這種P2P可以做到80%的分享率双泪。也就是說(shuō)剛才我們看到的前面的峰值圖將大幅度的下降持搜。然后無(wú)延時(shí)的P2P是我們最近新研發(fā)的一個(gè)產(chǎn)品,目前正在客戶(hù)內(nèi)公測(cè)焙矛,目前看到的數(shù)據(jù)是可以做到40%的分享率葫盼,延時(shí)可以控制在1秒。
這里我們將講一講P2P跟CDN的真正結(jié)合村斟。我們通過(guò)這張示意圖假設(shè)我們有30秒的延時(shí)時(shí)間贫导,CDN一定將發(fā)揮自己的性能和特性,去提供自己可靠蟆盹、高速孩灯、有效的服務(wù),P2P里面的節(jié)點(diǎn)最大的差異就是隨時(shí)可以下線(xiàn)逾滥,隨時(shí)可以中斷峰档。所以我們?cè)?到30秒的時(shí)候,可以看到我們前面的時(shí)間段會(huì)盡量的使用CDN寨昙,會(huì)有富余的數(shù)據(jù)讥巡,以至于下面的數(shù)據(jù)補(bǔ)償可以通過(guò)P2P。如果P2P的速度夠高舔哪,我們將不會(huì)回到CDN的模式欢顷,不會(huì)回到CDN的使用時(shí)段,我們將一直保持P2P的長(zhǎng)時(shí)間的使用尸红。當(dāng)然如果P2P的這條通道來(lái)了數(shù)據(jù)不夠的情況下吱涉,我們自然會(huì)調(diào)回20秒以?xún)?nèi)刹泄,回到我們的CDN使用階段外里,使用高可用性的數(shù)據(jù)保證它的流量怎爵,20秒到0秒的過(guò)程,我們有20秒的時(shí)間可以去做大量的補(bǔ)救工作盅蝗。
這里講到的是我們?nèi)绾稳ズY選鳖链?如何把P2P放到10秒、20秒墩莫、30秒的階段芙委?如何釋放?如果所有的P2P都在30秒的話(huà)狂秦,我們沒(méi)有可分享的東西灌侣。所以我們會(huì)有機(jī)的分開(kāi),傳統(tǒng)的做法都會(huì)隨機(jī)裂问,也就是我們看到的橙色的線(xiàn)侧啼,所有的用戶(hù)分布在每一個(gè)時(shí)間點(diǎn),其實(shí)也挺好的堪簿,分享率也不錯(cuò)痊乾,但是它會(huì)比較容易曝露出P2P節(jié)點(diǎn)的缺點(diǎn):速度不佳、隨時(shí)可以掉線(xiàn)椭更。所以我們?cè)谧鯬2P的時(shí)候結(jié)合了大數(shù)據(jù)哪审,這么多年來(lái)大家都在講大數(shù)據(jù),但卻是做大數(shù)據(jù)容易虑瀑、用大數(shù)據(jù)比較難湿滓。我們通過(guò)把每個(gè)用戶(hù)歷史的習(xí)慣、速度舌狗,以及他的網(wǎng)絡(luò)分布叽奥,我們盡可能的去預(yù)判所謂的分析,預(yù)測(cè)出這個(gè)用戶(hù)的上傳能力把夸,以及他將會(huì)在線(xiàn)的時(shí)長(zhǎng)而线。我們會(huì)把速度上傳大的、在線(xiàn)時(shí)長(zhǎng)長(zhǎng)的放在前面恋日,讓他延時(shí)盡可能少膀篮,可能只有兩三秒,放在前面意味著他有更多的時(shí)間岂膳,有更多數(shù)據(jù)去分享誓竿。我們還有其他的維度進(jìn)行詳細(xì)的分析。
這里我也講一下無(wú)延時(shí)P2P的做法谈截,大家會(huì)使用CDN來(lái)保證質(zhì)量筷屡,不會(huì)用P2P去做質(zhì)量的保證涧偷。因?yàn)镻2P的用戶(hù)他的帶寬有限,以及他隨時(shí)下線(xiàn)毙死,隨時(shí)會(huì)中斷服務(wù)燎潮。再結(jié)合我們的大數(shù)據(jù)中心之后,我們發(fā)現(xiàn)其實(shí)用戶(hù)的能力有的上傳能力非常高扼倘,可能已經(jīng)到了兩兆确封、三兆,發(fā)現(xiàn)有的人在線(xiàn)時(shí)長(zhǎng)非常長(zhǎng)再菊。所以我們?cè)谶M(jìn)行大數(shù)據(jù)結(jié)合的利用之后爪喘,我們抽取了高質(zhì)量的,把他做成我們前幾秒的數(shù)據(jù)提供方纠拔。實(shí)際測(cè)試的情況非常有效秉剑,方案我自己非常感動(dòng),我做了P2P做了七年稠诲,我終于可以看到P2P的用戶(hù)跟CDN放在同級(jí)別的情況下去產(chǎn)生了侦鹏。在大家傳統(tǒng)的意識(shí)里P2P就是會(huì)導(dǎo)致體驗(yàn)差、導(dǎo)致各種問(wèn)題的架構(gòu)吕粹,包括用戶(hù)上傳帶寬高种柑,浪費(fèi)用戶(hù)流量的架構(gòu)。實(shí)際上我們?cè)诳蛻?hù)的應(yīng)用上面會(huì)看到下面這張圖:CDN這個(gè)是白色的線(xiàn)匹耕,理解為99.9%聚请,但是有的用戶(hù)在最后一段距離沒(méi)辦法訪(fǎng)問(wèn)到這個(gè)節(jié)點(diǎn),這種情況下將導(dǎo)致整個(gè)用戶(hù)使用的質(zhì)量下降稳其。而P2P充分隨機(jī)的情況就是綠線(xiàn)驶赏,我們解決了最后終端的距離,可能簡(jiǎn)單理解為雙通道既鞠。在A(yíng)通道拿不到數(shù)據(jù)的時(shí)候煤傍,哪怕它會(huì)卡,我們用B通道代表它嘱蛋。而且整個(gè)P2P做的時(shí)候我們有就近原則蚯姆,我們?cè)趫?chǎng)的一兩百位觀(guān)眾,我們優(yōu)先在本場(chǎng)找到感興趣資源的節(jié)點(diǎn)洒敏,然后再會(huì)離開(kāi)北京龄恋,到北京電信,到整個(gè)華北地區(qū)凶伙,然后到全網(wǎng)郭毕,然后再跨運(yùn)營(yíng)商,再去國(guó)外函荣,會(huì)按這種思路就近的獲取資源显押。所以我們往往拿到的是本地的扳肛,今天我在這里做一個(gè)P2P的直播,我今天拿到我跟Wood之間連接的速度一定是最快的乘碑,因?yàn)槲覀兪蔷钟蚓W(wǎng)挖息。這個(gè)速度一定高于我在北京電信的節(jié)點(diǎn)質(zhì)量,延時(shí)也會(huì)大大低于公網(wǎng)回來(lái)的數(shù)據(jù)蝉仇。所以CDN+P2P的有機(jī)結(jié)合旋讹,在實(shí)踐中我們看到是這條紅線(xiàn)殖蚕,實(shí)際上我們最優(yōu)秀的一家客戶(hù)轿衔,加上了P2P的方案之后確實(shí)沒(méi)有下降體驗(yàn),并且得到了有效的提升睦疫。最近我們做了美國(guó)跟中國(guó)的打通害驹。這塊我覺(jué)得唯一值得講的就是我們通過(guò)香港的中轉(zhuǎn)已經(jīng)做到了,通過(guò)TCP加速的概念蛤育,和香港的中轉(zhuǎn)節(jié)點(diǎn)宛官,做到了代替國(guó)際光纖,實(shí)現(xiàn)了美國(guó)紐約到深圳電信瓦糕,到北京電信一秒的延時(shí)以及秒開(kāi)的傳輸底洗。
接下來(lái)我們進(jìn)入到問(wèn)答環(huán)節(jié),有需要問(wèn)問(wèn)題的可以舉手咕娄。
問(wèn)答環(huán)節(jié)
Q1:您好亥揖,您前面說(shuō)到有一些用戶(hù)端你們發(fā)現(xiàn)他上傳的帶寬比較大,但是我理解大部分其實(shí)還是固網(wǎng)的用戶(hù)圣勒,如果移動(dòng)端直播的用戶(hù)比較多的話(huà)费变,其實(shí)直播端的情況很復(fù)雜,很難保持一個(gè)比較穩(wěn)定的上傳速率圣贸。你們現(xiàn)在做的還是針對(duì)固網(wǎng)的用戶(hù)呢挚歧?還是在移動(dòng)端的環(huán)境下也可以達(dá)到這樣的效果?
王羲桀:移動(dòng)端的環(huán)境下吁峻,應(yīng)該這么說(shuō)滑负,首先在手機(jī)端上看視頻,90%到95%以上還是在wifi環(huán)境用含,但現(xiàn)在開(kāi)始矮慕,這個(gè)數(shù)據(jù)越來(lái)越大了,這是第一個(gè)背景耕餐。第二個(gè)背景是我們手機(jī)打開(kāi)凡傅,在通常環(huán)境下并不比我們固網(wǎng)差,所以我認(rèn)為可以肠缔。但我們的應(yīng)用上都會(huì)給所有的使用者提供一個(gè)是否是局域上傳和是否是局域下載的開(kāi)關(guān)夏跷,目前大家都比較保守哼转,不會(huì)打開(kāi)的。我剛才說(shuō)到大部分人還是在wifi環(huán)境下槽华,如果有大量的用戶(hù)應(yīng)對(duì)這個(gè)問(wèn)題的時(shí)候壹蔓,也是符合我們現(xiàn)在的判斷邏輯。就是在P2P里面猫态,再講細(xì)的話(huà)有一個(gè)超時(shí)極致系統(tǒng)佣蓉,比如說(shuō)你上傳能力有限,或者說(shuō)你的速度很快但是網(wǎng)絡(luò)不穩(wěn)定亲雪,這種情況下我們?cè)谟脩?hù)端會(huì)主動(dòng)放棄對(duì)你的選擇和使用勇凭。但如果大面積出現(xiàn)你剛才說(shuō)的問(wèn)題的話(huà),那可能會(huì)一個(gè)很大的挑戰(zhàn)义辕,是一件值得讓自己感到要去做的事虾标。
Q2:我想問(wèn)一下咱們的P2P的SDK如果切入到移動(dòng)端,主流的移動(dòng)端手機(jī)的話(huà)會(huì)增加灌砖,像我們說(shuō)的視頻璧函、移動(dòng)直播的,會(huì)增加終端的崩潰或者是穩(wěn)定性嗎基显?
王羲桀:我覺(jué)得在國(guó)內(nèi)能做P2P的公司確實(shí)比較少蘸吓,今年隨著大家的需求變多以后,確實(shí)已經(jīng)冒出了很多的P2P公司撩幽。實(shí)際我們現(xiàn)在在芒果TV全平臺(tái)库继、Android、iOS摸航,這是典型的用戶(hù)制跟,當(dāng)然還有很多的公司在使用,活躍的用戶(hù)已經(jīng)非常大了酱虎。從他們的數(shù)據(jù)反饋來(lái)說(shuō)雨膨,現(xiàn)在沒(méi)有崩潰率提升。在他們的體系里崩潰率是非常嚴(yán)格的指標(biāo)读串,我知道的應(yīng)該是在百分之零點(diǎn)幾以下聊记。
Q3:會(huì)有別的發(fā)熱現(xiàn)象嗎?
王羲桀:P2P的開(kāi)銷(xiāo)非常非常低恢暖,我們的SDK有網(wǎng)站你可以測(cè)試一下排监。P2P本身的算法是相對(duì)比較簡(jiǎn)單,唯一的開(kāi)銷(xiāo)就是加解密杰捂,以及校驗(yàn)舆床。因?yàn)镻2P的數(shù)據(jù)不安全,所以來(lái)源都會(huì)進(jìn)行比CDN復(fù)雜4倍的邏輯,我們的用戶(hù)連接數(shù)不會(huì)超過(guò)20個(gè)挨队,數(shù)據(jù)下載速度不會(huì)超過(guò)50k谷暮,我們現(xiàn)在手機(jī)做的時(shí)候?qū)碾娨约鞍l(fā)熱沒(méi)有太大的影響。
Q4:使用P2P能節(jié)省多少CDN流量成本盛垦?
王羲桀:以前P2P要達(dá)到過(guò)萬(wàn)用戶(hù)才能達(dá)到一個(gè)最大輸出湿弦,現(xiàn)在云帆加速做的在500個(gè)用戶(hù)就能達(dá)到最大輸出,它影響的維度有幾個(gè)腾夯,用戶(hù)的集中度颊埃,視頻的碼率以及參與用戶(hù)的網(wǎng)絡(luò)環(huán)境,最后我們得到在保障用戶(hù)體驗(yàn)技術(shù)上蝶俱,大規(guī)模P2P使用的分享率一般在60-80%班利,最高達(dá)到90%以上,能夠降低一半以上帶寬成本跷乐。返回搜狐肥败,查看更多