淘寶aDev技術(shù)沙龍總結(jié):消息中間件與BigPipe
原創(chuàng)11月26日的aDev技術(shù)沙龍是淘寶在北京地區(qū)舉辦的***次線下活動(dòng),本人正好過去湊個(gè)熱鬧,看看牛人們的討論。
aDev的定位偏后端,本期主題是《異步化技術(shù)在大型系統(tǒng)中的運(yùn)用》,兩個(gè)話題跟Java消息中間件相關(guān),一個(gè)涉及偏前端的BigPipe實(shí)現(xiàn)。說是aDev,但其實(shí)前兩個(gè)有關(guān)Java消息中間件的話題基本分不清是開發(fā)還是運(yùn)維了,這也算是這個(gè)領(lǐng)域的一個(gè)發(fā)展方向吧。
在分布式互聯(lián)網(wǎng)技術(shù)尚未推進(jìn)之前,互聯(lián)網(wǎng)對(duì)于中間件的使用主要在Web應(yīng)用服務(wù)器方面,因此中間件一直多用于傳統(tǒng)的企業(yè)IT架構(gòu),對(duì)外公開的資料比較少。過去幾年間,隨著一些互聯(lián)網(wǎng)企業(yè)規(guī)模越來越大,互聯(lián)網(wǎng)行業(yè)也逐漸誕生了一些復(fù)雜的需求,這時(shí)就引入了更多中間件的功能,用來進(jìn)行消息的隊(duì)列處理等事物。
aDev當(dāng)天的***個(gè)分享來自淘寶網(wǎng)的馬震(@mz1999,花名鋒寒),主題是《消息中間件在大型分布式系統(tǒng)的應(yīng)用》 (PPT下載:http://t.cn/S44ZIY)。鋒寒本次介紹的Java消息中間件在淘寶業(yè)務(wù)中應(yīng)用于多個(gè)場景,其中包括對(duì)可靠性要求***的訂單處理隊(duì)列。介紹的一共有兩套系統(tǒng),一個(gè)是以前就在使用的Notify,另外一個(gè)是從LinkedIn的Kafka改造而來的Metamorphosis。(說句題外話,Notify直譯為“通知”,這個(gè)倒是好理解;Metamorphosis的意思倒是比較文藝腔,是卡夫卡《變形記》的英文名,但是不知道典故的人可能會(huì)以為是“變態(tài)”的意思……)
Kafka采用Scala開發(fā),這是JVM上的一種函數(shù)式兼面向?qū)ο笫降恼Z言,這幾年在開發(fā)領(lǐng)域挺被看好的。不過在淘寶這邊,卻專門用Java重寫了一個(gè)Meta出來,這是一件很有意思的事情。根據(jù)鋒寒的說明,選擇用Java重寫,一來是因?yàn)楝F(xiàn)有的程序都是Java的,二來是因?yàn)槟壳疤詫殐?nèi)部的Scala人才儲(chǔ)備還不夠。也許過幾年精通Scala的人多起來了之后,倒是可以考慮采用Scala,畢竟Scala說到底是JVM語言,從Java到Scala的移植畢竟是趨勢(shì),在國外也已經(jīng)有現(xiàn)成的案例。
另外,聽一個(gè)人人網(wǎng)后端的哥們兒說,其實(shí)像是Scala和Erlang這樣聲稱高效的語言,在實(shí)際測試當(dāng)中發(fā)現(xiàn)還是無法滿足服務(wù)的需求。當(dāng)然,他是跟C++做比較……
Notify目前已經(jīng)開源,而Metamorphosis也將在未來某個(gè)時(shí)間開源。(更正:Notify項(xiàng)目并未開源,最初的信息有誤,造成不便還請(qǐng)諒解)
之后對(duì)應(yīng)用場景的說明很有參考價(jià)值,我就直接上圖吧:
鋒寒之后,是去哪兒網(wǎng)的高級(jí)系統(tǒng)架構(gòu)師孫立(@sunli1223)分享的《高性能隊(duì)列Fqueue的設(shè)計(jì)和使用實(shí)踐》(PPT下載:http://t.cn/S442vh)。Fqueue也是一個(gè)Java實(shí)現(xiàn)的消息隊(duì)列系統(tǒng),并且已經(jīng)開源。Fqueue的不同之處在于它追求的是處理速度***化,對(duì)容災(zāi)方面則沒有太多考慮,因?yàn)槿ツ膬壕W(wǎng)并不涉及到訂單處理這種對(duì)數(shù)據(jù)安全特別敏感的業(yè)務(wù)。
第三個(gè)講座是新浪微博高級(jí)應(yīng)用開發(fā)工程師史羅丹(@Rodin)分享的《新浪微博新版中的Bigpipe Server端的PHP實(shí)現(xiàn)》(PPT下載:http://t.cn/S44UvQ)。BigPipe是Facebook在09年提出的一個(gè)動(dòng)態(tài)頁面技術(shù),號(hào)稱在采用了之后“頁面加載速度提升了一倍”。Facebook這技術(shù)對(duì)于咱們這些正常的網(wǎng)民而言意義不大,不過用在新浪微博上就跟咱有關(guān)系啦。其實(shí)基本理念不難理解,就是讓一個(gè)頁面分塊提交請(qǐng)求,分塊加載和渲染,從而有效降低用戶的等待時(shí)間。根據(jù)羅丹的介紹,新版新浪微博采用這個(gè)之后,頁面加載速度的提升還是相當(dāng)明顯的。
三個(gè)講座結(jié)束之后有一段很搞笑的招聘節(jié)目,人人網(wǎng)、騰訊、新浪、阿里云、當(dāng)當(dāng)網(wǎng)的幾位仁兄都上去宣傳了一下各自團(tuán)隊(duì)的發(fā)展理念,人人網(wǎng)的老兄還表示明年也會(huì)舉辦類似的線下活動(dòng)。最近一年來技術(shù)類線下活動(dòng)的爆發(fā)式增長,以及互聯(lián)網(wǎng)企業(yè)舉辦這些可以讓其他公司的工程師上來分享和招人的線下活動(dòng)其實(shí)是個(gè)挺有意思的現(xiàn)象,回頭我會(huì)就這個(gè)話題再寫一些后續(xù)的內(nèi)容,這次就略過了。
淘寶的大部分線下活動(dòng)都在杭州,感興趣的同學(xué)們可以關(guān)注淘寶技術(shù)嘉年華的新浪微博。