移動直播技術的極限優化與高效研發

一、直播業務的變革

1、直播業務發展

直播業務最早開始于2013年,當時是社區,功能只有簡單的語音聊天。隨后,YY做了很多從社區轉向娛樂的事情,掀起了在娛樂直播行業的一股小高潮。后來,大量的傳統媒體和一些有粉絲體系、名人效應的傳媒介入以后,直播轉變為基于PGC的一個體系。這個階段的大部分平臺基本偏向于專業做直播這一塊業務的企業在做,業務質量會相對高一點,那時的行業增長達到了300%。再到后面,發現廣大用戶也有直播需求,這個真正帶動了基于社交的直播。

2、直播業務變革

隨著直播業務的快速發展,給技術人員帶來的挑戰是什么?技術人員要怎么應對這個業務帶來的技術上的變革?

首先,從原來簡單的直播,到細分娛樂直播、游戲直播、體育直播等等,再到用戶的實時直播,直播場景在不斷細化,導致涉及到的技術方案也有一定差異。隨著環境復雜度的變化,網絡場景和用戶場景越來越復雜,技術人員需要考慮各種細分的場景,以及各種極端的情況,而不僅僅是平均值。同時,硬件的成熟,給技術人員帶來了更多機會,以前做不出來的效果,隨著機器性能的提升逐步實現。網絡條件的成熟,4G/WIFI的普及也讓直播變得更為流暢。但是,技術人員也需要用更新的技術來滿足用戶的訴求。

3、產品體驗變革

隨著硬件和網絡條件的成熟,用戶對產品體驗的要求也越來越高。以前的產品主要在PC端,大家只要集中精力把PC端的產品體驗做好閉環就行,放到移動端可能玩不轉。很多移動端的體驗是基于手機的單屏模式,而且用戶很容易切出直播界面,比如突然來了個微信消息,要切換過去看。這給技術人員帶來了和PC端不同的挑戰。也就是說,隨著移動端的發展成熟,除了技術,產品體驗也在變,這就決定了很多技術方案和技術細節需要不斷地去變化。

4、直播技術變革

綜合來看,對于技術上帶來的挑戰就是:

  • 對性能有更高的要求:比如以前可能只要20%的用戶有好的體驗,現在可能要達到90%以上的用戶有好的體驗。

  • 低端設備更高體驗:低端機并沒有消亡,如果有看移動端的基礎設備統計會發現,低端機一直存在。企業若不愿放棄這部分用戶,就至少需要能讓他們有降級的體驗。

  • 用戶等待容忍度降低/弱網絡良好體驗:用戶的等待容忍度在不斷降低,以前用戶會認為自己機器不好、網絡不好,可以等待加載和延時,但現在他們會認為是業務體驗差。這時若有其它產品做的更好,你的產品就會被卸載,技術門檻就體現在這里。

  • 互動性、實時性/流暢的交互體驗:直播行業對于實時性和互動性的要求會非常高,主播在直播時如果無法及時得到觀眾的響應,體驗會非常糟糕。

二、直播極限優化方案

1、深入掌握極限優化

挑戰已列出,接下來就要想辦法解決。極限優化這個概念,不同的人可能有不同的理解方式,但最終的目的是一樣的,配合業務做好體驗。

  • 首先,得清楚優化的使用場景,最終是要解決什么問題,是用戶的體驗問題?還是性能問題?亦或其它,不能悶頭行動。而且,優化方案帶來的實際提升要有預估,根據投入成本進行預估。

  • 同時,要深度分析優化方案的可執行性。因為優化往往不是一個人在做,而是一個團隊在做,如果方案本身就不可執行,那浪費的是一個團隊的時間。而且,要找準關鍵的點在哪里,根據自己業務的瓶頸來做,不要盲目跟著別人的方案來做。事先清楚和找準后,再去進行深度的方案討論。

  • 然后,是要盡量避免過渡優化。怎么理解?在做優化方案的時候往往會有很多很多方案,有些提升的比例可能沒那么高,比如從98%提升到99%,但帶來的人工和維護成本非常大,這個時候就要考量用戶的比量,確定是否值得投入。

2、常見優化方案

