51CTO專訪章文嵩博士:做系統要先了解業務的需求
原創【51CTO獨家專訪】中國Linux運維界的朋友們多半都知道章文嵩博士,因為他帶來的開源項目LVS,企業們不必采購昂貴的F5、思杰等商用負載均衡器,而是可以在開源的Linux服務器上構建自己的負載均衡和高可用集群。在今年剛剛結束的O'Reilly Velocity China 2011會議上,51CTO編輯有幸采訪到了目前就職淘寶的章文嵩博士,請他對淘寶這幾年核心系統優化團隊的工作,以及他個人所關注的方向進行了介紹。
嘉賓簡介
左為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:好的,本次采訪到此結束。感謝章文嵩博士接受我們的采訪!
【編輯推薦】