为了账号安全,请及时绑定邮箱和手机立即绑定

Netflix的大规模发布可观测性:确保内容顺利上线与发现

部分一:应对挑战

作者: Varun Khaitan 来自: Varun Khaitan

特别感谢我的杰出的同事们:Mallika RaoEsmir MesicHugo Marques

简介:

在 Netflix,我们每月管理超过一千次全球内容发布,这背后是每年数十亿美元的投资支持。确保每个作品在我们的平台上获得成功并被发现是我们的重要目标,因为我们努力将每个故事与合适的观众连接起来,从而让我们的会员感到高兴。为了实现这一目标,我们致力于构建强大的系统,以实现全面的监控,从而对我们在服务中提供的每个内容负责。

在发布标题时遇到的可观测性挑战(观测性和监控标题发布过程中的挑战)

作为工程师,我们习惯于追踪如错误率、延迟和CPU使用率这样的系统性能指标——但有没有考虑过对项目成功至关重要的那些指标呢?

下面来看一下两个不同的 Netflix 主页例子。

示例A的首页

示例首页B

对于一个基本的推荐系统来说,只要观众看到顶部的标题,这两页可能看起来是等同的。然而,这两页却大相径庭。每个标题都凝聚了无数个小时的努力和创意,我们的系统需要体现这种独特性。

我们应该怎样弥补这个差距?我们应该怎样设计系统来识别这些细微之处,让每个作品都能发光,给我们的会员带来快乐?

《个性化系统的运作需求》

在 Netflix 原创剧集的早期阶段,我们的启动团队会在午夜聚在一起,手动检查标题是否出现在正确的位置。这种方法对少数几部作品还行,但很快变得显然无能为力。随着 Netflix 扩展到全球和新剧发布的数量激增,维持这种手动流程的操作难度变得显而易见。

运营一个全球流媒体服务的个性化推荐系统涉及回答很多用户为何在特定时间和地点能看到或看不到某些标题的问题。举几个例子:

  • 为什么在即将推出行中没有显示成员 X 的标题?
  • 为什么在巴西的搜索页面中找不到标题 Y?
  • 标题 Z 是否在所有产品体验中如预期那样正确显示?

随着Netflix的扩展,我们面临着越来越大的挑战,提供准确及时的答案来应对关于影片表现和可发现性等日益复杂的查询。这导致了一系列分散且临时的解决方案散布在各个团队中——这种方法既不持续也不高效。

确保每个游戏或应用顺利发布时,所涉及的风险更高。元数据和资产必须正确配置,数据必须顺畅流动,微服务必须准确处理内容,算法也必须按预期运行。这些操作需求的复杂性强调了对可扩展解决方案的迫切需求。

运营自动化

随着时间推移,我们意识到需要自动化运营来适应业务增长。当我们深入思考这个问题及可能的解决方案时,两个明显的选择浮现在我们面前。

选项1:日志管理

日志处理提供了一个简单有效的解决方案来监控和分析内容标题的发布。通过记录所有展示的内容标题,我们可以处理这些日志以识别异常并更深入了解系统性能。这种方法有几个优势:

  1. 对现有系统影响小: 日志处理对现有的基础设施影响很小。通过利用在日常操作中已经生成的日志,我们可以扩展系统的可观测性而不需进行大量的系统改动。这使我们能够专注于数据分析和问题解决,而不是管理复杂的系统变更。
  2. 使用真实来源数据: 日志作为可靠的“真实来源数据”,记录了系统事件的全过程。它们帮助我们确认标题是否如预期展示,并调查任何偏差。此功能对于确保我们的推荐系统和用户界面正常运行至关重要,有助于顺利推出新标题。

然而,采取这种方法也会面临一些挑战:

  1. 提前捕获问题: 日志主要解决发布后的场景,因为日志只在内容被展示给用户之后生成。为了提前发现问题,我们需要模拟流量以提前预测系统行为。一旦生成了模拟流量,仅依赖日志而丢弃响应对象会变得低效。
  2. 合适的准确度: 完整的日志需要服务记录包含和排除的内容及其原因。这可能导致日志数据呈指数级增长,从而使系统不堪重负。使用概率性记录手段会降低准确性,导致难以判断日志中缺少某个内容是由于被排除还是随机因素的遗漏。
  3. SLA 和成本考虑: 我们现有的在线日志系统不原生支持对内容级别的日志记录。虽然可以重构系统以支持这一额外维度,但会增加成本。此外,这些调查的时间敏感性不允许使用冷存储,因为冷存储无法满足严格的时间要求。

选项 2:我们个性化系统的可观测性端点

为了优先考虑标题发布的可观测性,我们可以采取集中化的策略。通过在所有系统中引入可观测性端点,我们能够实现使实时数据流进入专门负责标题发布可观测性的微服务中。这种方法将可观测性直接嵌入到管理标题发布和个性化服务的架构中,确保无缝监控并获取洞察。其中的关键优势和策略包括:

  1. 实时监控: 可观测性端点使我们能够实时监控系统运行状况和标题位置,从而及时发现并解决问题。
  2. 主动发现问题: 通过模拟未来流量(我们称之为“时间旅行”)并提前捕捉系统反馈,我们可以在问题影响成员或业务之前提前发现可能的问题。
  3. 增强准确性: 可观测性端点提供了标题包含和排除的精确数据,使我们能够准确判断系统行为和标题是否可见。它还提供了高级调试数据,有助于解决已识别的问题。
  4. 可扩展性和成本效益: 尽管初始实施需要一定的投资,这种方法最终提供了一个既可扩展又成本效益高的解决方案来管理Netflix规模的标题发布。

选择此选项也会带来一些权衡。

  1. 需要大量的初始投资: 多个系统需要创建新的端点并调整其代码库,以优先处理启动。
  2. 同步问题: 新端点可能无法准确反映生产环境中的行为,因此需要特别注意,确保所有端点保持同步。
接下来:

通过采用包括实时监控技术、主动的问题检测和来源事实核对在内的全面的可观测性策略,我们显著增强了确保 Netflix 上的标题成功发布和发现的能力,提升了全球会员的观看体验。在接下来的系列文章中,我们将深入探讨我们如何实现这一点,分享关键的技术见解和细节。

请继续关注幕后创新的近距离观察!

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
PHP开发工程师
手记
粉丝
10
获赞与收藏
54

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消