每個團隊所用的技術、方案都不太一樣,所以在優化上面也會有所差異。在此,針對常見的3種方案進行優化分析:

  • 前后端分離:最初的大部分的業務應該都是前后端分離的方式,前端就聚焦在前端上面,后端專注于后端的一些接口、數據的調用。這時要怎么去優化?首先,隨著業務越來越復雜,前端要做分層處理、??榛?,以便維護。同時, 要重點做前端資源加載的優化,因為后端只是在做數據拉取,只要能夠抗住量,就沒有太大問題。而且,要清楚每個資源、數據在異常情況下帶來的影響。舉個列子,你的業務可能有很多很多的資源,當第一個資源失敗,會帶來什么結果,第二個資源失敗,又會帶來什么結果,這些都要非常清楚。否則,當用戶把問題反饋過來時,很難第一時間發現問題所在。此外,網絡場景要去細分,了解用戶的重點是在哪里,是在4G網絡,還是在WIFI網絡,優化重點要進行偏重。

  • 重前端MV*:隨著前端的發展,前端MV*框架愈加常見,很多業務、團隊都有在用。這種情況下的前端更重,就需要考慮前端并發,不能讓用戶去等待很多很多的信息。同時要去做同步渲染降級,讓用戶快速看到?;掛悸竊諞滴窶錈嫻腟EO,對于瀏覽器來講,當它拉的信息都是一樣的,它會認為頁面的更新非常低,搜索引擎很難抓取并更新。

  • Node全棧研發:在發現訴求越來越多的時候,就需要有一個能同時聚焦到前后端的工具,剛好Node就能幫我們做很多事情。這和前后端分離有點像,但又不完全一致??梢鑰闖?,前者是前端一個人后端一個人,但更好的情況是能前后端只有1個人,這樣他會更清楚前后端的邏輯,而且這些邏輯要盡可能的在前后端復用,這個時候就要考慮前后端的復用體系。Node本身很強,但還需要注意更深入的一些東西,比如TCP/UDP協議的解析。因為你后端的數據是來源于它的后端的一些數據調用,如果這個時候能夠用node解決,那是最好的,前提是node能撐住這個量的場景。

3、效率至上

優化的同時,要對團隊的效率進行掌握。效率至上來做優化,才是合理的。對于效率,可以從以下幾個方面去看:

第一個是剛才講的復用體系,前后端復用體系怎么去復用;

第二個就是需要有完整的構建工程體系,現在其實有很多構建工具,在此不做列舉,能用工具解決的事情都不要去用人力去做,哪怕是一個簡單的更改。因為工具解決不會出問題,但人力解決難免會出問題。

第三個是需要有完整的研發技術棧,研發技術棧決定了團隊的統一性,能夠幫助新人快速融入和業務的交接。

4、研發生態

雖然說效率至上,但也不能只講效率,還要有所有工具體系的一個生態閉環。它能不能自動更新、自動維護,能不能有一個方式去迭代。比如說其中的一個組件,它可能會升級、會改變,升級的方案是什么?升級后怎么快速的能夠跑起來、用起來,不出問題?這就是生態,生態會有很多方面,把業務里面的生態建立起來后,團隊的優化才是最高效的。

三、直播優化實踐

確定了方案,下一步就要應用到業務中實踐。同樣,每個業務的情況都不一樣,這里還是以直播的業務來舉例。

1.1、監控——加載監控體系

首先,要知道你的業務瓶頸,這就是通過業務的監控分析出來的。沒有監控是很難知道業務的瓶頸在哪里。那到底要監控哪些點呢?可能有人會比較茫然,那么多業務,哪些點是重點,哪些點是必須要做的點,難道每個都要監控嗎?

在此,列出了在業務中需要做的點:

不管是從資源的加載,還是資源的使用,還是版本的覆蓋,還是本身的前端的錯誤,這些都是要做的。如果這些都沒有做,那么說明對業務的掌控是不夠的,你不知道用戶哪里出了問題。所以說監控是很重要的點, 現在有很多開源工具可以幫助你去做,也有很多現成的統計工具。

當然,監控不是最終目的,優化業務和提升業務才是。工具做好之后,就要去在監控中發現問題,最好是能主動發現問題,而不是被動的依靠用戶投訴。

