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