大家都知道PayPal是另一家遷移到Node.js平臺的大型公司,Jeff Harrell的這篇博文 Node.js at PayPal 解釋了為什么從Java遷移出來的原因: 開發(fā)效率提高一倍(2個人用更少的時間干了5個人的活), 性能提高一倍, 代碼量減少33%, 文件減少40%:
?。ㄐ【帲?個人認為深層次原因是Java正在越來越走向封閉,而且變得越來越復雜而且oracle正在對Java收費,參見: Oracle計劃發(fā)布收費版JVM , 這促使了越來越多的公司加入了去Java化的隊伍)
外面有很多人說PayPal正在遷移到node.js平臺。我很高興地在這里宣布,傳言是真的,我們正在從Java遷移至node.js
由于歷史原因,我們的工程師一直分為兩撥人,一撥在瀏覽器上寫代碼(HTML,CSS,JavaScript);另一撥用Java寫應用層的代碼。想象一下,一個寫HTML的不得不去叫一個寫Java將A/B兩個頁面鏈接到一起嗎?我們正在這樣干,我們稱這樣的人為全端工程師,那些即可以設計精美界面和服務器后臺的那些人。現(xiàn)在前后端已經(jīng)沒有界限了,這曾經(jīng)是阻礙PayPal發(fā)現(xiàn)的一個很大的瓶頸。
Node.js幫助我們將前、后端合二為一,現(xiàn)在我們一個全端團隊即可解決用戶的所有問題。
早期采納
像其他人一樣,我們剛開始使用node.js做了一些demo用的原型程序。跟很多人一樣,她表現(xiàn)出來的超高性能,讓我們最終決定把她放到線上去。
我們最初使用express來路由請求,nconf用來配置,grunt用來創(chuàng)建tasks。Express非常普及,但是我們發(fā)現(xiàn)Express在多個團隊協(xié)作時表現(xiàn)出的可伸縮性不足,它并不適合所有場合。Expres非常靈活,但在大型團隊開發(fā)上的可擴展性不佳。最終我們的隊員基于原生的node.js,并創(chuàng)建了Karken.js;她并不是一個框架,更像是一個規(guī)范,但相對于express,她更適合大型團隊的擴展。我們希望我們的工程師專注他們的應用,而不是專注他們的運行環(huán)境。
我們已經(jīng)在內(nèi)部使用kraken.js好幾個月了(我們馬上會把他開源的?。┪覀兊墓こ處煼浅?释@個內(nèi)部框架能盡快上線。
(小編:預測karken.js即將是,另一個超火的后端框架,火熱程度參考twitter的bootstrap)
將node.js布署到線上
我們第一個采用nodejs的產(chǎn)品不是一個小的應用;是我們的瀏覽量最多的用戶首頁。我們希望步子邁得大一點,但是我們清楚知道其中的風險,所以我們同時還并行地運行了一個Java的程序。我們在開發(fā)和擴展Java方面非常有經(jīng)驗。所以一旦node.js應用出問題了,我們可以立即切回Java。不過,同時我們也發(fā)現(xiàn)了一些非常有意思的數(shù)據(jù)。
開發(fā)
從1月份開始,我們花了幾個月的時間來搭建node.js的基礎設施。比如:sessions(會話),centralized logging(集中日志),keystores(存儲)。在這期間我們有5位Java工程師在開發(fā)Java。在開發(fā)了兩個月后,兩位工程師開始開發(fā)node.js應用。在6月初兩個團隊的開發(fā)進度已經(jīng)一樣了,兩者的功能完全一樣。開發(fā)node.js應用的那個小團隊,盡管推遲了兩個月,但是很快趕上了。這里我們對這些相同功能做的一些單元測試得出的結(jié)果:
Node.js的是:
更少的人開發(fā)的node.js應用比Java的快一倍;
節(jié)省了33%的代碼量;
少了40的文件;
(小編,這里作者的意思并不是Java程序員的素質(zhì)沒有node.js的好,Java語言的特點決定她需要更多的人,更多的時間,更多的代碼去完成在node.js下的同樣的工作,并且吃力不討好。)
這是一個非常鼓舞人的證據(jù),我們似乎應該更快地遷移到JavaScript平臺上去。我們立即做了一個決定,暫停Java應用的開發(fā),全心全意開發(fā)JavaScript應用。這對開發(fā)Java項目的工程師來說是個好消息,他們已經(jīng)消除了對node.js的疑慮,非常高興地投入到了并行的node.js開發(fā)上來,這樣我們的開發(fā)效率提高了兩倍。
性能
性能是一個非常有意思和具有爭議性的話題。在我們這,我們有兩個平臺實現(xiàn)完全一樣功能的程序;一個是使用基于Spring的內(nèi)部Java框架;另一個是基于kraken.js,express,dust.js和其他開源框架。 這些程序包含三個API,每個API來響應2到5個請求,由Dust來模擬獲取數(shù)據(jù)和顯示頁面。
我們用線上的環(huán)境去測試這兩個應用,并收集了完成響應的時間和請求數(shù)。
node.js vs Java 性能對比
在這張圖上你可以看到node.js應用的優(yōu)勢:
每秒請求數(shù)量是Java的兩倍。不過更有意思的是我們僅使用了單核的node去跟5核的Java來對比,我們非常希望將來繼承擴大node.js的優(yōu)勢。
渲染相同的頁面,node.js節(jié)省了35%的時間。即每個頁面節(jié)約了200豪秒,用戶可以清楚地感覺到這樣的區(qū)別。
未來
我們將繼續(xù)使用node.js來構建我們的Web應用。像我們正在開發(fā)的那些門戶,和已經(jīng)上線的用戶概覽頁面。還有一打正在進入Beta測試的那些工程,我們會繼續(xù)分享我們在上線過程中的經(jīng)驗,數(shù)據(jù)。對于PayPal來說這是一個另人激動的時刻。
哈爾濱品用軟件有限公司致力于為哈爾濱的中小企業(yè)制作大氣、美觀的優(yōu)秀網(wǎng)站,并且能夠搭建符合百度排名規(guī)范的網(wǎng)站基底,使您的網(wǎng)站無需額外費用,即可穩(wěn)步提升排名至首頁。歡迎體驗最佳的哈爾濱網(wǎng)站建設。
