【51CTO独家专访】中国Linux运维界的朋友们多半都知道章文嵩博士,因为他带来的开源项目LVS,企业们不必采购昂贵的F5、思杰等商用负载均衡器,而是可以在开源的Linux服务器上构建自己的负载均衡和高可用集群。在今年刚刚结束的O'Reilly Velocity China 2011会议上,51CTO编辑有幸采访到了目前就职淘宝的章文嵩博士,请他对淘宝这几年核心系统优化团队的工作,以及他个人所关注的方向进行了介绍。
嘉宾简介
章文嵩博士是淘宝网的高级研究员,主要负责基础核心软件研发、推进网络软硬件方面的性能优化、搭建下一代高可扩展低碳低成本的淘宝电子商务基础设施。他也是Linux内核的开发者,著名的Linux集群项目 —— LVS (Linux Virtual Server)的创始人和主要开发人员,LVS集群代码已在Linux 2.4和2.6的官方内核中,并得到广泛的应用。在架构大型系统、系统软件开发、Linux操作系统、网络和软件开发管理上有着丰富的经验。他一直在自由软件的开发上花费时间,并积极推动开源活动在中国的发展。
51CTO:您到淘宝两年多来,一开始主要是LVS和HAproxy的大规模普及,之后做了很多CDN系统的改良工作,今年又推出GreenCompute项目。能介绍一下这几年工作的整体规划思路吗?
章文嵩:优化其实是个一直持续的工作。最早,淘宝的CDN用的是商用的调度负载均衡器Citrix NetScaler,这是当时业界最好的负载均衡器。但是淘宝因为规模越来越大,容量也很大,有很多针对小图片方面的需求,用Citrix就遇到很多问题。比如流量方面,小图片造成的请求特别多,但是万兆网卡的流量只能到3G,一旦流量超过3G,哪怕只是到了4G,系统就会崩溃。这不仅是前面的负载均衡,在后端的缓存服务器上也是。在CDN系统中,图片处理的挑战最大,相比视频那种连续的数据,图片这种很小的、比较离散的数据,对硬盘的访问要求很高。淘宝在2008年底到2009年初左右,曾经一度全用SSD,这样下来一个CDN的节点造价就会比较高,要花掉两百万左右的钱,还要再加上商用的负载均衡器。而且刚才也说了,一个NetScaler流量只能提供到3G,两台加起来也就只有6G,而且两个NetScaler还不敢用心跳线,因为它虽然支持这个功能,但是万一有一台坏掉,6G的流量完全转移到另一台,那结果肯定会崩溃掉。所以这就是商用系统的问题:在特别的负载情况下,它是不适用的。
所以我们就开始逐步改造。用LVS+HAproxy,在硬件高配的情况下,一个节点跑到100G都没问题。成本方面,后端肯定不能无限制的花钱,我们就开始用混合存储,SATA、SAS和SSD都有。经过优化之后,效果做到跟SSD差不多,存储空间更大,命中率更高,像我们现在有些高的,命中率可以做到98%。那么现在我们一个最低标准的CDN节点,流量在10G,成本已经优化到50万;如果低功耗的话,还可以进一步优化到37万。这个项目我们以后还会持续优化,因为优化无止尽嘛,我们追求的目标是更好的用户体验,更短的响应时间,同时还要花更少的钱。
响应时间是我们最关注的指标,因为它直接影响到用户的体验。其实淘宝目前在图片的优化方面做得算还不错,好比今年双十一的时候,我们最高跑到了820G的瞬间流量,这在世界上可能也是一个记录了。其实你现在打开一个淘宝的网页,图片加载的速度已经挺快了,目前我们图片请求的平均响应时间已经在10ms以下;但我们还会进一步挖掘,看能不能到9ms以下或8ms以下,让它加载的更快。虽然说,越往下面挖掘,难度会越来越大,但是这也是值得去做的,因为我们的规模很大。而且为了让用户体验好,我们多花点钱也是应该的。
另一方面,网络传输这一块也往往是瓶颈。一个图片请求发过来,硬盘的处理时间算10ms,但是在网络传输方面,CDN部署的好的情况,可能会占用20ms,万一网络有问题的时候就可能到70、80ms。所以网络协议的优化方面,可以挖掘的空间可能会更大一些。
51CTO:顺便问一句,现在淘宝是完全用自己的CDN吗?
章文嵩:现在我们绝大部分都是用自己的CDN,因为没有一家CDN公司能够承受我们那么大的流量。而且这里面还有个规模效应,自己做,可以做的更加深入。应该说CDN这方面,我们目前的技术是领先的。当然,也不排除有时在进行促销活动的时候,如果用户流量超过了我们的承载能力,那个时候也有可能会采用外部的CDN服务来缓冲一下。
51CTO:您这次在Velocity大会上主要讲的是GreenCompute的项目。这个项目是完全自己做的,还是通过借鉴一些案例来做呢?
章文嵩:GreenCompute项目是绿色计算嘛,我们最早做的项目就是低功耗服务器。
2008年的时候,我自己在做一个ARM下载盒的项目,400MHz,装的Linux系统,空闲时候的功耗只有1W,接外部大容量硬盘的情况,满负荷跑起来也就是9W。当时做这个的时候,因为考虑到互联网上的很多应用都是数据密集型的,这些应用主要的任务都是硬盘读写和网络传输,实际的计算并不复杂,用不到多少CPU资源。相比一个高性能的服务器放在那里跑,空闲情况都有200W的功耗, 这种应用用低功耗服务器来跑是非常划算的。而低功耗服务器方面,选择不同的处理器,功耗和效果都会有所不同,主要考虑的是一个平衡点的问题,跟你的应用性质有很密切的关系。
国外大学对这方面的研究蛮多的。2009年5月份,HotOS(美国一个操作系统热点主题的会议)上有一个CMU(卡内基梅隆大学)的同仁做的一个FAWN Cluster,他就是拿AMD那个500MHz的Geode处理器,加上我们照相机用的那种4G的CF卡,加上256MB的内存,这样下来一片的整体功耗只有不到4W,这个在当时MIT的Technology Review上报道过。另外,美国加州大学圣地亚哥分校(UCSD)也有对Gordan架构的研究,那个是用Atom处理器做的低功耗服务器。每一家设计的都是针对自己独特的应用,效果都不错,对我们业界来说是很好的参考。
2009年底,我们立项要做低功耗的项目,选择了当时我们掌控的比较好的CDN系统。CDN因为对数据的安全性要求不是太高,毕竟上面都是缓存,数据丢了就丢了,全局系统可以随时把坏掉的节点切走,对用户的影响低,所以这个低功耗服务器就专门针对CDN应用进行定制。这中间经历了很多事情,整个过程并不很顺利,最终成功弄出来,也要感谢很多参与的厂商,像威盛,Intel,还有超微。总之我们最终还是把这个基于Atom的服务器用起来了,而且性能优化效果目前跟其他的Intel处理器相比,效果是最好的。
低功耗服务器做出来之后,我们希望在业界有更多应用,因为绿色环保嘛,所以就把这个项目开源出来。刚才你不是提到Facebook的OpenCompute项目吗,这个项目在低功耗方面的内容其实是比较缺的。我们跟他们开过电话会议,看是否能够将我们的这些规格、CDN应用的测试数据等文档都放到OpenCompute项目里面去,不过因为种种原因,一直没有落实。后来我们就想,其实可以自己建一个绿色计算的网站greencompute.org,这样自由度更大一点。当然这个以后也是可以跟OpenCompute合作的,我们的文档放他们那边或者做个链接过来,我们这边也介绍OpenCompute项目,这些未来可能性都存在。
其实低功耗服务器在整个绿色计算里面只是一个小环节,服务器还包含高性能服务器,服务器之外还有网络设备,机架,直流供电的电源,到整个数据中心的设计,都应该是绿色计算的范畴。而且我们现在定制的只是一款Atom D525的机器,实际上低功耗也可以有很多款机器的。所以现在我们做的只是其中很小的一部分,分享出来,也是希望大家都能参与进来,尤其是也在关注绿色数据中心的互联网企业。如果大家都能参与进来,对业界会是一个很好的促进。我们现在跟业界同仁已经在联系这方面的事情,目前正在进展中。
51CTO:希望GreenCompute能够成为国内的一个标准吗?
章文嵩:其实这个也没有国内国外的差别,我们这个低功耗的项目也有英文的文档,无论是国内还是国外的同仁拿去借鉴参考,我们都很高兴。找国内的同仁们主要是在语言交流方面的成本比较低,会更容易做一些,其实本身这个项目是没有任何国界的。
51CTO:您对底层系统工程师有什么建议吗?比如未来三年需要掌握哪些技术之类的。
章文嵩:说实话,我没有那么好的预见性啦。我自己觉得,做系统,或者做基础架构设计,最重要的是先去了解业务的需求。整体的需求是怎么样?访问的特点是怎么样?很多时候要去做取舍。我们设计架构的,或者设计系统的,或者哪怕是优化,很多时候都是做取舍的过程。对这个应用来说,什么是最重要的?我要抓住最重要的,而那些不太重要的,我就简单的做,或者不怎么做。把最主要的抓住,就能够针对每一个应用把性能做到极致。尤其是规模特别大的系统,哪怕我性能只是优化了1%,那么对于1万台机器的环境,这就意味着可以节约100台。规模足够大的环境,这种优化值得去很深入的做。你的规模有多大,决定了你的研发成本是否值得——这个过程本身也是要做取舍的。
我在大二的时候,帮老师写过一个Huffman压缩算法,当时就觉得,这个Huffman压缩算法真棒啊,它把高频度的用很短的字节表示,出现频度低的就用较长的字节表示。它这个比以往的要优化很多,当时就给我很大的触动。其实我们在生活上也是一样的:什么是最重要的,我就会花最大的力气去解决。
所以在我看来,不存在放之四海皆准的事情。通用的方案在性能上一定会有损耗,而规模越大,越需要深入的做下去。
51CTO:所以对工程师而言,了解需求,发现问题才是最重要的,至于要学什么技术都是之后要考虑的事情啦?
章文嵩:是的。因为围绕一个问题去做,这种学习是比较高效的。碰到问题我要去解决问题,在这个过程中不断的学习,会成长的很快。
51CTO:那您能谈谈自己这一年个人发展的情况和感悟吗?
章文嵩:我个人发展啊?因为我们是做底层基础平台的建设吗,追求的目标其实有很简单的指标摆在那里的。首先是稳定性:4个9,5个9,或者更高?然后是性能:性能是否有更大的优化空间?再就是成本:成本是不是可以更低?几个维度的指标都在那里,我们要做的其实就是不断的优化。
有新的技术出来我们当然也很关注,好比我们很早就在研究PCIe的Flash Card,它在非易失性存储当中是最快的,比SATA接口的SSD还要快10倍。对新的硬件,新的架构和技术,我们是一直不断在学习的。
手机方面,我们也会研究如何能让手机平台的用户访问的更快,需要在后台做什么支撑,比如JS打包在Server端做掉,针对容易丢包的手机无线网络,我们在网络协议方面是否能做一些工作,这些我们也一直在关注的。
51CTO:好的,本次采访到此结束。感谢章文嵩博士接受我们的采访!