【51CTO专稿】在北美的视频流网站当中,Netflix可以说是当红炸子鸡之一。1997年开始运作的Netflix在最开始的几年一直以一种传统的方式运作一个在线的视频DVD租赁服务,后来着重发展基于用户影评的推荐算法,从2008年开始着重发展在线视频流的业务;从2009年开始,Netflix决心投入大量精力到移动互联网大潮中,研发了iOS、Android、任天堂3DS、Nook等终端的客户端。到2011年,Netflix的视频流量已经占据北美web总流量的24%以上,排名第一。
在2012年4月的QCon大会上,笔者遇到了Netflix的高级软件工程师Jason Brown先生,从他那里听说了不少有趣的事情。Jason刚从QCon东京会场过来北京,分享的话题分别有关Amazon EC2和Cassandra在Netflix当中的应用。Netflix从2008年开始往Amazon EC2上迁移,就目前来看,说它是EC2的最大客户可能也不为过。因此Netflix在使用公共云方面的经验,对其他正在考虑云计算的企业而言应该会有不少可以借鉴之处。
Jason Brown简介:Netflix高级软件工程师,1999年在Ball State University获得音乐硕士,之后开始接触软件分发工作,并逐渐发展为一名程序员。在加入Netflix之前,Jason曾在北美棒球联盟传媒任职架构师。
Jason加入Netflix是在2008年。在那一年之前,Netflix的业务主要运行在自己的数据中心当中,用IBM的高性能硬件搭配Oracle数据库作为底层架构。在那一年秋季的某一天——也就是Jason去Netflix面试前后的某一天——Netflix的服务挂掉了,具体是因为流量暴增还是因为单点故障倒是不清楚。总之,Netflix在2008年决定往Amazon EC2上迁移,成本只是其中一方面的考虑。
“可扩展性很重要啊。除了Amazon EC2之外,还有谁能够提供在1小时内增加1000个节点的能力?”Jason这样介绍到。
“那如果不是在2008年,而是在现在做这个决定呢?你们仍然会选择Amazon EC2这样的公共云平台,而不会考虑像Zynga那样,搞个自己的私有云?”
“哦,我想我们目前不会打算回到自建数据中心的方案的。”Jason对数据中心的解决方案表示不置可否。“Zynga有他们的考虑。我有朋友就在zCloud工作,他们那边的说法是自建私有云比使用Amazon EC2便宜,可能对他们来说真是这样吧。不过对我们来说,还是刚才我说的那样,能在1小时内增加1000个节点的可伸缩性,目前只有EC2能满足我们的需求。而OpenStack这方面的东西,我也偶尔看看,这项技术感觉目前还在幼年期,不适合用在一个线上的业务当中。”
Netflix现在有700多名员工,其中大部分是工程师。Jason所在的Cassandra集群团队主要由软件工程师组成,还有三个dev-ops。
“您提到团队中有3个dev-ops,也就是传统上负责系统管理运维的工种。他们的工作主要包括哪些内容?”
“我们的dev-ops会写很多脚本,让各种工作变得自动化。”Jason介绍到。“点一下就做好环境搭建,点一下就做好配置,很多这样点一下就完成的实现。其中很重要的一部分是跟监控相关的,我们想知道我们的Cassandra集群的运行状态,每个节点的负载如何等等细节。”
“那总的来说,云计算下的运维工程师和传统数据中心里面的运维工程师有何不同?”
“哦,在数据中心里面可是很无聊的。要加台服务器?先填写个工单;要上线个服务?先填写个工单;要调试一下配置?先填写个工单……工单然后审批,通过后再执行,很多这样繁琐的行政流程占据了工程师的时间。而在EC2上就很方便了,需求提交过来,也就是点两下鼠标的工作。”
“刚才您提到写脚本监控Cassandra集群,也就是说目前还没有成熟的用来监控Cassandra的系统吗?”
“没,基本上都是我们自己实现的。”Jason向笔者介绍了Netfilx的一些开源项目(目前都公开在Github平台上 https://github.com/Netflix),以及最近将要开源的一套“猴子”工具。“猴子工具针对EC2平台,其中包含几个子项目:有一个Chaos Monkey(混乱的猴子)专门在集群中随即杀死虚拟机,以确保系统在部分节点故障时仍然可以正常运行;有一个Security Monky(安全的猴子),可以自动检查系统中存在的漏洞;还有一个Janitor Monkey(看门人猴子),可以自动发现系统中的闲置资源并将其关闭。这套工具是各个团队通用的,会在未来几个月内开源。”
“那么针对AB测试,你们也有专门的工具吗?”Jason负责的是AB测试这一块,他在QCon上的话题也是有关AB测试系统的,所以笔者单独询问了一下。
“当然有了。AB测试有很多部分是专门针对Netflix的业务的,比如给用户展示不同的界面,不同界面下的数据统计等等,当然这些肯定是不会开源的。一些通用的工具,未来倒是可能会逐渐都放到Github上面。”
Jason在QCon的分享上倒是透露了一些其他的情况,那就是Netflix目前正在联系Amazon EC2之外的服务提供商来处理容灾备份和恢复(他们目前使用的是Amazon的S3存储),但具体是哪家,他现在还不便透露。随着Netflix对集群性能的要求日益增高,Jason也开始学习一些Linux内核级别的知识。对于大规模网站架构的工程师而言,往高处和深处走是必然的趋势;尤其在云计算普及之后,工程师有更多的时间精力可以放在业务本身,这相比上个世纪的工程师们是极大的优势。