世界上哪家公司流量最大?
你脑海中出现的第一个是什么?
是Google 还是 Facebook,又或是 Amazon?
小A探出了头: 头条吧,抖音占用我了那么多时间
我想说,都不是!
而且,它已经20多岁了。
也许,这个答案让你有点怀疑,名字都没听过的公司,哪来这么大的流量?
不过,没关系, 名字没听过, 但它出品的美剧,你肯定看过。
对,就是这个,豆瓣高分美剧《纸牌屋》
所以,我也很好奇,Netflix究竟是一家什么样的公司?
公司成立,Netflix一开始只是一家 DVD 租赁公司,租金最初只需50美分一个,最长租赁期为7天,关键是提供免费递送。
这是最原始的网站,在网站推出了一个大约900个内容的视频库
Netflix的视频库已扩展到3100个内容,开始宣布其新的订阅模式。订阅计划最初的价格是15.95美元,允许Netflix会员每次可以租赁4部电影,不限归还日期。
Netflix视频库中的内容已经达到5200个,放弃了滞纳金和归还日期,转而采用每月19.95美元的订阅计划。
流媒体视频成主流,DVD被取而代之。Netflix推出在线流媒体服务Watch Now,该服务推出时有1000个内容,免费包含在每月5.99美元的实体DVD订阅计划中。
最终,Netflix慢慢进化成一家视频公司,提供每月7.99到11.99美元不等的订阅服务(subscription service),采用'All-you-can-eat'的单一模式,在全球拥有8100万subscribers,其中美国超过4600万。2016年初,Netflix刚刚实现了全球布局(Globalization),意味着在全球的任何一个角落,当然除了中国以及少数几个国家,你懂的,你都可以订阅Netflix服务,观看海量视频。
另外,这家占据了超过1/3的互联网下载的流量的公司,它的服务完全托管在AWS上面,没有自己的基础硬件设施,意味着只要AWS炸了,它也跪了。
所以,今天介绍Netflix公司,并非是因为它提供的视频有多好看,而是它牛逼的技术,以及在开源的贡献。
在开源界中,Netflix的贡献非常大,它的开源项目叫做Netflix OSS(a.k.a Open Source Software),在它自己的github主页,有下面这些开源项目
Common Runtime Services & Libraries(e.g. Eureka, Ribbon, Hystrix)
Big Data(e.g. Genie)
Build and Delivery Tools(e.g. Asgard/Spinnaker)
Data Persistence(e.g. EVCache)
Insight, Reliability and Performance(e.g. Simian Army)
所有开源项目都在github上都有project,并且可以fork,你可以通过这个link进行查看: https://github.com/Netflix
https://github.com/Netflix/Hystrix Star 18000+ 虽然现在已经不维护了,但曾经辉煌过。
Hystrix 供分布式系统使用,提供延迟和容错功能,隔离远程系统、访问和第三方程序库的访问点,防止级联失败,保证复杂的分布系统在面临不可避免的失败时,仍能有其弹性。
Netflix 称,在分布式环境中,不可避免会造成一些服务的失败。Hystrix 库旨在控制分布式服务中提供更大容限和服务失败之间的相互关系。Hystrix 通过隔离访问远程系统、服务和第三方库的点,阻止级联故障,从而使复杂的分布式系统更具弹性。
https://github.com/Netflix/falcor Star 9000+
Falcor 是高效的 JavaScript 数据抓取库。
falcor是介于客户端和服务端的数据中间件. 它把整个应用的域模型通过一个虚拟JSON对象表示,并抽象出get, set和call三种操作,使得应用程序可以用一种一致的方式读写域模型的数据,同时不用关注数据的来源。此外,falcor还提供了缓存、批量打包和去重的功能,从而减少了网络请求和往返的次数以及冗余数据的存储和传输.
https://github.com/Netflix/SimianArmy Star 7000+
Simian Army 是一个各种猴子猩猩组成的大部队,其中最有名的就是Chaos Monkey,就是制造混乱的猴子,就是下面这只既嚣张,又瘦弱的小猴子。
这个猴子用来干什么呢?它在所有服务的依赖中里,每次随机挑几个下游服务,直接把它搞挂掉,看看Netflix as a whole的输出结果是否还是符合预期的,当然这个过程中还需要依赖Hystrix。
我所做的项目中也有一堆类似的猴子。
https://github.com/Netflix/eureka Star 8000+
Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。
https://github.com/spinnaker/spinnaker Star 6000+
Spinnaker 是一个持续交付平台,它定位于将产品快速且持续的部署到多种云平台上。Spinnaker 主要特性:配置一次,随时运行;随地部署,集中化管理;开源。
https://github.com/Netflix/zuul Star 7000+
Zuul 提供动态路由,监控,弹性,安全等的边缘服务,相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门,可以适当的对多个 Amazon Auto Scaling Groups 进行路由请求。
优秀的项目,还有很多...
https://netflix.github.io/powered-by-netflix-oss.html
而实际上使用的公司比这些更多,只是没有被统计进去而已。
关于Netflix这家公司,其实还有很多东西可以去学习,包括商业模式、公司文化等等,但是这不在我们的技术范畴内,感兴趣的同学可以继续了解。
最近不久,Netflix的工程师出了一本书,叫 Chaos Engineering,即混沌工程。
粗看这个词,可能大部分人都了解什么意思。
其实,这是一个新的领域,混沌工程是一门新兴的技术学科,他的初衷是通过实验性的方法,让人们建立对于复杂分布式系统在生产中抵御突发事件能力的信心。
只要你有过在生产环境中实际运行过分布式系统的经历,你就应该清楚,各种不可预期的突发事件一定会发生。分布式系统天生包含大量的交互、依赖点,可以出错的地方数不胜数。硬盘故障、网络不通、流量激增压垮某些组件,我们可以一直列举下去。这都是每天要面临的常事儿,处理不好就会导致业务停滞,性能低下,或者是其他各种无法预期的异常行为。
【阿飞的博客】 公众号二维码
↓↓↓↓