全球同步的大規模現場直播是怎麽做到的?
編者按:壹場全球同步、數十億人觀看的現場直播活動,如何才能保證用戶體驗、保證不出差錯?Facebook反正是做到了。如果想學習壹下其中的經驗,不妨仔細讀讀本文。本文編譯自FastCompany原題為“How Facebook’s Engineers Try Not To Get Swamped By Massive Live Events”的文章。
壹個團隊要負責確保數十億人可以看到並參與到世界各地的現場活動。
去年二月,壹只叫April長頸鹿在紐約市的哈布斯維爾動物奇遇公園生下了小寶寶,熱切的觀眾能夠在Facebook Live上實時觀看該活動。該直播活動***計錄得了140萬人參與並發表了25萬條評論。在全國各地,在西雅圖,壹群Facebook工程師們在確保每個人都能看April給她的小寶定餵食,並發表評論,而且能夠看到最新的更新。
Facebook擁有超過20億用戶,其中Messenger和Whatsapp用戶數都超過10億,而Instagram用戶數則超過7億。所有用戶都覺得確保能夠與最重要的人觀看實時交互是Facebook的壹個至關重要任務。如果人們聊天時看不到那些他們關心的人正在打字回復的壹串小橢圓狀態,Facebook擔心他們可能會失去興趣。
Facebook的實時基礎設施經理Shie Erlich說,關鍵是要確保當任何用戶在社交網絡上的實時功能進行某些操作時,或者使用了其中壹個任意服務,用戶的好友都可以立即看到。 Erlich舉例說如果妳的朋友Joe想要直播壹下他的狗學到的新技巧,他只需要打開應用程序,點擊開始直播,他就可以開始把視頻通過流媒體直播出去了。我們正在嘗試為用戶創造觀眾,要不然用戶會感到寂寞。
雖然Facebook Live播放的內容大部分人是娛樂性或至少是適宜觀看的,但公司也不得不切法解決對這個工具的爭議。人們已經利用它來流傳壹些令人震驚的事件,例如自殺和殺人事件。在某些情況下,Facebook被指控移除那些今人不安的視頻過於緩慢。
盡管如此,大多數直播視頻都是無害的,Facebook希望確保用戶可以實時查看這些視頻以及任何相關的參與,畢竟這些東西每時每刻都在發生。
為了做到這壹點,Facebook需要自動查找可能對Joe的視頻感興趣的人(如朋友,家人和粉絲)並向他們發送通知,提醒他們正在發生的事情。如果他們關心,他們會點擊通知,開始觀看Joe的狗的表演。很可能很快就有些人會開始發表評論或作出反應_ 點贊,發送心心等等,這是每個人都想看到的。
Erlich還提到參與到這個事件不僅是看到人們如何作出反應,Facebook的系統也旨在讓妳知道,當妳正在觀看Joe的視頻時,妳的另壹個朋友也正在觀看。這是壹項很棒的功能,因為妳可以直接與那個朋友溝通。他說我們的系統能夠實現在線存在的這個概念,讓妳知道有人正在分享和妳同樣的經歷。
次秒延遲
當Facebook談論實時時,他們確實做到了。 Erlich說其目標是“次秒鐘延遲”,盡管確保成千上萬甚至數百萬人同時參與壹個直播視頻是個十分困難的挑戰。“實時是壹個功能,”Erlich解釋說,“而今天,它更像壹個實用程序,做到實時是很困難的,其中大部分原因是如何同時為那麽多人做到實時。”
他表示,令人難以置信的是,盡管數以千萬計的人正在觀看相同的視頻,但Facebook仍然希望給每個人壹個獨特的體驗。他舉例說如果妳和我在大選之夜觀看現場直播,我想看妳的評論,因為妳是我的朋友,而不是隨機的人。
與此同時,Facebook和它的其他服務也是全球性的。雖然系統通常處理世界各地的無數事件,但有時候,每個人的註意力都被吸引到同壹個事件當中。
Erlich解釋說,有個例子是上個月的日食。突然間,世界的註意力集中在這件事上了,把它看作是索倫之眼,壹股深厚的興趣指向壹個特定的地方。我們的系統需要處理所有想獲得相同信息或經驗的人。
在美國航空航天局的日食視頻中,創造了壹個計算機科學事件Erlich稱之為“熱點”,有超過3100萬次觀看和近30萬條評論。這意味著Facebook系統的流量在幾分鐘內增長了20多倍。
這是Erlich的團隊可以預測的事件,但是不可預測的呢?他說Facebook的基礎設施必須承受任何事情。例如,碧昂絲宣布在Instagram上懷孕事,獲得了超過1100萬個贊。
根據Erlich的說法,成功處理預期和意料之外的事關鍵有三要素。
首先,他說Facebook有“壞蛋工程師”,他們有自由探索的權力去獲得創造力,並且做出“瘋狂的解決方案來解決困難問題”。其次,Facebook和其兄弟的服務旨在***同的平臺上工作,這些平臺是由多個產品團隊構建和重復使用的。臃腫的企業“將在自己的體重下倒下”。最後,Facebook不斷升級系統,確保其當前的技術架構能夠擴展到當今的需求,而未來將由更先進的基礎設施處理。
Erlich說:“我們的系統將遭到重創,我們知道這壹點,這即將發生。”
功能降低
壹種方法是確保最重要的元素可用。有時候,就像壹個計算極端密集的熱點壹樣,比如說日食和長頸鹿出生,這可能意味著個人交互將算法定位到實時內容。當有足夠的帶寬可用時,系統將再次返回顯示所有內容。或者,也許評論將按照發送的順序顯示,而不是僅顯示來自朋友的評論。
這被稱為功能降低。他說:“這意味著如果事情出岔子的時候,並且不能提供用戶以前使用的服務,那麽您如何做才不會給用戶造成煩惱。”他說。“這是我們不斷癡迷的事情。”
Erlich補充說,目標是幫助內部工程團隊提前選擇他們的系統如何處理重負荷。
他說隨著時間的推移,這些問題可能會更加頻繁,因為Facebook系統上播放的實時體驗越來越多。所以公司必須做得更好,因為股價越高,失敗的成本越來越大。
他說:“我們花了很多時間來了解未來六個月或壹年內會發生什麽,我們正在努力確保不會在褲子掉下來的時候被人抓到。”
關於作者
丹尼爾·泰爾丹(Daniel Terdiman)是壹個常駐舊金山的科技記者,他擁有近20年的經驗,是CNET和VentureBeat的老將,Daniel亦曾為《連線》,《紐約時報》,《時代》等其他多家出版物供稿。
原文鏈接:pany.com//how-facebooks-engineers-try-not-to-get-caught-with-their-pants-down-by-massive-real-time-events
編譯組出品。編輯:郝鵬程