Netflix:如何打造实时 Realtime ETL 平台?
Editor's Note
本文由 Netflix 高级软件工程师徐振中分享,内容包含有趣的案例、对开放式自助式实时数据平台的一些新愿景,以及对 Realtime ETL 基础平台的一些新思考。
The following article is from Flink 中文社区 Author 徐振中
产品背景
产品功能
挑战&解决方案
Tips:点击「阅读原文」可下载作者分享PPT及观看现场分享视频~
产品背景
一方面是通过数据整合知识来反馈并用于提高用户的产品体验中去;
另一方面通过建立一个技术驱动的 Studio 去帮助产出内容质量更高的产品。
从用户的角度来讲,Keystone 是一个完整的自容(Self-contained)的平台,支持多用户,用户可以通过所提供的 UI 很方便地声明并创建自己想要的 pipeline。
从平台角度来说,Keystone 提供底层所有分布式系统中实现比较困难的解决方案,如容器编排(Container Orchestration)、工作流管理(Workflow Management)等等,这些对于用户是不可见的。 从产品的角度来说,主要有两个功能,一个是帮助用户将数据从边缘设备移到数仓,另一个是帮助用户实时计算的功能。 从数字的角度来说,Keystone 在 Netflix 的使用是非常有必要的,只要跟数据打交道的开发者,一定会用到,因此 Keystone 在整个公司中有几千个用户,并有一百个 Kafka 的集群支持每天 10PB 数量级左右的数据。
产品功能
Recommendation & Personalization
推荐和个性化定制。该工作中可以根据个人特点的不同将同样的视频通过不同的形式推送给相应的用户,视频可以分为多个 row,每一个 row 可以是不同的分类,根据个人的喜好可以对不同的 row 进行更改。此外,每一个视频的题目都会有一个 artwork,不同国家、不同地域的不同用户对 artwork 的喜好也可能不同,也会通过算法进行计算并定制适合用户的 artwork。
A/B Testing。Netflix 提供给非会员用户 28 天免费的视频观看机会,同时也相信给用户看到了适合自己的视频,用户更有可能会购买 Netflix 的服务,而在进行A/B Testing 的时候,就需要 28 天才能做完。对于 Elliot 来讲,进行 A/B Testing 的时候可能会犯错误,他所关心的是怎么样才能在不用等到 28 天结束的时候就可以提前发现问题。
Content Production
Dual writes: 当开发者知道数据需要放到主要的数据库中的时候,同时也要放到另一个数据库中,可以很简单地选择分两次写入到数据库中,但是这种操作是不容错的,一旦发生错误,很有可能会导致数据的不一致;
Change Data Table: 需要数据库支持事务的概念,不管对数据库做什么操作,相应的变更会加到事务变更的 statement 中并存入单独的表中,之后可以查询该 change 表并获取相应的变更情况并同步到其他数据表;
Distributed Transaction:指的是分布式事务,在多数据环境中实现起来比较复杂。
挑战及解决方案
Ordering Semantics
Processing Contracts