記得在2012年10月份的時候,鑒于性能和可擴展性方面的原因,LinkedIn將其移動設施的后臺Ruby on Rails替換成了Node.js。那么為什么要做出這樣的決策,Node.js又比Ruby強在哪里呢?下面一起來為你解答。
Node.js――基于JavaScript的服務器端軟件平臺,它的作用主要是用于構建可伸縮的網絡應用程序,在過去的幾年里它已經風靡于全球眾多開發(fā)商。Node.js使用一個事件驅動的、非阻塞I/O模型,這使得它的體積更小、效果更佳,適合運行在分布式設備里實時數(shù)據(jù)密集型的應用程序上。正是由于這些強大的優(yōu)勢,才吸引了大量的網站遷移到Node.js平臺。其中就包括LinkedIn。
LinkedIn最初是建立在Ruby平臺上,包括6萬行代碼,但是在2011年下半年的時候,LinkedIn開始利用Node.js來重建他們的核心移動服務,旨在提高它的服務性能。與此同時,重建過程也是一項簡化過程,最終將代碼縮減到2千行。你可能會問:為什么LinkedIn選擇Node.js?主持這項任務的項目負責人Kiran Prasad給出了一些原因。Node.js之所以最后被選中,是因為它提供了一些好處:
下面一一做出詳細解釋:
代碼減少的最大原因是我們當前代碼庫實質上是framework-free,這意味著原來的代碼里有很多是冗余的,應該被去掉。
第二個原因主要是和LinkedIn現(xiàn)在正在采用的函數(shù)式編程有關,這跟面向對象的實現(xiàn)途徑截然不同,不過后來證明函數(shù)式編程對于LinkedIn來說是一個重要的轉變。在Ruby平臺中,最常見的方式是創(chuàng)建一個可以封裝每一個通信和類型的對象。Ruby實際上是一種函數(shù)式語言,但是它有一個比JavaScript更強大的類和對象的概念。所以在早期的代碼庫里,開發(fā)者有很多抽象層和對象層,而這些抽象層和對象層是在更大的組件化、可分解化和可重用性的前提下創(chuàng)建的。不過現(xiàn)在回想起來,那時候的這些動作都是多余的。
另一個減少代碼的重要原因是MVC(model- view-controller)模型背后的動力,至少MVC模型可以在移動設備和Web基礎系統(tǒng)之間能夠做出更好的選擇。在此之前,LinkedIn有很多服務器端呈現(xiàn),現(xiàn)在隨著模板和視圖不斷地向客戶端轉移,因此導致大量的呈現(xiàn)代碼是多余的,縮減代碼是必不可少的。之后出現(xiàn)的情況就是人們對后端技術的信任和依賴程度不斷的加重,許多先進的東西也慢慢的出現(xiàn)了。這就意味著沒必要像之前那樣使用巨大的代碼塊了。
中國擁有一個網民數(shù)量龐大的網絡市場,LinkedIn在中國無疑會獲得巨大的利潤。但是LinkedIn緊隨其后的問題是如何應對當前技術架構上的挑戰(zhàn)。不過,LinkedIn遷移到Node.js將會一直保持之前的良好表現(xiàn),并且在擴大市場的前提下將會更加的從容。
英文原文:Pixelstech