Amazon Kinesis Streams 每天处理数 TB 日志数据,事件只需几秒钟即可显示在我们的分析中。我们能够实时发现和应对问题,确保高可用性和卓越的客户体验。
John Bennett Netflix 的高级软件工程师
  • 关于 Netflix

    Netflix 是世界领先的互联网电视网络,在 190 多个国家/地区中拥有超过 1 亿会员,他们每天观看 1.25 亿小时的电视节目和电影。

  • 使用的 AWS 服务

  • AWS 的优势

    • 每天处理和丰富数 TB 数据,代表数十亿个事件,分析查询的响应时间不到 1 秒
    • 与竞争对手的解决方案相比,成本效率更高
    • 自由测试系统架构,以找到最有效的解决方案
    • 只需调用几次 API,即可开始注入数据
    • 近 1000 个 Amazon Kinesis 分区同时工作的高弹性解决方案

Netflix 是世界领先的互联网电视网络,在全球拥有超过 1 亿会员,他们每天观看 1.25 亿小时的电视节目和电影,包括原版影视剧、纪录片和故事片。会员几乎能够在所有联网屏幕上随时随地尽情观看。

Netflix 使用 Amazon Web Services (AWS) 来满足几乎所有计算和存储需求,包括数据库、分析、建议引擎、视频编码和数百种功能,总共使用 AWS 上 100000 多个服务器实例。

这导致极其复杂的动态联网环境,应用程序在该环境下不断在 AWS 内和跨 Internet 通信。监控和优化网络对 Netflix 继续改善客户体验、提高效率和降低成本来说至关重要。具体而言,Netflix 需要这样一种解决方案,即能够以 Virtual Private Cloud (VPC) 流日志形式提取、优化和分析其网络每天生成的数 TB 数据。这将使 Netflix 能够发现性能改进机会,例如识别跨区域通信的应用程序并予以配置。该公司还能够通过快速检测和缩短应用程序停机时间来延长正常运行时间。

每个日志记录包含两个 IP 地址之间的通信信息。然而,在像 Netflix 这样的动态环境中,IP 地址每天甚至是每分钟都会在应用程序之间浮动,IP 地址本身没有多大意义。“我们在采取这一举措之前拥有的数据源是单方面的。”Netflix 的高级软件工程师 John Bennett 说,“我们知道应用程序连接了其他应用程序,但是我们不知道对话的双方,以及如何优化这些通信或在网络上放置应用程序。”

Netflix 着手建立了一个新的数据源,通过将 VPC 流日志与应用程序元数据相结合,能够更深入地了解应用程序和区域之间的通信。

AWS 使 Netflix 从一开始就能尝试不同的方法来分析其网络数据。“在设计早期,灵活尝试处理数据的不同方法非常重要。”Bennett 说,“为此,我们尝试了多种设计,使用了很多 AWS 产品。”

Netflix 最终部署的解决方案在内部被称为 Dredge,其使用 Amazon Kinesis Streams 集中流日志。应用程序实时读取来自 Amazon Kinesis Streams 的数据,并使用应用程序元数据丰富 IP 地址,以便全面了解网络环境。“我们通常将数据放入数据库,以便构建索引来实现更快速的查询。”Bennett 说,“Dredge 将流日志与应用程序元数据相结合,同时在不使用数据库的情况下对其进行流式处理并将其编入索引,从而显著降低了复杂性。”

经过丰富的数据位于称为 Druid 的开源分析应用程序中。Netflix 使用 Druid 的 OLAP 查询功能快速将数据切片到区域、可用区和时间段,从而将其可视化并深入了解网络的行为方式和运作方式。

AWS 是 Dredge 的合理选择,部分原因在于数据已驻留在 AWS 云中。“发布、流式处理和使用来自 Kafka 等外部系统的大量信息将非常艰巨。”Bennett 说,“只需调用几次 API 即可将数 TB 流日志集中到 Amazon Kinesis Streams。我们现在可以专注于深入了解数据,而不仅仅是获取数据。”

由于 Netflix 中的网络使用具备灵活性和弹性,Amazon Kinesis Streams 的可扩展性非常适合 Dredge 应用程序。Bennett 说:“扩展和缩减我们的网络数据能够更经济高效,这没有采用 Amazon Kinesis 的替代方案那么容易。” 

netflix_arch_diagram_2

Netflix 基于 Amazon Kinesis Streams 的解决方案已被证实能够高度扩展,每天处理数十亿流量。通常,大约 1000 个 Amazon Kinesis 分区同时工作以便处理数据流。“Amazon Kinesis Streams 每天处理数 TB 日志数据,事件只需几秒钟即可显示在我们的分析中。”Bennett 说,“我们能够实时发现和应对问题,确保高可用性和卓越的客户体验。”

Netflix 目前能够找到新方法来优化其应用程序,无论这意味着将应用程序从一个区域迁移到另一个区域,还是更换成更适合特定类型流量的网络协议。Bennett 说:“我们的解决方案基于 Amazon Kinesis 构建而成,使得我们能够找到多种方法来提高效率、降低成本并改善恢复能力,从而打造最佳的客户体验。”

虽然流数据解决方案对 IT 行业来说并不陌生,但在网络领域属于一种创新。“Netflix 在 AWS 中投入了大量资金,部分原因在于抽象化了底层网络,所以我们不必处理交换机和路由器。”Bennett 说,“我们在更高级别的堆栈上进行监控、分析和优化,如果我们自行运行数据中心,根本不会考虑这样做。”

详细了解如何使用 Amazon Kinesis Streams 实时捕捉和处理流式大数据。