原文:A Design Analysis of Cloud-based Microservices Architecture at Netflix

数据

(至2019)
用户:167 million,新增 5 million/ seaseon
视频:4000+ movie;47000 TV series
停留:165 million hours
(学个词, 观众 叫 subscribers)

基础特性

基于共有云(AWS)的微服务架构
高可用,可扩展性的视频流系统

架构

系统:AWS cloud + 内部内容交付网络 open connect CDN
软件层:client + backend + CDN
多终端

backend包括:aws cloud的服务 + DB + storage

aws服务包括:

  • 可扩展计算实例(AWS EC2)
  • 可扩展存储(AWS S3)
  • 业务逻辑微服务(Netflix 专用框架)
  • 可扩展的分布式数据库(AWS DynamoDB、Cassandra)
  • 大数据处理和分析作业(AWS EMR、Hadoop、Spark、Flink、Kafka 和一些 Netflix 专用工具)
  • 视频处理和转码(Netflix 专用工具)

playback 架构

  1. netflix CDN的oca监控运行状态,包括负载状态、可用路由、可用视频,并发送报告给aws ec2上的cache control service
  2. client发送播放请求至aws ec2上的 nexflix play app service,获取video url
  3. 2的app service验证有效后允许观看。包括用户权限、政策许可等
  4. app service和同在aws ec2中的steering service对话,获取请求视频的合适的oca服务器list,并返回。合适是指,连接质量高、快且可靠。
  5. client从返回的list中测试连接质量,选best请求视频文件
  6. 选定的oca server接受client请求 开始流传输视频

后端

后端处理:注册、登录、计费,视频转码和个性化推荐……

client → LB → API Gateway → 各种api接口 → 微服务 → cache、DB、stream processing pipeline。stream processing 连aws s3和hadoop

组件

客户端

客户端 连两种,一个连内容发现,一个连内容播放

微服务

微服务可以独立工作,也能通过 REST 或 gRPC 调用其他微服务。
个微服务能拥有自己的数据存储和一些存放近期结果的内存缓存存储。
请求将被放入网络事件循环中,而来自其他被调用的微服务的结果将放入异步非阻塞 I/O 中的结果队列。

数据存储

MySQL 数据库用于电影标题管理和交易/下单目的。

Hadoop 用于基于用户日志的大数据处理。

ElasticSearch 为 Netflix 应用提供了标题搜索能力。

Cassandra 是基于列的分布式 NoSQL 数据存储,可处理大量读取请求,而没有单点故障。为了优化大规模写请求的延迟,Netflix 使用了 Cassandra,因为它具有最终的一致性能力。

流数据管道

kafka