Facebook工程師如何搞定全球同步的大規(guī)?,F(xiàn)場直播

一場數(shù)十億人觀看全球同步的現(xiàn)場直播,如何才能保證用戶觀看體驗?Facebook做到了。
去年二月份,長頸鹿April在紐約市的哈布斯維爾動物奇遇公園生下了小寶寶,熱情的觀眾能夠在Facebook Live上實時觀看。該直播活動共有140萬人參與并發(fā)表了25萬多條評論。在西雅圖,F(xiàn)acebook工程師們在確保每個人都能看April給長頸鹿寶定喂食,并發(fā)表評論,而且能夠看到最新的更新。
Facebook擁有超過20億用戶, 其中Messenger和Whatsapp用戶數(shù)都超過10億,而Instagram用戶數(shù)則超過7億。所有用戶都覺得確保能夠與最重要的人觀看實時交互是Facebook的一個至關重要任務。如果人們聊天時看不到那些他們關心的人正在打字回復的一串小圓點狀態(tài),F(xiàn)acebook擔心他們可能會失去興趣。

Facebook的實時基礎設施經(jīng)理Shie Erlich說,關鍵是要確保當任何用戶在社交網(wǎng)絡上的實時功能進行某些操作時,或者使用了其中一個任意服務,用戶的好友都可以立即看到。 Erlich舉例說如果你的朋友Joe想要直播一下他的狗學到的新技巧,他只需要打開應用程序,點擊開始直播,他就可以開始把視頻通過流媒體直播出去了。我們正在嘗試為用戶創(chuàng)造觀眾,要不然用戶會感到寂寞。
Facebook需要自動查找可能對Joe的視頻感興趣的人(如朋友,家人和粉絲)并向他們發(fā)送通知,提醒他們正在發(fā)生的事情。如果他們關心,他們會點擊通知,開始觀看Joe的狗的表演。很可能很快就有些人會開始發(fā)表評論或作出反應 – 點贊,發(fā)送心心等等,這是每個人都想看到的。
Erlich還提到參與到這個事件不僅是看到人們?nèi)绾巫鞒龇磻?,F(xiàn)acebook的系統(tǒng)也旨在讓你知道,當你正在觀看Joe的視頻時,你的另一個朋友也正在觀看。這是一項很棒的功能,因為你可以直接與那個朋友溝通。他說我們的系統(tǒng)能夠?qū)崿F(xiàn)在線存在的這個概念,讓你知道有人正在分享和你同樣的經(jīng)歷。
次秒延遲

當Facebook談論實時時,他們確實做到了。 Erlich說其目標是"次秒鐘延遲",盡管確保成千上萬甚至數(shù)百萬人同時參與一個直播視頻是個十分困難的挑戰(zhàn)。 "實時是一個功能,"Erlich解釋說,"而今天,它更像一個實用程序,做到實時是很困難的,其中大部分原因是如何同時為那么多人做到實時。"
他表示,令人難以置信的是,盡管數(shù)以千萬計的人正在觀看相同的視頻,但Facebook仍然希望給每個人一個獨特的體驗。 他舉例說如果你和我在大選之夜觀看現(xiàn)場直播,我想看你的評論,因為你是我的朋友,而不是隨機的人。
與此同時,F(xiàn)acebook和它的其他服務也是全球性的。雖然系統(tǒng)通常處理世界各地的無數(shù)事件,但有時候,每個人的注意力都被吸引到同一個事件當中。
Erlich解釋說,有個例子是上個月的日食。突然間,世界的注意力集中在這件事上了,把它看作是索倫之眼,一股深厚的興趣指向一個特定的地方。我們的系統(tǒng)需要處理所有想獲得相同信息或經(jīng)驗的人。
在美國航空航天局的日食視頻中,創(chuàng)造了一個計算機科學事件Erlich稱之為"熱點",有超過3100萬次觀看和近30萬條評論。這意味著Facebook系統(tǒng)的流量在幾分鐘內(nèi)增長了20多倍。
這是Erlich的團隊可以預測的事件,但是不可預測的呢?他說Facebook的基礎設施必須承受任何事情。例如,碧昂絲宣布在Instagram上懷孕事,獲得了超過1100萬個贊。
根據(jù)Erlich的說法,成功處理預期和意料之外的事關鍵有三要素。
首先,他說Facebook有"壞蛋工程師",他們有自由探索的權力去獲得創(chuàng)造力,并且做出"瘋狂的解決方案來解決困難問題"。其次,F(xiàn)acebook和其兄弟的服務旨在共同的平臺上工作,這些平臺是由多個產(chǎn)品團隊構(gòu)建和重復使用的。臃腫的企業(yè)"將在自己的體重下倒下"。最后,F(xiàn)acebook不斷升級系統(tǒng),確保其當前的技術架構(gòu)能夠擴展到當今的需求,而未來將由更先進的基礎設施處理。
Erlich說:"我們的系統(tǒng)將遭到重創(chuàng),我們知道這一點,這即將發(fā)生。"
功能降低
一種方法是確保最重要的元素可用。有時候,就像一個計算極端密集的熱點一樣,比如說日食和長頸鹿出生,這可能意味著個人交互將算法定位到實時內(nèi)容。當有足夠的帶寬可用時,系統(tǒng)將再次返回顯示所有內(nèi)容?;蛘撸苍S評論將按照發(fā)送的順序顯示,而不是僅顯示來自朋友的評論。
這被稱為功能降低。他說:"這意味著如果事情出岔子的時候,并且不能提供用戶以前使用的服務,那么您如何做才不會給用戶造成煩惱。"他說。 "這是我們不斷癡迷的事情。"
Erlich補充說,目標是幫助內(nèi)部工程團隊提前選擇他們的系統(tǒng)如何處理重負荷。
他說隨著時間的推移,這些問題可能會更加頻繁,因為Facebook系統(tǒng)上播放的實時體驗越來越多。所以公司必須做得更好,因為股價越高,失敗的成本越來越大。
他說:"我們花了很多時間來了解未來六個月或一年內(nèi)會發(fā)生什么,我們正在努力確保不會在褲子掉下來的時候被人抓到。"