Netflix是一家在线影片租赁提供商,该公司连续五次被评为顾客最满意的网站,在过去的7年中,Netflix流媒体服务从偶尔有数千用户在线观看发展到了数百万用户平均每月观看超过20亿个小时的规模。Netflix之所以能够如此成功,离不开对用户行为数据的收集与分析,那么Netflix会收集哪些数据,这些数据会用来做什么,其处理架构又是什么呢?
事实上,当用户开始在Netflix的网站上观看电影或者电视节目的时候,Netflix的数据系统会创建一个“观看会话(view)”,描述该会话的所有事件信息都会被收集起来。该观看会话数据架构能够应对从用户体验到数据分析的诸多场景,其中最主要的场景有三个:
用户看了哪些视频?系统需要知道每一个用户的所有观看历史,以便于为用户推荐相关的视频内容,同时在页面上的“最近观看”一栏中显示观看历史。用户所看的内容对于用户兴趣的衡量,产品和内容的决定非常重要。
用户从哪里离开了视频?对于每一个电影或者电视节目,Netflix会记录每一个用户都看到了哪里,从哪个时间点离开的。这使得Netflix的用户能够在同一个或者另一个设备上继续观看视频。
当前帐户现在还在观看哪些视频?家庭成员间的帐户共享使得任何人可以在任何时候观看自己喜欢的视频,但是这也意味着当帐户同时在线数超限的时候,必须要有人放弃观看。针对这种场景,Netflix的观看会话数据系统会收集每一个会话的周期性信号以便于决定某个成员是否还在观看相关视频。
这些场景的实现离不开强大而稳定的数据处理系统,Netflix目前的系统架构由早期的单数据库应用程序演变而来,当时的主要需求是能够低延迟地为用户提供视频服务,同时还能够处理来自于数百万Netflix流设备的快速增长的数据集。在过去3年多的时间里,Netflix一直在不断地改进该架构,现在这套系统每天能够处理千亿左右的事件。