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