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


Amazon Kinesis Data Streams 每天处理数 TB 日志数据,事件只需几秒钟即可显示在我们的分析中。我们能够实时发现并处理问题,确保高可用性和卓越的客户体验。”
John Bennett
大规模的应用程序监控
Netflix 使用 Amazon Web Services (AWS) 来满足几乎所有计算和存储需求,包括数据库、分析、推荐引擎、视频编码等数百种功能,总共使用 AWS 上逾 10 万个服务器实例。
因此,这样的动态联网环境极其复杂,在这样的环境中,应用程序不断进行 AWS 内部和全网通信。监控和优化网络对 Netflix 继续改善客户体验、提高效率和降低成本来说至关重要。具体而言,Netflix 需要这样一种解决方案,即能够以 Virtual Private Cloud (VPC) 流日志形式提取、优化和分析其网络每天生成的数 TB 数据。这将使 Netflix 能够发现性能改进机会,例如识别跨区域通信的应用程序并予以配置。该公司还能够通过快速检测和缩短应用程序停机时间来延长正常运行时间。
每个日志记录包含两个 IP 地址之间的通信信息。然而,在像 Netflix 这样的动态环境中,IP 地址每天甚至是每分钟都会在应用程序之间浮动,IP 地址本身没有多大意义。“我们在采取这一举措之前拥有的数据源是单方面的。”Netflix 的高级软件工程师 John Bennett 说,“我们知道应用程序连接了其它应用程序,但是我们不知道对话的双方,以及如何优化这些通信或在网络上放置应用程序。”
Netflix 着手建立了一个新的数据源,通过将 VPC 流日志与应用程序元数据相结合,能够更深入地了解应用程序和区域之间的通信。
使用 Amazon Kinesis Data Streams 集中流日志
AWS 使 Netflix 从一开始就能尝试不同的方法来分析其网络数据。“在设计早期,能够尝试不同数据处理方法的灵活性非常重要。”Bennett 说,“为此,我们尝试了多种设计,使用了很多 AWS 产品。”
Netflix 最终部署的解决方案在内部被称为 Dredge,其使用 Amazon Kinesis Data Streams 集中流日志。应用程序实时读取来自 Amazon Kinesis Data Streams 的数据,并使用应用程序元数据丰富 IP 地址,以便全面了解网络环境。“我们通常将数据放入数据库,以便构建索引来实现更快速的查询。”Bennett 说,“Dredge 将流日志与应用程序元数据相结合,同时在不使用数据库的情况下,对其进行流式处理,并将其编入索引,从而显著降低了复杂性。”
经过丰富的数据位于称为 Druid 的开源分析应用程序中。Netflix 使用 Druid 的 OLAP 查询功能快速将数据切片到区域、可用区和时间段,从而将其可视化并深入了解网络的行为方式和运作方式。
AWS 是 Dredge 的合理选择,部分原因在于数据已驻留在 AWS 云中。“发布、串流和使用来自 Kafka 等外部系统的大量信息,这本来任务十分艰巨。”Bennett 说,“但就是因为用了 Amazon Kinesis Data Streams,我们只调用了几次 API ,就把数 TB 流日志集中到了 Amazon Kinesis Data Streams 中。我们现在可以把重心放在深入了解数据上,而不再需要操太多心在只是获取数据这个步骤上。”
由于 Netflix 中的网络使用具备灵活性和弹性,Amazon Kinesis Data Streams 的可扩展性非常适合 Dredge 应用程序。Bennett 说:“扩展和缩减我们的网络数据能够更经济高效,如果采用其它替代方案而不是 Amazon Kinesis Data Streams,就不会这么容易了。”
架构图

使用实时网络监控改善客户体验
Netflix 基于 Amazon Kinesis Data Streams 的解决方案,已被证实能够高度扩展,每天处理数十亿流量。通常,为了处理数据流,每次都有大约 1千个 Amazon Kinesis 分片并行操作。“Amazon Kinesis Data Streams 每天处理数 TB 的日志数据,但只需几秒钟,事件就能显示在我们的分析中。”Bennett 说,“我们能够实时发现并处理问题,确保高可用性和卓越的客户体验。”
Netflix 目前能够找到新方法来优化其应用程序,无论这意味着将应用程序从一个区域迁移到另一个区域,还是更换成更适合特定类型流量的网络协议。Bennett 说:“我们的解决方案基于 Amazon Kinesis 构建而成,这使我们得以找到多种方法,来提高效率、降低成本并改善恢复能力,从而打造最佳的客户体验。”
虽然串流数据解决方案对 IT 行业来说并不陌生,但在网络领域属于一种创新。“Netflix 在 AWS 中投入了大量资金,部分原因在于AWS 能将底层网络抽象化,所以我们不必处理交换机和路由器。”Bennett 说,“我们在更高级别的堆栈上进行监控、分析和优化,如果我们自行运行数据中心,根本考虑不到这一层的操作。”
关于 Netflix
Netflix 是世界领先的互联网电视网络,在逾 190 个国家/地区拥有超过 1 亿会员,他们每天观看 1.25 亿小时的电视节目和电影。
AWS 的优势
- 每天处理和丰富数 TB 数据,代表数十亿个事件,分析查询的响应时间不到 1 秒
- 与竞争对手的解决方案相比,成本效率更高
- 自由测试系统架构,以找到最有效的解决方案
- 只需调用几次 API,即可开始注入数据
- 近 1000 个 Amazon Kinesis 分片同时工作的高弹性解决方案
使用的 AWS 服务
Amazon Kinesis Data Streams
Amazon Kinesis Data Streams (KDS) 是一种可大规模扩展且持久的实时数据串流服务。