1.2、監控——視頻流監控體系

在直播業務中,還有個很特別的東西就是視頻流。因為它的特點是量很大,加載對用戶的網絡要求很高,在視頻上面對視頻流需要比傳統的資源更細致的處理。需要去從它的加載、播放等各個方面做監控和完善。做完這些你才知道你的業務問題和瓶頸在哪里。然后再經過分析,就能知道要從哪里下手進行優化。

1.3、監控——機器性能指標監控體系

同時,剛才也有提到,業務對機器的性能要求越來越高。有很多的機器甚至可能根本沒辦法支持很高的FPS業務。性能對業務的影響非常大,同樣的性能,A業務能跑起來,B業務如果跑不起來,用戶的感覺就是B業務做得爛,團隊很差。性能能夠幫助建立業務的影響力和用戶的口碑。

對于性能,其實也有很多辦法可以去做監控,比如說給業務在機器上做性能的評分,通過評分能夠知道機器到底是什么情況,用戶的機器到底能承載多少FPS業務,再根據結果進行降級和升級優化。這就需要統計和分析用戶到底是處在什么樣的機器性能什么?;褂懈煌蠪PS歸類、針對資源分類打包等等方式,都是監控性能比較好的方式。

1.4、監控——前端日志監控體系

剛剛也有提到,用戶的環境非常復雜,這也是為什么說做前端要去細分到每個用戶的原因。不像做服務端,機器上跑什么版本你是知道的,搞定這個版本怎么做就ok。但用戶不一樣,每個用戶都是不同的,出了問題不一定能知道。在大量的數據情況下,是需要測試才能測出來的。因此,要對用戶的實際情況進行監控,到底業務走到哪里了,沒有走到的原因是什么?將這些信息全部收集上來。

2、監控體系的自動化

有了這么多監控方式,自然希望說它們能夠自動化去處理。僅僅依靠人力,每個業務上線都去弄一遍,那很難跑下來,人力成本會十分恐怖。因此需要去做自動化的處理,能夠實時的知道業務出了問題,問題出在哪。而且希望能夠通過一些前端的染色,畢竟用戶的網絡其實也是有成本的,什么都上報,流量費用比其它業務高很多,用戶可能會進行投訴,這就需要染色的能力。染色的能力就是說通過配置server去抓取你想要的用戶出錯信息。

3.1、業務優化實踐——節點、場景優化

有了這些自動化之后,就要開始實踐了。在業務中去實踐的時候可以看到,一個頁面的加載會分為很多流程。這些流程下面就是需要去針對細化的各個節點,并確定每個點到哪一步需要什么優化方案?;褂性詬髦殖【暗南阜趾突?,針對這些場景進行優化。

3.2、業務優化實踐——移動頁面性能優化

對直播業務來說,移動端的業務量非常大。因此要學會充分利用性能工具來做事情,學會用工具作分析。同時要關注CPU變化趨勢和GPU渲染能力。如果說實在通過H5已經解決不了問題了,就要適當去找你的環境,環境會提供很多native的能力,不管是用React-Native還是用原生native接口的方式,都只有一個目標,就是通過環境來幫助你業務可以更好的體驗。

3.3、業務優化實踐——圖片資源優化

在直播行業,有兩個資源比較重要,一個是視頻,一個是圖片。先看圖片要怎么去做優化。

圖片其實有很多很多方式可以做,首先要考慮用戶的情況:第一,這個圖片能不能快速的加載下來;第二,這個圖片在用戶端能不能快速渲染。這些決定了圖片在業務上打開的快慢。

3.4、業務優化實踐——視頻資源優化

在直播行業,通用的視頻架構幾乎都會包含下面這些???,每一個??樵詿硎倍夾枰奔?,而最終都會體現在影響用戶體驗的時延。主播開始直播,從上傳視頻源的這一秒開始計時,到用戶能看到主播說這話的這個時間段就是時延。時延是直播業務非常重要的參考數據,時延太高,互動性會非常差。

