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