返回首页
网站导航
资讯首页> 网站公告 >产品资讯 > 全球同步的大规模现场直播,Facebook 工程师是如何搞定的?

    全球同步的大规模现场直播,Facebook 工程师是如何搞定的?

    产品资讯2017年10月17日
    分享

    一个团队要负责确保数十亿人可以看到并参与到世界各地的现场活动。

    去年二月, 一只叫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系统上播放的实时体验越来越多。所以公司必须做得更好,因为股价越高,失败的成本越来越大。

    他说:“我们花了很多时间来了解未来六个月或一年内会发生什么,我们正在努力确保不会在裤子掉下来的时候被人抓到。”