视频巨头NetFlix云存储使用亚马逊的公有云,两者形成公有云生态环节,互相促进,亚马逊将在Netflix成功方案推广给其他客户服务,Netflix则通过每晚占据全美60%网络下载量的巨大流量检验亚马逊云平台。
Netflix几个功能块
分发 CDN
存储 包括内存存储和磁盘存储
消息 效率协调。
计算 包括同步计算和异步并发计算
支付 各种支付接口
分析 数据挖掘分析
Netflix遭遇关系数据库瓶颈:
- 内容 用户资料 产品模型等等都有存储,防止当机丢失。随着用户规模扩大,用户写入数据巨大,需要巨量存储
- 传统的集中式关系数据库无法水平扩展,分布分区能力很差。
- 一旦表结构改变,导致停机重启。
Netflix视频数据模型特点:
- 用户资料 AAA
多种格式媒体描述,flv MP4
本地差异化内容
中心统一推送内容
用户本地触发内容
特点:数据的主键比较容易获得。主要是用户主键和视频主键。
需要解决巨量登录Session
- 用户登录后,必须在服务器保留Session,以确认其已经登录。
Session数据在服务器间复制,效率差,影响服务器处理正向处理能力
过去使用负载平衡器将用户发往其Session创建后的服务器,负载实际不均衡。
容易导致集中式过程编程,一个服务干很多事情
云存储Session
- Cassandra保存Session,易于修改。
跟踪终端用户每次操作事件,记录在Session中,可作为其回放缓存。
Cassandra前端再添加memcached,提高Seesion快速就近读取能力。
最前端通过负载平衡球进行请求级别的分发。
迁移到健壮的协议
- 云服务协议:REST + JSON
支持单个请求包含复杂的数据类型。
- Apache Avro:数据序列化更加快速,适合在http上更快交换数据。
- REST结合OAuth
NetFlix持久化方案
- 将Avro保存在memcached。包括定义
节省空间,降低延迟(zigzag编码减少一半)
- Avro能够使用JSon表达,由POJO产生。但是比较难,需要专门工具。
SQS消息中间件
- 消息异步中间件,提供异步分布式处理能力。
- 事件监听模式。发布者-订阅者。类似JMS,有Topic和Queue两种。
- 可实现cron类型 繁重 巨大计算任务。
消息在视频制作流程应用
异步后弹性易于扩展
消息的订阅提醒服务
Amzon EC2
- 弹性 多租户系统,可评估内存和CPU。
底层使用IAAS虚拟化
Eucalyptus, OpenNebula, OpenStack, OpenQRM, XenServer, Oracle VM, CloudStack, ConVirt 比较
Map/reduce计算开源工具:GridGain;GigaSpace 和Hadoop。
Netflix重点自己整合运维监视管理工具
Netflix的监视界面AppDynamics
性能线程实时监视和评估
建立大规模的真实世界推荐系统Building Large-scale Real-world Recommender Systems – Recsys2012 tutorial
解剖了Netflix的个性化特点(“一切都是个性化”),在这篇PPT中谈了Netflix的数据模型(包括物流/线性回归,弹性网,矩阵分解和马尔可夫链),消费数据科学(用户离线和在线测试),