專訪百度云首席架構師林仕鼎:如何突破瓶頸
原創【51CTO專訪】在今年的百度開發者大會上,百度云戰略高調發布,成為開發者們矚目的焦點。一直以來在公共領域很低調的百度移動·云事業部的首席架構師,也在當天以百度云首席架構師的身份站到了前臺。在他的博客上,他喜歡談談架構,談談安全,談談火車票訂購系統,談談OS的內核架構;在他的微博上,除了討論技術之外,也喜歡曬曬團隊,談談社會與生活。
他是林仕鼎,一位自稱“西二旗跨界架構師”的資深技術男。他的成長歷程是典型的研究學院派:
對于架構師的成長之路,林仕鼎先生有什么看法?近日,51CTO編輯對林仕鼎先生進行了一次采訪,討論這方面的話題。以下為采訪實錄:
51CTO:您最近的博客將架構分為三類:軟件架構,系統架構,以及大規模分布式架構。您個人從開始接觸架構設計到現在,對于這三類架構都有所研究。能具體講講一開始接觸架構設計的時候是怎樣的背景嗎?
林仕鼎:其實我對架構設計的看法主要還是源于項目經驗,做過的事情多了,于是開始總結和提煉。架構設計不是一個單獨的行為。它在系統設計和實現的過程中發生,或者在事后總結提煉生成。我覺得并不存在一個單純的、獨立的“架構設計”。
51CTO:您最初開始接觸計算機和編程是什么時候?為什么會喜歡上CPU設計和內核架構這個領域的?
林仕鼎:我從95年到02年都在北航6系,真正編程始于大二。大二上半年用C做了個跳棋小游戲,暑假時幫一個老師干活,做了個基于單片機的圖形化控制系統。這個控制系統大概用了一兩萬行的8051匯編代碼,在此過程中我隱隱約約地悟出了資源管理、函數調用和模塊封裝等理念。雖然以今天的眼光來看,這些經驗都很粗糙,但奠定了我做底層系統的基礎,也從此喜歡上了這一領域。后來在本科階段做的工作也主要與網絡通信和并行程序相關,在讀研時因緣巧合加入了實驗室的OS小組。
51CTO:當時學習OS Kernel主要是通過閱讀論文嗎?在這種深層次的領域,有沒有覺得有時候特別難懂,好像自己的成長陷入一個瓶頸,特別煩躁的情況?
林仕鼎:我當時主要通過閱讀Linux kernel源碼和CPU (i386, SPARC) 手冊來學OS kernel的。半年多的時間,一些關鍵代碼基本是一行一行研究的。在那個階段,總是有新的東西可學,覺得每天都在進步,一直都很興奮。我的看法是Linux kernel(或者Unix-like kernel)的最關鍵之處在于進程的創建、調度和切換,當時在把0號和1號進程搞清楚之后,真的是手舞足蹈興奮不已。有幾天覺得最復雜的程序都研究清楚了,也不過如此,甚至產生了“身登絕頂我為峰”的幻象。不過這個幻象很快就被打破了,因為有人問了我一個問題,我啞口無言。這個問題是“Linux kernel有什么缺點?如果你自己設計,會怎么改進?”后來,我開始閱讀一些關于OS架構的論文,這些論文為我打開了一扇進入系統領域的大門。
在我身上,比較少有陷入瓶頸的情況,一般我都在不停地迎接新的挑戰,這可能也跟我的經歷有關。
51CTO:對于突破瓶頸,您個人有什么經驗分享嗎?有沒有和導師、師兄弟們交流過這方面的事情?
林仕鼎:不同階段工程師的瓶頸是不同的,有些人需要多寫點程序,而有些人卻需要從程序中跳出來。對于需要從程序中跳出來的人,我的百度空間里有篇文章,可供一讀:《架構相關領域的學習材料》。
另外對于架構師的成長,我也有張圖,總結了我個人的經驗:
簡言之,通過寫code和辛勤工作深刻理解how,通過閱讀和思考逐漸體會到why,二者需要持續迭代不斷升華。通常工作中得到的只是experience,思考后才會變成自己的skill;而閱讀中得到的一般也只是information,使用后加深理解才會變成knowledge;把skill和knowledge結合起來,才會真正形成自己的expertise。于此,才有可能具備前瞻性,知道what to do next。
51CTO:后來接觸分布式系統又是從什么時候開始的?您提到大規模分布式架構的重點是資源整合、快速交付和運維問題,而系統架構的重點是資源的分配與復用,這當中的異同具體表現在哪些方面?
林仕鼎:2002年畢業后,我加入微軟研究院的系統研究組,主要研究大規模分布式系統和高性能系統架構。這段時間的主要工作是問題域研究、系統設計和原型實現,真正做出實際系統是在我到百度工作之后。
分布式架構和系統架構是兩個維度的技術。從規模上來看,分布式架構通常關注的是機群或IDC,而系統架構則是單機。從目標上來看,分布式架構主要保證availability,而系統架構提供performance。在一個實際系統中,通常這兩個維度的技術都會有所體現。
對于這幾個類型的架構劃分,都是純粹的個人觀點,不一定是成熟的或業界公認的。我的習慣是,先把一些復雜的問題解耦、分離成獨立的子課題,這樣比較容易找到切入點和理解問題域,然后再把不同維度的技術結合,針對具體問題和環境做出不同的折中考慮,最后形成最終解決方案。
51CTO:現在百度移動、云計算這塊,您目前主要關注的方向是什么?
林仕鼎:我當前的主要工作是把面向數據處理的云計算平臺、面向網絡服務的應用引擎以及面向網頁的瀏覽器平臺結合,形成一個更具有普適性意義的OS平臺,供WebApp運行。
現在有幾個大的技術浪潮,移動、云計算、大數據以及物聯網。在我看來,移動和物聯網提供的是interaction和connectivity,云計算提供的是處理能力,而大數據產生智能。我們的工作就是整合這些能力,使其變得普適化,使App可以更方便地使用。然后App做什么呢?我的看法是用來program web。Web上有足夠的data和services,App可以更智能地把這些能力都串聯起來,更好滿足用戶需求,提供更自然的交互方式。
這些技術與互聯網的結合,將開啟一個全新的時代,我認為這就是繼PC和互聯網之后的云的時代。這也是百度云戰略的發展目標。
51CTO:之前看您提到過百度的綠色數據中心計劃,這方面目前的進展如何?有沒有計劃跟其他同行,比如淘寶的工程師團隊進行合作?
林仕鼎:我們的綠色數據中心計劃包括三個方面:IDC、服務器和新硬件。
IDC方面,我們自行設計的M1數據中心已經運營半年多了,除了常規的直流供電和新風制冷等技術,我們還設計了冷熱風道隔離和智能調節,當前的成果是夏季平均PUE是1.4左右,冬季大約1.1,這應該是國內的領先水平了。
服務器方面,我們正在設計整體機架式服務器以及基于ARM的低功耗高密度服務器。新硬件則包括自行設計的SSD、FPGA卡等。
這些設計我們都會逐步開放,也很歡迎其他同行采用我們的做法或共同研發。
51CTO:最后一個問題有關新人的培養。您現在招聘工程師主要看中哪些方面?有沒有什么可以快速招到(或者定位到)合適的人的經驗可以分享?
林仕鼎:就我個人而言,我最看重的是工程師的抽象能力和對問題變化的敏感性。很多年來,對于新人我只用一道面試題,很簡單的數據結構建模,然后變化一些條件,看他的處理方案。
51CTO:好的,問題到此結束。感謝林仕鼎先生接受我們的采訪!