LinkedIn緣何拋棄Ruby,轉投NodeJS懷抱?

記得在2012年10月份的時候,鑑於性能和可擴展性方面的緣由,LinkedIn將其移動設施的後臺Ruby on Rails替換成了Node.js。那麼爲何要作出這樣的決策,Node.js又比Ruby強在哪裏呢?下面一塊兒來爲你解答。前端

Node.js——基於JavaScript的服務器端軟件平臺,它的做用主要是用於構建可伸縮的網絡應用程序,在過去的幾年裏它已經風靡於全球衆多開發商。Node.js使用一個事件驅動的、非阻塞I/O模型,這使得它的體積更小、效果更佳,適合運行在分佈式設備裏實時數據密集型的應用程序上。正是因爲這些強大的優點,才吸引了大量的網站遷移到Node.js平臺。其中就包括LinkedIn。編程

LinkedIn最初是創建在Ruby平臺上,包括6萬行代碼,可是在2011年下半年的時候,LinkedIn開始利用Node.js來重建他們的核心移動服務,旨在提升它的服務性能。與此同時,重建過程也是一項簡化過程,最終將代碼縮減到2千行。你可能會問:爲何LinkedIn選擇Node.js?主持這項任務的項目負責人Kiran Prasad給出了一些緣由。Node.js之因此最後被選中,是由於它提供了一些好處:segmentfault

  • 更高的性能,在特定場景下Node.js能比Rails快20倍。
  • 使用3個服務器而不是30個就能應對10倍的流量增加。
  • 前端工程師可以進行後端代碼的開發,兩個團隊實際上合二爲一了。

下面給出詳細解釋:後端

代碼減小的最大緣由是咱們當前代碼庫實質上是framework-free,這意味着原來的代碼裏有不少是冗餘的,應該被去掉。服務器

第二個緣由主要是和LinkedIn如今正在採用的函數式編程有關,這跟面向對象的實現途徑大相徑庭,不事後來證實函數式編程對於LinkedIn來講是一個重要的轉變。在Ruby平臺中,最多見的方式是建立一個能夠封裝每個通訊和類型的對象。Ruby其實是一種函數式語言,可是它有一個比JavaScript更強大的類和對象的概念。因此在早期的代碼庫裏,開發者有不少抽象層和對象層,而這些抽象層和對象層是在更大的組件化、可分解化和可重用性的前提下建立的。不過如今回想起來,那時候的這些動做都是多餘的。網絡

另外一個減小代碼的重要緣由是MVC(model-view-controller)模型背後的動力,至少MVC模型能夠在移動設備和Web基礎系統之間可以作出更好的選擇。在此以前,LinkedIn有不少服務器端呈現,如今隨着模板和視圖不斷地向客戶端轉移,所以致使大量的呈現代碼是多餘的,縮減代碼是必不可少的。以後出現的狀況就是人們對後端技術的信任和依賴程度不斷的加劇,許多先進的東西也慢慢的出現了。這就意味着不必像以前那樣使用巨大的代碼塊了。前端工程師

中國如今是一個擁有龐大網民數量的網絡市場,LinkedIn在中國無疑會得到巨大的利潤。可是LinkedIn緊隨其後的問題是如何應對當前技術架構上的挑戰。不過,LinkedIn遷移到Node.js將會一直保持以前的良好表現,而且在擴大市場的前提下將會更加的從容。架構


原文 Why does LinkedIn migrate to NodeJS from Ruby?
翻譯 ITeye分佈式

相關文章
相關標籤/搜索