舉例來說,主播開播,那他就是視頻的上行,從上行的開始,要去申請很多很多流程,同時要把這個視頻流做一些格式的封裝和解碼,這就需要處理時間。同時,視頻資源比較大, 不能以普通的服務器來承載,要用CDN這種方式來承載,這時流的傳送也是一個時延。

在下行端也一樣,CDN的架構會有很多很多的云,用戶接入時候需要從異地云上拉取資源,這也有時間等待。這里面的時間最終會體現在用戶的拉取時延上面,打開視頻,可能要等3秒、5秒、10秒。

視頻要怎么優化?互動時延和加載時延的問題要怎么解決?

直播業務里面有一個比較關鍵的數據——GOP關鍵幀,就是一組動畫關鍵幀。在播放器播放時,是按關鍵幀解析,非關鍵幀無法獨立解析,必須依賴關鍵幀才能去渲染。在移動端H5的播放時需要3個HLS分片,分片是關鍵幀在服務端經過轉碼之后打包后出來的。因此,要解決互動時延的問題,其實就是優化關鍵幀的間隔。比如5秒一個HLS分片,3個就是15秒,那主播說一句話,用戶要等15秒后才能聽到。加載時延就是上面提到的流的分配,能不能優化主動去push到這些節點而不是等用戶去拉取。而且上行很多時候是不穩定的,更需要去做很多很多處理,假設丟包了,很多畫面解析不出來,這時候還要補幀。

另外就是回放,回放和直播唯一的不同是不需要互動性,主要需要優化加載時延。這涉及到另外一個概念,就是MP4的格式。MP4是按個塊封裝,可以理解為一個一個的指針,指針的位置是需要相乘,MP4的文件頭需要下載下來才能播,如果指針的信息越來越多,索引越來越多的話,不利于加載,這就需要在服務端處理。

四、直播高效研發之道

前面既然說了這么多需要做的優化工作,那自然是希望能夠不用每個業務都去做一遍,這就需要去做一些研發效率方面的事情,幫助技術人員快速去做這些事情。

研發效率怎么理解?首先需要有完整的構建體系。這個體系里的工具是根據業務的特點來選擇,沒有好壞之分,沒只有合適之分。同時,需要組件體系來管理組件,你的前后端復用最終都是要以組件的方式存在,組件可以把業務分解到非常細的密度,利于更好的復用。在組件的使用上面需要更快捷的使用方式,上傳、更新以后,在需要的時候能快速更新到業務里面去。這些所有的其實都是基于技術棧的統一。

體系建立以后,怎么在業務中使用呢?

業務組件分兩種:一是基礎組件,就是沒有業務區分、通用的,這種不涉及邏輯,只有UI組件,使用的時候可以直接引入UI組件。二是業務組件,需要去做合理的拆分。通常的直播間要拆分為很多很多點,視頻、點贊、送禮等等。拆分后如果以后有業務不需要點贊功能,把點贊組件引用去掉就可以,這樣就能快速組成新的業務。在引用的時候有3個原則,第一是以快速的搭建為目標,第二是用戶只要install下來就能用,三是運行要簡單,不需要某個的時候把它干掉就好。

五、優化無極限

最后,每個業務都有不同的業務要求,作為技術人員,要思考的點是優化有沒有極限?沒有!但是業務是有極限的,業務的目標是什么?業務負責人要充分的考慮這些點。

團隊研發也是一樣的,你的目標是要解決什么問題?最終要讓團隊達到什么樣的目標或lever,都是需要考慮的。最終在業務里面使用的時候,要細分到每個場景,關注每個細節,根據這些細分的場景和方案,做業務的支持。

來源:開源中國

上一篇: JavaScript無阻塞加載性能優化方案

下一篇: 手把手教你寫一個 Javascript 框架:項目結構

分享到: 更多
dnf挣钱快的方法 黑龙江时时开奖直播 河北时时怎么玩 ds足球官网 21点游戏下载中文版 网赌坚持一年每天赢600 北京pk10高手赌法长期 付款协议书范本大全 彩票有没有网上投注 2018最新版抢庄牌九 北京pk10官网视频直播 压庄龙虎 新疆时时彩开奖 时时彩怎么买才稳赚 三公扑克牌最新感应器 老重时时彩走势图360