Netflix是怎样运行的(极度简化版)— 每次点击播放按钮背后的复杂东西
Netflix是怎样运行的(极度简化版)— 每次点击播放按钮背后的复杂东西
本文摘译自 How Netflix works: the (hugely simplified) complex stuff that happens every time you hit Play
本文并未讲到任何实现细节,只是概略的描述了一些基础架构。
规模
每日2.5亿小时的视频播放。
来自190个国家的0.98亿付费用户。
微服务
文章举例讲了一下微服务的好处,道理大家都懂。Netflix花了大约10年单服务应用重写成了微服务架构,估计大约又700个微服务分别负责了Netflix的各种功能。
百级的微服务
千级的日常生产变更
万级的实例数
十万级每分钟的用户交互
百万级的用户数量
百亿级的度量标准(采集点?)
千亿级小时的流视频
十级的运维工程师
最后说的数十名的运维工程师,数量可以说是非常少了,应该是得益于DevOPS和云服务。
AWS
尽管和Amazon的Prime Video存在竞争关系,Netflix依然是AWS的重度用户。不再自行维护硬件而是把服务挪到云上。并且拿苹果和三星的合作关系来说明这种君子协定是种巨大的双赢。
版权
对于非Netflix自制剧,都需要去谈判播放权,并且会受到不少限制。同时在分发层面,也可能会签署一些排他协议导致延迟上映或者不能上映。举例来说,纸牌屋的第五季在中东地区相对其他150多个国家,延迟了整整一个月。
转换
为了可以满足不同的设备,不同的网络,不同的屏幕尺寸,不同的音频格式;高质量的原画会被转码成很多的格式。
CDN
为了减少延迟,Netflix使用了CDN。早期的时候使用了多种CDN网络,比如Akamai, Level 3 和 Limelight Networks 去分发他们的内容。后来随着用户的增长,意味着他们必须在更多的位置分发内容,同时成本更低;所以他们构建了自己的被称为Open Connect的CDN网络。
当点击播放按钮的时候,Netflix会定位到10个最近的Open Connect设备,并且判断出其中最快的一个。这也是为什么视频开始的时候模糊,但是突然变得清晰 — Netflix切换服务器直到连接上提供最好视频质量的那个。
Netflix是怎样运行的(极度简化版)— 每次点击播放按钮背后的复杂东西的更多相关文章
- <a>每次点击都会让浏览器重新打开一个窗口问题
<a> 标签的 target 属性规定在何处打开链接文档.如果在一个 <a> 标签内包含一个 target 属性,浏览器将会载入和显示用这个标签的 href 属性命名的.名称与 ...
- vue 项目, 通知子组件更新,父组件中每次点击按钮重新加载子组件,(重新生成dom 元素)
vue是组件化开发的项目,很多情况下会把公共组件提取出来,来减少代码量,提高开发效率,和以后更好的可维护性.很多情况下,父组件中都会引用子组件这种情况.通过给在父组件中引用的子组件标签上添加属性,来渲 ...
- 页面上有3个输入框:分别为max,min,num;三个按钮:分别为生成,排序,去重;在输入框输入三个数字后,先点击生成按钮,生成一个数组长度为num,值为max到min之间的随机整数点击排序,对当前数组进行排序,点击去重,对当前数组进行去重。 每次点击之后使结果显示在控制台
<!DOCTYPE html> <html> <head> <!-- 页面上有3个输入框:分别为max,min,num:三个按钮:分别为生成,排序,去重: 在 ...
- jqgrid 不能选中行, 每次点击单元格都自动选中第一行
最使用jqgrid表格插件写了一个功能.功能完成后显示一切正常,但是经过测试后发现,每次点击数据行时,都会自动选中第一行,无法选中其他数据行.经过一番探索,最终发现是加载进来的字段没有主键导致了这个问 ...
- click 事件 arguments.callee 每次点击自动* 2
今天在测试JQUERY(版本3.0,向下兼容3.0)时发现一个很特别的现象,代码如下: $($('button').get(4)).click(function(){ alert($(this).ht ...
- 每次点击按钮后,判断页面是否已经有该行,没有弹出repeater的一行,并给他赋一个这行附值,没有则跳出
protected void btnAdd_click(object sender, EventArgs e) { try { //记录第几次追加 pressCount++; typeString.A ...
- robot framework程序运行过程中,遇到点击事件之后,未出现点击之后的效果(求解)
1.click Element操作,在实际过程中偶然会出现,日志显示已点击成功,但是实际自动化页面,没有点击成功之后的操作 现象: 现象描述:程序执行到点击侧边栏的[人员信息]之后,日志显示已经点击成 ...
- java代码对按钮进行监听---------------打印出每次点击按钮的次数
其实,我真不会写嗯? package com.a.b; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; ...
- 给页面上所有的a标签增加随机数每次点击保证最新
$(document).click(function(){ $("a").each(function(){ if($(this).parent().parent().hasClas ...
随机推荐
- DOS批处理高级教程(还不错)(转)
前言 目录 第二节 常用特殊符号 1.@ 命令行回显屏蔽符 2.% 批处理变量引导符 3.> 输出重定向符 4.>> 输出重定向符 ...
- [原创]基于Zynq AXI-Bram Standalone & Linux 例程
基于Zynq AXI-Bram Standalone & Linux 例程 待添加完善中
- form组件
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['hobby'].choices ...
- Redis 数据结构之dict
上篇文章<Redis数据结构概述>中,了解了常用数据结构.我们知道Redis以高效的方式实现了多种数据结构,因此把Redis看做为数据结构服务器也未尝不可.研究Redis的数据结构和正确. ...
- 辅助排序和Mapreduce整体流程
一.辅助排序 需求:先有一个订单数据文件,包含了订单id.商品id.商品价格,要求将订单id正序,商品价格倒序,且生成结果文件个数为订单id的数量,每个结果文件中只要一条该订单最贵商品的数据. 思路: ...
- 微信小程序--家庭记账本开发--05
界面跳转 在微信小程序中,按钮也是<button></button>标签,它是通过bindtap属性来绑定点击事件: <view class="usermott ...
- C# SortedDictionary以及SortedList的浅谈
msdn叙述:The SortedDictionary<TKey, TValue> generic class is a binary search tree with O(log n) ...
- 树莓派开启samba服务
安装samba 和 samba-common-bin 启动树莓派以后,在命令行输入: sudo apt-get update sudo apt-get install samba samba-comm ...
- [jzoj]4216.【NOIP2015模拟9.12】平方和
Link https://jzoj.net/senior/#main/show/4216 Description 给出一个N个整数构成的序列,有M次操作,每次操作有一下三种: ①Insert Y X, ...
- harpoxy 配置
HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理. HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保 ...