什么是Node.js?
Node.js是一個(gè)開(kāi)放源代碼的JavaScript運(yùn)行時(shí)環(huán)境,可在瀏覽器外部執(zhí)行JavaScript代碼。它基于Chrome的V8 JavaScript引擎構(gòu)建,并考慮了可擴(kuò)展性。它非常適合輕量級(jí)、快速的實(shí)時(shí)web應(yīng)用程序。那么,Node.js吸引越來(lái)越多公司的原因是什么呢?它可以創(chuàng)建協(xié)作工具、聊天工具、社交媒體應(yīng)用程序等。根據(jù)Stackoverflow的說(shuō)法,Node.js是最受歡迎的技術(shù)之一。
NASA
NASA的應(yīng)用程序著重于在太空探險(xiǎn)中確保宇航員的安全。在一次事故中,一名宇航員差點(diǎn)喪命,NASA面臨著將所有EVA宇航服的數(shù)據(jù)轉(zhuǎn)移到一個(gè)云數(shù)據(jù)庫(kù)的挑戰(zhàn)。他們采用了Node.js,這有助于將程序步驟的數(shù)量從28個(gè)減少到7個(gè)!
“他正在創(chuàng)建的這個(gè)系統(tǒng)使用了一個(gè)微服務(wù)架構(gòu),其中包含了用Node.js構(gòu)建的獨(dú)立api和應(yīng)用程序,以便將與EVA航天服相關(guān)的數(shù)據(jù)從三個(gè)獨(dú)立的遺留數(shù)據(jù)庫(kù)轉(zhuǎn)移到一個(gè)云數(shù)據(jù)庫(kù)?,F(xiàn)在,用戶(hù)可以查詢(xún)一個(gè)數(shù)據(jù)庫(kù),從而將訪(fǎng)問(wèn)一組完整數(shù)據(jù)的時(shí)間減少了大約300%。”
Node.js Foundation 案例研究
好處:
- 單一數(shù)據(jù)庫(kù)
- 訪(fǎng)問(wèn)時(shí)間縮短了300%
- 減少程序步驟
Netflix
這家全球最大的流媒體和VOD提供商擁有超過(guò)1.3億用戶(hù),他們將后端從Java轉(zhuǎn)到了Node.js。他們需要一個(gè)可擴(kuò)展的解決方案,能夠處理每周10億小時(shí)的視頻流和所有的請(qǐng)求。利用像Node.js這樣的快速輕量級(jí)平臺(tái),Netflix可以減少70%的啟動(dòng)時(shí)間。
好處:
- 構(gòu)建時(shí)間更短
- 更輕,更快,更模塊化的應(yīng)用程序
PayPal
2013年,PayPal決定從Java遷移到Node.js。這使得頁(yè)面響應(yīng)時(shí)間縮短了200ms,每秒可以處理的請(qǐng)求數(shù)量增加了一倍。由于開(kāi)發(fā)團(tuán)隊(duì)曾經(jīng)分為編寫(xiě)特定于瀏覽器的代碼的開(kāi)發(fā)團(tuán)隊(duì)和編寫(xiě)特定于應(yīng)用程序?qū)拥拇a的開(kāi)發(fā)團(tuán)隊(duì),Node.js是一個(gè)理想的解決方案。
“ Node.js通過(guò)使瀏覽器和服務(wù)器應(yīng)用程序都可以用JavaScript編寫(xiě)來(lái)幫助我們解決這一問(wèn)題。它把我們的專(zhuān)業(yè)人員統(tǒng)一為一個(gè)團(tuán)隊(duì),使我們能夠在技術(shù)堆棧的任何層次上理解并響應(yīng)用戶(hù)的需求。”
貝寶(PayPal)付款產(chǎn)品和工程高級(jí)總監(jiān)Jeff Harrell
好處:
- 平均響應(yīng)時(shí)間減少了35%
- 頁(yè)面服務(wù)縮短了200ms
- 代碼減少30%,行數(shù)減少40%
Uber
優(yōu)步是世界著名的出租車(chē)司機(jī)與客戶(hù)溝通的平臺(tái)。他們的應(yīng)用程序使用了一些Node.js工具和編程語(yǔ)言。盡管他們不斷地引入新技術(shù),Node.js仍然是他們的基礎(chǔ),因?yàn)樗试S快速擴(kuò)展。值得一提的是,Uber是最早使用Node.js的公司之一。
“使Node.js特別適合在生產(chǎn)環(huán)境中運(yùn)行的原因之一是,您可以檢查和更改程序而無(wú)需重新啟動(dòng)它。很少有其他語(yǔ)言提供該功能。”
Uber高級(jí)工程師Matt Ranney
好處:
- 強(qiáng)大的處理能力
領(lǐng)英
2011年,一個(gè)服務(wù)6300萬(wàn)用戶(hù)的平臺(tái)決定從Ruby on Rails轉(zhuǎn)向Node.js。通過(guò)這樣做,開(kāi)發(fā)人員可以從同步系統(tǒng)轉(zhuǎn)移到異步系統(tǒng)。這提高了性能和可伸縮性。
“我們?cè)贚inkedIn上使用了大量技術(shù),但對(duì)于移動(dòng)服務(wù)器而言,它完全基于Node。原因之一是規(guī)模。第二個(gè)是,如果您查看Node,它最擅長(zhǎng)的就是與其他服務(wù)進(jìn)行對(duì)話(huà)。移動(dòng)應(yīng)用必須與我們的平臺(tái)API和數(shù)據(jù)庫(kù)對(duì)話(huà)。與以前使用的Ruby on Rails相比,Node向我們展示了巨大的性能提升。”
Linkedin產(chǎn)品副總裁Kiran Prasad
好處:
- 將服務(wù)器數(shù)量從15減少到4
- 流量服務(wù)提升了一倍
- 應(yīng)用程序運(yùn)行速度提高2-10倍
雅虎
在2009年Node首次發(fā)布后不到一年的時(shí)間里,雅虎就開(kāi)始使用Node.js。2016年,雅虎成為Node.js Foundation的一員。雅虎的博客證實(shí),其網(wǎng)絡(luò)應(yīng)用程序中有75%是基于Node的。
“最初,我們使用它來(lái)執(zhí)行簡(jiǎn)單的后端任務(wù),例如文件上傳。從那之后,Node.js成為Yahoo開(kāi)發(fā)新前端應(yīng)用程序的頂級(jí)編程語(yǔ)言之一。”
好處:
- 提高了性能
Trello
全球超過(guò)2500萬(wàn)人使用的項(xiàng)目管理工具,Selleo就是其中之一。Trello的服務(wù)器端使用Node.js作為構(gòu)建單頁(yè)面應(yīng)用程序的原型工具。
“服務(wù)器端是使用Node.js構(gòu)建的。當(dāng)公司為單頁(yè)面應(yīng)用程序設(shè)計(jì)工具時(shí),Node.js很有幫助。在公司完成原型制作時(shí),他們決定在應(yīng)用程序的服務(wù)器端也堅(jiān)持使用Node。” Node.JS公司博客
好處:
- 事件驅(qū)動(dòng)的非阻塞服務(wù)器
- 能夠保持許多打開(kāi)的連接以進(jìn)行即時(shí)更新
eBay
eBay需要一個(gè)實(shí)時(shí)應(yīng)用程序來(lái)維持與服務(wù)器的實(shí)時(shí)連接,以及一個(gè)能夠處理大量eBay特定服務(wù)的出色解決方案。他們提到Node.js的許多特性:性能、可伸縮性、速度、簡(jiǎn)單性、完全控制和透明性。感。
“現(xiàn)在,我們的Node.js Web服務(wù)可以在各種穩(wěn)定的環(huán)境中運(yùn)行。整個(gè)部署設(shè)置比我們預(yù)期的更快,更簡(jiǎn)單。我們對(duì)該項(xiàng)目有兩個(gè)主要要求。首先是使應(yīng)用程序盡可能實(shí)時(shí),即保持與服務(wù)器的實(shí)時(shí)連接。第二個(gè)是協(xié)調(diào)大量的eBay特定服務(wù),這些服務(wù)在頁(yè)面上顯示信息,即處理I / O綁定的操作。”
eBay科技博客
好處:
- 更快,更可靠的應(yīng)用
- 單線(xiàn)程
- 過(guò)程透明
Groupon
隨著Ruby on Rails、Java和PHP越來(lái)越難以維護(hù),Groupon決定在Node.js上重建他們的web層。他們長(zhǎng)達(dá)一年的遷移項(xiàng)目已經(jīng)成為Node.js最大的生產(chǎn)部署之一。
“在Groupon,我們相信開(kāi)放式協(xié)作是導(dǎo)致技術(shù)界真正創(chuàng)新的原因。正如我在新聞稿中所引用的那樣,Node.js基礎(chǔ)結(jié)構(gòu)對(duì)我們非常重要,并且是我們平臺(tái)的核心。”
Groupon首席技術(shù)官兼工程高級(jí)副總裁Sri Viswanath
好處:
- 平臺(tái)速度提高50%
- 更高的穩(wěn)定性和處理大量流量的能力
沃爾瑪
2017年,全球銷(xiāo)售額達(dá)4813.2億美元的沃爾瑪決定使用Node.js。他們重新開(kāi)發(fā)了移動(dòng)應(yīng)用程序,為客戶(hù)提供高級(jí)功能。
好處:
- 新插件和NPM軟件包
- 精準(zhǔn)結(jié)果
- 能夠使用SmartOS