• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>
    您當前的位置是:  首頁(yè) > 資訊 > 文章精選 >
     首頁(yè) > 資訊 > 文章精選 >

    三體云–高可用實(shí)時(shí)音視頻服務(wù)演進(jìn)之路

    2019-10-10 14:20:24   作者:張光   來(lái)源:CTI論壇   評論:0  點(diǎn)擊:


      三體云的前身是一家視頻會(huì )議提供商,如今致力于為多領(lǐng)域提供實(shí)時(shí)音視頻技術(shù)整體解決方案,為開(kāi)發(fā)者提供簡(jiǎn)單易用、極度穩定、低延時(shí)、高保障的直播云服務(wù),這其中的轉變在架構升級、系統調度和質(zhì)量監控三個(gè)方面都有不同的體現。本文來(lái)自于張光在LiveVideoStackCon2019北京站上的精彩分享。
      大家好,我是三體云CTO張光,今天我演講的主題是三體云如何提供高可用的實(shí)時(shí)音視頻服務(wù)。我從2005年開(kāi)始從事音視頻技術(shù)研究,有十年的移動(dòng)端音視頻研發(fā)經(jīng)驗,曾任著(zhù)名視頻會(huì )議廠(chǎng)商研發(fā)經(jīng)理,負責過(guò)多行業(yè)100+音視頻項目,2008奧運會(huì )有幸擔任TD3G供應商項目主要負責人,目前更加關(guān)注與實(shí)時(shí)音視頻技術(shù)的發(fā)展。
      1. 高可用
      1.1 高可用的定義
      眾所周知,云服務(wù)廠(chǎng)商與客戶(hù)簽訂協(xié)議之時(shí)一般都會(huì )附帶SLA協(xié)議,而SLA協(xié)議中基本就已經(jīng)定義了廠(chǎng)商給用戶(hù)提供的服務(wù)需要達到什么樣的等級。SLA協(xié)議中更多提到的是服務(wù)在什么時(shí)候可以提供給客戶(hù)使用,而具體的使用效果并沒(méi)有明確說(shuō)明,因此三體云對自身提出了更高的要求,希望提供的服務(wù)能夠在可用的同時(shí)帶給用戶(hù)更好的使用體驗。
      1.2 如何做到高可用
      三體云的前身是一家視頻會(huì )議提供商,整體軟件的架構都是由視頻會(huì )議過(guò)渡而來(lái),要提供實(shí)時(shí)音視頻服務(wù)并處理海量并發(fā)需求,當務(wù)之急是需要對系統架構進(jìn)行升級,另外,好的調度系統也能使音視頻服務(wù)變得更好用。在提供優(yōu)質(zhì)服務(wù)之后,三體云還希望能夠建設一套全面的質(zhì)量監控系統,更好更快的找出系統的不足,不斷地改進(jìn)以提供更好的服務(wù)給客戶(hù)。
      2. 系統架構升級
      2.1 早期適用于視頻會(huì )議的系統架構
      既然三體云之前是視頻會(huì )議的系統架構,那么就先從早期架構談起。如圖所示,早期的業(yè)務(wù)和媒體節點(diǎn)都部署在一個(gè)地點(diǎn),如果沒(méi)有高并發(fā)、跨地域等的需求情況下,僅僅一個(gè)master就能提供服務(wù)。隨著(zhù)用戶(hù)有更多分支機構的變更以及更多用戶(hù)接入的情況出現,就需要在MASTER節點(diǎn)上用SLAVE節點(diǎn)連接做拓展,隨著(zhù)層級越來(lái)越多,延遲也會(huì )越來(lái)越大,MASTER節點(diǎn)可能會(huì )成為瓶頸。在這種結構下,所有的狀態(tài)都存儲在業(yè)務(wù)服務(wù)器上,業(yè)務(wù)同步會(huì )非常復雜,某一節點(diǎn)宕機之后一般都采取雙機熱備的方式處理。因此三體云在轉型音視頻服務(wù)之后需要對舊的系統架構進(jìn)行全面的升級。
      2.2  更適合公有網(wǎng)絡(luò )部署的方案
      2.2.1 媒體接入及轉發(fā)
      系統架構升級的第一步是對媒體接入及轉發(fā)做一些改變,在媒體接入部分,三體云將全國各地的每臺服務(wù)器做平級化處理,相互之間沒(méi)有分層,所有的媒體服務(wù)器都會(huì )向loadbalance節點(diǎn)上報狀態(tài),幫助其做一些調度方面的決策。而在媒體之間轉發(fā)部分,在視頻會(huì )議架構中節點(diǎn)轉發(fā)需要上報根節點(diǎn)之后才能下發(fā)到相應節點(diǎn),而改變也如圖中所示,例如北京移動(dòng)轉發(fā)到廣東電信需要經(jīng)過(guò)BGP中心節點(diǎn)來(lái)幫助做路由轉發(fā),廣東到上海也會(huì )有一個(gè)三線(xiàn)IDC來(lái)幫助其轉發(fā)。
      2.2.2 信令及狀態(tài)維護
      信令和狀態(tài)維護方面的改變與之前媒體部分的改變比較類(lèi)似,loadbalance節點(diǎn)同樣做接入和分發(fā)的工作,而業(yè)務(wù)之間也不存在層級關(guān)系,都會(huì )向loadbalance上報自己的狀態(tài),同時(shí)所有跟業(yè)務(wù)相關(guān)的房間、用戶(hù)的狀態(tài)信息等都會(huì )寫(xiě)入redis,業(yè)務(wù)之間的數據同步就會(huì )變得更簡(jiǎn)單。
      2.2.3 結合
      上圖表示的是一個(gè)客戶(hù)端想要接入系統首先需要連接loadbalance,當前更多采用域名的方式來(lái)連接,接入之后調度到指定的業(yè)務(wù)服務(wù)器上,所有的業(yè)務(wù)都需要把狀態(tài)寫(xiě)到redis,業(yè)務(wù)服務(wù)器分發(fā)之后首先會(huì )有校驗和創(chuàng )建狀態(tài)的環(huán)節,完成之后就會(huì )給他分配媒體服務(wù)器。改變之后的業(yè)務(wù)和媒體的拓展比之前的樹(shù)狀結構要簡(jiǎn)單許多,不需要把新加的媒體或業(yè)務(wù)掛在某一個(gè)MASTER或SLAVE節點(diǎn)下,只需要部署在平臺上并注冊在loadbalance上就可以,業(yè)務(wù)和媒體的個(gè)數不用一一綁定,拓展要相對靈活一些。盡管三體云做到了這些架構升級,但在現實(shí)中仍然出現Loadbalance和redis集群癱瘓所引發(fā)的問(wèn)題,因此需要進(jìn)一步改進(jìn)框架,優(yōu)化產(chǎn)品服務(wù)。
      2.2.4 優(yōu)化
      通過(guò)對系統架構的升級優(yōu)化,客戶(hù)端在接入時(shí),會(huì )有如圖兩套loadbalance連接,而且redis分開(kāi)寫(xiě)入,兩個(gè)loadbalance之間保持高速同步,這樣可以做到兩個(gè)人通過(guò)不同的loadbalance進(jìn)行連麥操作。但這樣做還是會(huì )出現部分用戶(hù)連接不到服務(wù)器的問(wèn)題,經(jīng)過(guò)排查發(fā)現原因是這部分用戶(hù)的域名被劫持,因此三體云又多建了一套固定IP,與前兩個(gè)loadbalance一起寫(xiě)入SDK,用戶(hù)使用服務(wù)進(jìn)行連通時(shí)如果訪(fǎng)問(wèn)不到域名就會(huì )嘗試連接靜態(tài)IP來(lái)訪(fǎng)問(wèn),更進(jìn)一步保證了服務(wù)的連通性。
      3. 智能調度
      3.1 節點(diǎn)的選擇
      系統架構的升級在一定程度上提高了三體云服務(wù)的用戶(hù)體驗,但僅僅靠架構優(yōu)化遠遠達不到我們的預期,還需要智能調度來(lái)進(jìn)一步提升產(chǎn)品質(zhì)量。中國幅員遼闊,大的國土面積帶來(lái)的問(wèn)題是會(huì )出現各種各樣的網(wǎng)絡(luò )問(wèn)題,如果要為不同地方的用戶(hù)提供服務(wù)就需要部署更多的服務(wù)器,目前在國內就已經(jīng)有兩百多個(gè)數據節點(diǎn),而對于不同位置需要對節點(diǎn)部署進(jìn)行選擇。首先需要找到一些能夠部署服務(wù)器的機房,找到節點(diǎn)之后進(jìn)行撥測,保證服務(wù)器真實(shí)可用且滿(mǎn)足基本條件就可以部署服務(wù),部署成功再經(jīng)過(guò)內部測試才可以上線(xiàn),而上線(xiàn)之后才是對于節點(diǎn)的真正考驗。節點(diǎn)上線(xiàn)之后我們會(huì )對其進(jìn)行數據監控,以觀(guān)測該節點(diǎn)是否符合服務(wù)標準,最終會(huì )對不符合條件的節點(diǎn)進(jìn)行淘汰,并重新在該區域選擇節點(diǎn)部署。這樣對于節點(diǎn)的選擇流程會(huì )使三體云部署的全部節點(diǎn)都是符合服務(wù)標準的選擇。
      3.2 第一公里&最后一公里
      想要做到智能調度的第一點(diǎn)是要讓節點(diǎn)部署離用戶(hù)更近,最初三體云是通過(guò)IP庫返回所在地域以及運營(yíng)商進(jìn)行選擇,但實(shí)際上國內的網(wǎng)絡(luò )環(huán)境非常復雜,IP庫也存在一定的準確性問(wèn)題,甚至服務(wù)器獲取的IP與媒體服務(wù)器獲取到的IP可能不一致,這些問(wèn)題都急需解決。
      通過(guò)IP庫返回所在地域以及運營(yíng)商這件事本身并沒(méi)有錯,問(wèn)題出在運營(yíng)商并沒(méi)有將這件事解決徹底,因此在進(jìn)行用戶(hù)調度時(shí)需要更嚴格要求就近原則、運營(yíng)商匹配度以及負載均衡,除此之外還需要做一些兜底保障和數據統計的工作來(lái)完善調用規則。
      3.3 路徑選擇
      互聯(lián)網(wǎng)做實(shí)時(shí)音視頻交互大部分都是跨區域連通,而三體云在解決這部分問(wèn)題時(shí)也遵循著(zhù)四個(gè)原則,首先通過(guò)探測機制探測各節點(diǎn)間的網(wǎng)絡(luò )狀況(分區域),畢竟在國內目前就存在兩百多個(gè)服務(wù)器節點(diǎn),對這些節點(diǎn)進(jìn)行探測是基本不可能的,因此是按區域劃分進(jìn)行探測,各區域會(huì )把自己的探測結果上報到?jīng)Q策中心去做統一的調度。第二點(diǎn)是關(guān)于實(shí)時(shí)負載狀況的統計,國內兩百多個(gè)服務(wù)器節點(diǎn)的配置是不一樣的,所以必須把實(shí)時(shí)運行的狀態(tài)上報到?jīng)Q策中心,方便做后續分配。最后在路徑選擇方面還需要基于成本考量,并且遵循最短路徑原則。
      3.4 路徑切換
      路徑選擇完成之后在真實(shí)網(wǎng)絡(luò )環(huán)境下還會(huì )出現,國內的網(wǎng)絡(luò )包括主干網(wǎng)和單線(xiàn)機房都會(huì )隨時(shí)發(fā)生抖動(dòng),或者發(fā)生機房宕機等情況,為了盡量避免這些特殊情況對用戶(hù)體驗的影響,還需要在智能調度中加入路徑切換,能夠在使用過(guò)程中對路徑做實(shí)時(shí)選擇。
      3.5 服務(wù)下線(xiàn)、升級
      服務(wù)器部署之后并不是一成不變的,算法的改進(jìn)和服務(wù)節點(diǎn)的替換都是服務(wù)下線(xiàn)和升級的過(guò)程,而在這個(gè)過(guò)程中我們也希望能有更好的用戶(hù)體驗。假如A服務(wù)需要下線(xiàn)、升級,之前的做法是直接殺死A服務(wù),依賴(lài)client的斷線(xiàn)重連使服務(wù)維持下去,但這期間會(huì )發(fā)生黑屏、卡頓等非常影響用戶(hù)體驗的狀況發(fā)生。而后的改進(jìn)措施是先從loadbalance上注銷(xiāo)A服務(wù),保證調度時(shí)不再有新的用戶(hù)訪(fǎng)問(wèn)A服務(wù),等待A服務(wù)用戶(hù)逐漸歸零之后再升級服務(wù),但現實(shí)情況下根本沒(méi)辦法等到所有用戶(hù)都從A服務(wù)上下線(xiàn),所以最終三體云的改進(jìn)方法是主動(dòng)發(fā)送信令通知用戶(hù)從A服務(wù)遷移到B服務(wù),在此期間做到用戶(hù)對于服務(wù)下線(xiàn)、升級完全無(wú)感知,體驗不到中間有任何的斷開(kāi)。
      4. 質(zhì)量監控
      在做完服務(wù)器部署以及智能調度之后,已經(jīng)可以保證用戶(hù)能夠無(wú)時(shí)無(wú)刻的訪(fǎng)問(wèn)三體云的業(yè)務(wù),但最終的使用效果如果沒(méi)有質(zhì)量監控是沒(méi)辦法觀(guān)測到的,并且需要做到先于用戶(hù)發(fā)現問(wèn)題,或者幫助客戶(hù)一起來(lái)改進(jìn)服務(wù)質(zhì)量。以下是三體云質(zhì)量監控系統對某客戶(hù)使用效果的一些指標統計數據。
      4.1 質(zhì)量監控示例

     

     

     

     

     
      來(lái)源:LiveVideoStack
    【免責聲明】本文僅代表作者本人觀(guān)點(diǎn),與CTI論壇無(wú)關(guān)。CTI論壇對文中陳述、觀(guān)點(diǎn)判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

    專(zhuān)題

    CTI論壇會(huì )員企業(yè)

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 博白县| 安龙县| 中牟县| 涿鹿县| 隆安县| 寿光市| 陆良县| 鸡西市| 马鞍山市| 凤冈县| 新建县| 邢台县| 蒙山县| 巨鹿县| 五华县| 繁峙县| 若尔盖县| 漳浦县| 云南省| 辽阳市| 晋江市| 碌曲县| 兰西县| 玉林市| 崇左市| 廉江市| 广东省| 京山县| 色达县| 银川市| 马龙县| 浠水县| 亳州市| 安徽省| 营口市| 墨竹工卡县| 射阳县| 延安市| 东至县| 武定县| 武平县| http://444 http://444 http://444 http://444 http://444 http://444