3月23日上午消息,2012百度開發(fā)者大會(huì)今日召開。百度首席架構(gòu)師林仕鼎從技術(shù)層面對(duì)百度云的技術(shù)框架與愿景進(jìn)行了全方位的解讀。新浪科技全程直播該會(huì)議。
以下為演講實(shí)錄:
主持人:感謝百度技術(shù)副總裁王勁精采的演講,接下來有請(qǐng)百度云首席架構(gòu)師林仕鼎先生做分享。有請(qǐng)!
百度首席架構(gòu)師林仕鼎:大家好,剛剛Robin闡述了我們的百度云戰(zhàn)略的愿景,作為云戰(zhàn)略的工程師角度來講,可以分享我們的理想和夢(mèng)想。
我們先從百度云計(jì)算的技術(shù)開始說起。搜索引擎是云計(jì)算技術(shù)最典型的應(yīng)用,我們?cè)谑畮啄曜鲩_發(fā)引擎的過程中,也積累了一套云計(jì)算的技術(shù)。這個(gè)技術(shù)就是以數(shù)據(jù)中心、網(wǎng)絡(luò)、服務(wù)器硬件的架構(gòu),加上大規(guī)模數(shù)據(jù)存儲(chǔ)和處理為代表的軟件基礎(chǔ)架構(gòu)。我們?cè)谲浻布幕A(chǔ)架構(gòu)上搭建一層數(shù)據(jù)挖掘分析與新興的算法,以及數(shù)據(jù)倉庫等智能的算法。我們把軟件的基礎(chǔ)架構(gòu)和數(shù)據(jù)智能通常叫做大數(shù)據(jù)的集成。軟硬件的基礎(chǔ)架構(gòu)我們起一個(gè)名字叫數(shù)據(jù)中心的計(jì)算。
這樣的云計(jì)算技術(shù)對(duì)于百度的產(chǎn)品,我們叫做一種推動(dòng)作用,更準(zhǔn)確的來說,就是以前不能做的事情現(xiàn)在能做了,以前能做的事情現(xiàn)在可以做得更好。大家很清楚,我們互聯(lián)網(wǎng)業(yè)務(wù)是成功發(fā)展的狀態(tài)。很多時(shí)候有很多新的業(yè)務(wù)要發(fā)展,但是受限于技術(shù),其實(shí)不能用業(yè)務(wù)來推動(dòng)公司的發(fā)展,因?yàn)榛A(chǔ)架構(gòu)的構(gòu)建非常重要。大家在業(yè)內(nèi)開玩笑說,是由你的痛苦來驅(qū)動(dòng)公司的發(fā)展,遇到問題再去改,這樣的速度很慢。有了云計(jì)算以后,我們可以改變這樣的情況,由系統(tǒng)架構(gòu)驅(qū)動(dòng)這個(gè)業(yè)務(wù)發(fā)展。 甚至我們可以通過數(shù)據(jù)分析的方法,用數(shù)據(jù)驅(qū)動(dòng)這個(gè)公司的業(yè)務(wù)發(fā)展。這是我們對(duì)云計(jì)算技術(shù)的認(rèn)識(shí)。
云計(jì)算在百度已經(jīng)做了很多年了,只不過以前這些技術(shù)主要是為搜索引擎服務(wù),這時(shí)候我們還叫做專有云,包括綠色環(huán)保IT的建設(shè),高效的網(wǎng)絡(luò)和服務(wù)器的計(jì)算,以及大規(guī)模存儲(chǔ),大規(guī)模計(jì)算,還有實(shí)時(shí)存儲(chǔ)與計(jì)算。我們有時(shí)候在想,我們有了這么好的技術(shù),我們可以把幾百個(gè)pp的數(shù)據(jù)處理,我們可以讓這些數(shù)據(jù)開放出來,服務(wù)更多的開發(fā)者。到了2007年我們做了很多工作,首先我們是把我們的服務(wù)API開發(fā)出來,比如說搜索的API,地圖的API等等,以前這些只是讓用戶使用,現(xiàn)在是開放出來了,讓開發(fā)者也使用。
這些技術(shù)的程序員和開發(fā)者,我們?cè)趺窗堰@個(gè)技術(shù)更好的研發(fā)出來,服務(wù)開發(fā)者,現(xiàn)在我們開發(fā)互聯(lián)網(wǎng)服務(wù)的時(shí)候,主要用這個(gè)lan的架構(gòu),也有服務(wù)器,我們?nèi)ゴ罱ㄒ粋(gè)云存儲(chǔ),云的數(shù)據(jù)庫,還有云的消息溝通機(jī)制,然后構(gòu)建一個(gè)云服務(wù)組件,java我們也在開發(fā)中。百度除了做搜索引擎,我們還有百度貼吧,很多的在線服務(wù),里面有很多功能,比如說接收器、留言板,這些通用功能也是必要的,我們把這些也開放出來了,規(guī)范這個(gè)接口,這樣大家直接通過這些接口就可以調(diào)用以前在百度的服務(wù)內(nèi)容。
然后我們還統(tǒng)一搭建了CPU的應(yīng)用,這就形成了SaaS的平臺(tái),我今天會(huì)講兩個(gè),一個(gè)是我們的存儲(chǔ)技術(shù),存儲(chǔ)是一個(gè)最通用的需求,我們做了很多年。因?yàn)榘俣鹊臉I(yè)務(wù)很多,根據(jù)百度業(yè)務(wù)的特點(diǎn),我們做三個(gè)存儲(chǔ)系統(tǒng),一個(gè)是Mola,這個(gè)系統(tǒng)是低延時(shí)、高并發(fā)在線的K/V存儲(chǔ)。
還有就是海量高吞吐網(wǎng)頁存儲(chǔ),BDDB,我們做搜索引擎需要把所有網(wǎng)頁都打開一遍。
還有一套系統(tǒng)是離線系統(tǒng),HDFS,離線數(shù)據(jù)備份。這個(gè)問題都是共性的,你怎么能夠處理一個(gè)超大規(guī)模的存儲(chǔ)引擎,怎么實(shí)現(xiàn)它的管理、運(yùn)維和容錯(cuò),我們應(yīng)該改正這種情況。從2011年開始我們?cè)谠O(shè)計(jì)新的存儲(chǔ)系統(tǒng),這套存儲(chǔ)系統(tǒng)我們希望能夠屏蔽掉剛才說的Table、File、Object,然后統(tǒng)一到pad上,我們還基于內(nèi)存搭建了一個(gè)分布式數(shù)據(jù)結(jié)構(gòu)。
為了屏蔽這些系統(tǒng)的差異,我們搭建一個(gè)數(shù)據(jù)訪問層,便于開發(fā)者內(nèi)部的應(yīng)用,可以更好的用這些不同的系統(tǒng)。我們發(fā)現(xiàn)這個(gè)存儲(chǔ)系統(tǒng)它還是落后的,為什么呢?百度現(xiàn)在所有的業(yè)務(wù)有一個(gè)特點(diǎn),每一個(gè)用戶他自己的數(shù)據(jù)量,包括他的服務(wù)器量其實(shí)并沒有那么大,總量很大,這就意味著我們的數(shù)據(jù)存儲(chǔ)要有變化,我們要做云,情況發(fā)生了變化,每一個(gè)用戶會(huì)上傳下載更多的數(shù)據(jù),我們就需要再做一套新的系統(tǒng),我們希望這套系統(tǒng)在全國內(nèi)搭建,我們?cè)谌A北、華南各搭建了一套搜索引擎,它會(huì)有好幾個(gè)數(shù)據(jù)中心組成,用高清網(wǎng)絡(luò)來處理的。
為了再度降低用戶的延遲,我們又搭建了一套CDI的節(jié)點(diǎn),這個(gè)并不是很大,搭建很多的接口。這個(gè)系統(tǒng)在每個(gè)機(jī)型上都可以寫入,這樣我們可以極大的降低用戶讀寫的延遲。這給我們技術(shù)也帶來很大的挑戰(zhàn),在各個(gè)機(jī)型上都可以寫入的話,我們需要處理EC的問題和讀寫同步的問題。最開始我們是有需求,我們從這個(gè)技術(shù)出發(fā),去設(shè)計(jì),然后我們發(fā)現(xiàn)這個(gè)技術(shù)會(huì)更好,我們會(huì)做統(tǒng)一的技術(shù),但是因?yàn)橛行碌臉I(yè)務(wù)發(fā)展,我們又要設(shè)計(jì)新的業(yè)務(wù)系統(tǒng),百度有很多技術(shù)就是在需求和技術(shù)發(fā)展之間來做不斷的更新迭代,我們從技術(shù)出發(fā)做我們的技術(shù),然后又有新的需求,再反過來做新的技術(shù)。這樣的迭代過程中產(chǎn)生了很多的技術(shù),這個(gè)技術(shù)在得不是廣為使用的,今天我們希望把這個(gè)技術(shù)逐漸的開放出來,讓更多的開發(fā)者跟我們一樣去應(yīng)用這個(gè)技術(shù)。
另外一個(gè)在線服務(wù)開發(fā)的技術(shù)挑戰(zhàn),比如說百度的貼吧大概有100多個(gè)模塊,他可能產(chǎn)生幾百個(gè)到千的量級(jí)和小的服務(wù),這樣一個(gè)系統(tǒng)KPI需要變化,我們需要改進(jìn)。然后很多時(shí)候你有業(yè)務(wù)需求,你要改善你的存儲(chǔ),做一個(gè)迭代,然后明天又做一個(gè)迭代,你會(huì)遇到很多的問題。然后對(duì)于這樣一個(gè)問題,我們也在思考,怎么能夠把這個(gè)系統(tǒng)做得更好,這邊有一個(gè)需求你去打一下,那邊有一個(gè)需求你又去打一下,會(huì)比較亂,從去年開始我們?cè)谒阉饕粋(gè)開發(fā)方法。我們覺得做一個(gè)在線的服務(wù),有幾個(gè)步驟,比如說先有想法,把這個(gè)想法之后實(shí)現(xiàn)原型,然后再設(shè)計(jì)一個(gè)系統(tǒng),最后出現(xiàn)產(chǎn)品?梢栽谧铋_始的時(shí)候就可以通過數(shù)據(jù)收集的方法來驗(yàn)證,然后你需要開發(fā),這時(shí)候我們有開發(fā)框架,使你可以很快的做你的原型。然后你的原型系統(tǒng)也有一個(gè)測(cè)試,這個(gè)測(cè)試也是基于測(cè)試框架的,這是一個(gè)新的業(yè)務(wù),有一個(gè)模擬現(xiàn)場(chǎng),然后通過應(yīng)用引擎部署運(yùn)維,你對(duì)一個(gè)功能你就做兩個(gè),AB兩種方法,讓用戶去檢驗(yàn)究竟哪一種方法是好的。通過數(shù)據(jù)收集、數(shù)據(jù)分析幫你選擇哪一種方法是好的。開發(fā)過程中我們從想法、原型、系統(tǒng)、產(chǎn)品各個(gè)階段都有數(shù)據(jù)收集,以前是內(nèi)部使用的,現(xiàn)在我們開放出來了。
這套系統(tǒng)有什么收益呢?有兩個(gè)收益,前端成本下降30%,Bug下降40%。減少高階技術(shù)人員投入,降低研發(fā)時(shí)間,更多的新秀可以參與其中,去開發(fā)一個(gè)很難做的系統(tǒng)。做三個(gè)例子,我們部分使用的開發(fā)方法之后,他人員的消耗會(huì)下降50%,當(dāng)我們?nèi)渴褂眠@套方法,他又可以下降30%,更重要的是對(duì)于百度來說,我們只用一兩個(gè)工程師,就把這樣一個(gè)系統(tǒng)做完了。這幾年百度在做新產(chǎn)品的速度,確實(shí)比以前快了。我們有云計(jì)算,我們有在線開發(fā)的方法和流程支持,我們應(yīng)該把它開放出來,讓更多的開發(fā)者也可以跟我們一樣用這樣的方法,去服務(wù)網(wǎng)民,這就是我們開放的平臺(tái)。
首先是把產(chǎn)品API開放了,然后有更多開放云平臺(tái),在這個(gè)平臺(tái)之上我們有一套完善的開發(fā)工具和流程,我們就以測(cè)試為例,我們可以提供自動(dòng)化測(cè)試、移動(dòng)設(shè)備接入、模擬設(shè)備管理,對(duì)于開發(fā)者我們還有客戶端工具,還有ID插件等各種各樣的支持。
剛才說了很多云上的優(yōu)勢(shì),我們有了更多云上的技術(shù),我們有這么多的優(yōu)勢(shì),但是現(xiàn)在我們看移動(dòng)開發(fā),我們?cè)趺蠢迷频膬?yōu)勢(shì)幫助移動(dòng)開發(fā)者解決他的問題,總結(jié)起來有這幾個(gè)方面。對(duì)移動(dòng)開發(fā)者來說,它的數(shù)據(jù)碎片化,你在用A的數(shù)據(jù),B是找不到的。你PC上的數(shù)據(jù)在手機(jī)上也很難訪問,這是應(yīng)用的問題。對(duì)開發(fā)者來說面臨終端多樣性的環(huán)境,你有iPad,有手機(jī),還有PC,你在寫一個(gè)應(yīng)用的時(shí)候,你不得不為每一個(gè)平臺(tái),每一個(gè)系統(tǒng)單獨(dú)搭建一個(gè)應(yīng)用。當(dāng)然非技術(shù)因素,推廣運(yùn)營困難,變現(xiàn)能力有限。
我們應(yīng)該怎么解決這些問題呢?兩個(gè)辦法。一個(gè),對(duì)于開放云的平臺(tái)我們進(jìn)行重組,把它變成了以個(gè)人為中心的組織方式,我們知道在以前的云平臺(tái),他是一個(gè)以應(yīng)用為中心的平臺(tái),應(yīng)用生成資源,然后用戶在這些已有資源里來使用。今天我們換了,我們把它變成一個(gè)人為中心組織這些資源,對(duì)用戶來說,在云端上有了一個(gè)自己私有的云存儲(chǔ),而你的那些應(yīng)用其實(shí)是幫你組織,幫你管理,幫你展現(xiàn)這些數(shù)據(jù),在云端提供一個(gè)應(yīng)用,而這個(gè)應(yīng)用就幫他組織和管理這些數(shù)據(jù),對(duì)于這個(gè)應(yīng)用來說,如果他需要的話,他有可能會(huì)用到我們整個(gè)云平臺(tái)上的資源來去做一件事,在以前這種環(huán)境中是做不到的。這里就解決了數(shù)據(jù)的碎片化問題,以用戶為中心重組之后,應(yīng)用就可以集中。
有了這些還不夠,還有開發(fā)者終端的問題,你有手機(jī),有PC,有你的Pad,跑的環(huán)境不一樣,我們有這邊的云。其實(shí)我們?cè)谙胛覀冊(cè)趺床拍芙鉀Q問題呢?我們提出了一個(gè)新的想法,如果說我們能構(gòu)建一個(gè)OS,這個(gè)OS是跨越云和端兩端的,對(duì)用戶來說還會(huì)遇到一個(gè)問題,他怎么去發(fā)現(xiàn)這個(gè)應(yīng)用,去安裝這個(gè)應(yīng)用,最后我們還會(huì)提供一個(gè)應(yīng)用平臺(tái)的支持。這里面有搜索、推送、瀏覽等各種功能,可以很好的解決App Store帶來的問題。
百度OS支持網(wǎng)頁的App化,舉個(gè)例子,這個(gè)圖是一個(gè)上線的圖,左邊是一個(gè)比較理想的展現(xiàn),大家可以看到其實(shí)我們?cè)诓煌O(shè)備上做同一個(gè)事情,就是瀏覽這些網(wǎng)頁,但是因?yàn)椴煌O(shè)備的特點(diǎn),它的交互方式是不一樣的。我們?cè)赑C的瀏覽器上,用得是滾動(dòng)這種方式做瀏覽,在移動(dòng)設(shè)備上更多的是點(diǎn)擊,或者是拖動(dòng),但是同一種產(chǎn)品,只是應(yīng)用設(shè)備的特點(diǎn),需要有不同的交互。對(duì)每一種產(chǎn)品單獨(dú)做開發(fā)是很困難的,我們?cè)谙胍驗(yàn)槲覀冇袛?shù)據(jù),我們做搜索引擎,基本上這些網(wǎng)頁數(shù)據(jù)我們都有,我們可以分析,我們可以判斷這個(gè)究竟是一個(gè)什么場(chǎng)景。然后對(duì)這些資源進(jìn)行分析之后,我們就可以分析出里面的產(chǎn)品,然后對(duì)里面的產(chǎn)品去做一個(gè)轉(zhuǎn)換,轉(zhuǎn)換,我們?cè)賾?yīng)用到具體的物理產(chǎn)品中去,我們可以做終端適配。這個(gè)事情,我們看以前很多代理模式也能做到,但是我們有了這個(gè)技術(shù)以后會(huì)做得更好。
第二件事情,百度云OS支持新型WebApp架構(gòu),云增強(qiáng)的webview,MVC編程框架,云與端聯(lián)合執(zhí)行。對(duì)于UI無來說,我們可以異步調(diào)用,我們可以做更好的組建。然后我們做了一件事情,去把這個(gè)邏輯和UI分開,異步調(diào)用,我們把這些邏輯分?jǐn)偟揭粋(gè)一個(gè)小服務(wù)里面,這些小服務(wù)的調(diào)動(dòng)方法和接口是一致的,他既可以在云上執(zhí)行,也可以在端上執(zhí)行。我們還可以在我們的平臺(tái)里面,我們?cè)谠贫死飪?nèi)置這些服務(wù),這些服務(wù)對(duì)你的UI來說是一樣的,這就是我們新型的WebApp的特點(diǎn),我們用云端的數(shù)據(jù)支持和分析來支持View實(shí)現(xiàn)。這是一個(gè)很有意思的概念和架構(gòu)。
怎么做這個(gè)完整的架構(gòu)呢?我們先透露一下技術(shù)架構(gòu)。一個(gè)是支持webApp的開發(fā)框架,然后做云端數(shù)據(jù)分析,我們可以做更好的交互場(chǎng)景,我們會(huì)做很多變化,就會(huì)從這個(gè)里面分析出來這是一個(gè)什么場(chǎng)景,然后映射到不同的顯示設(shè)備上。做到這一點(diǎn),我們對(duì)webkit做一個(gè)分析,優(yōu)化、架構(gòu)調(diào)整,這是WebApp的內(nèi)容。對(duì)于國際上,他會(huì)應(yīng)用在這兩端,一段是移動(dòng)端,有一個(gè)Kernel支持它。在云上的部分,主要是按個(gè)人的方式組織開放云的平臺(tái),以及我們有數(shù)據(jù)挖掘和分析的支持,在云和端這兩邊,我們也做了一個(gè)技術(shù),使得它可以做更高效的通信和傳輸,今天下午的里面我們會(huì)對(duì)這些技術(shù)做更詳細(xì)的介紹,有興趣歡迎大家做論壇。
大家可能也很好奇,我們做了這么多工作,究竟什么時(shí)候能夠用到?我們有一個(gè)技術(shù)路線圖,今天我們會(huì)發(fā)布三個(gè),第一個(gè)是個(gè)人云存儲(chǔ)PCS,然后是應(yīng)用引擎BAE2.0,還有一個(gè)移動(dòng)測(cè)試環(huán)境MIC,在Q2階段是移動(dòng)建站工具。在Q3的時(shí)候,有一個(gè)WebApp框架1.0版的發(fā)布,同時(shí)提供一個(gè)云測(cè)試平臺(tái),Q4階段是云OSPreview。這個(gè)UI的技術(shù),剛才講了很多,從技術(shù)上我們也認(rèn)為是在做一個(gè)很有意思的事情,有可能會(huì)改變整個(gè)互聯(lián)網(wǎng)的環(huán)境,我們也希望大家有興趣,可以今天下午到我們的論壇里,跟我們做更深入的討論和交流。這是我這部分的分享,謝謝大家。