国产精品成人VA在线观看,亚洲日韩在线中文字幕综合,亚洲AV电影天堂男人的天堂,久久人人爽人人爽人人av东京热

News新聞

業(yè)界新聞動態(tài)、技術(shù)前沿
Who are we?

您的位置:首頁      JS/JQ/AJAX      為什么我要用 Node.js? 案例逐一介紹

為什么我要用 Node.js? 案例逐一介紹

標簽: 發(fā)布日期:2014-03-17 00:00:00 665

 介紹

  JavaScript 高漲的人氣帶來了很多變化,以至于如今使用其進行網(wǎng)絡(luò)開發(fā)的形式也變得截然不同了。就如同在瀏覽器中一樣,現(xiàn)在我們也可以在服務(wù)器上運行 JavaScript ,從前端跨越到后端,這樣巨大的反差讓人難以想象,因為僅僅在幾年前 Javascript 還如同 Flash 或者 Java applet 那樣嵌入網(wǎng)頁在沙箱環(huán)境中運行。

  在深入Node.js之前,你可能需要閱讀和了解使用SEO友好的。

  缺點:

  • 任何CPU密集型的計算都將阻礙 Node.js 的反應,所以使用多線程的平臺是一個更好的方法。或者,您也可以嘗試向外擴展的計算[*]。
  • Node.js 使用關(guān)系型數(shù)據(jù)庫依舊十分痛苦(詳細見下方)。拜托了,如果你想執(zhí)行關(guān)系型數(shù)據(jù)操作,請考慮別的環(huán)境:Rails, Django 甚至 ASP.NET MVC 。。。。

  【*】另一種解決方案是,為這些CPU密集型的計算建立一個高度可擴展的MQ支持的環(huán)境與后端處理,以保持 Node 作為一個前臺專員來異步處理客戶端請求。

 Node.js 不應該在什么地方使用

  使用關(guān)系型數(shù)據(jù)庫的服務(wù)端 WEB 應用

  對比 Node.js 上的 Express.js 和 Ruby on Rails,當你使用關(guān)系型數(shù)據(jù)庫的時候請毫不猶豫的選擇后者。

  Node.js 的關(guān)系數(shù)據(jù)庫工具仍處于早期階段,目前還沒有成熟到讓人能夠愉快地使用它。而與此同時,Rails天生自帶了數(shù)據(jù)訪問組件,連同DB schema遷移的支持工具和一些Gems(一語雙關(guān),一指這些如同珍寶的工具,二指ruby的gems程序包)。Rails和它的搭檔框架們擁有非常成熟且被證明了的活動記錄(Active Record)或數(shù)據(jù)映射(Data Mapper)的數(shù)據(jù)訪問層的實現(xiàn),而這些是當你在使用純JavaScript來復制這些應用的時候會非常想要使用的東西。

  不過,如果你真的傾向于全部使用 JS(并且做好可能抓狂的準備),那么請繼續(xù)關(guān)注 Sequelize 和 Node ORM2 ,雖然這兩者仍然不成熟的,但他們最終會迎頭趕上。

  [*] 使用 Node 光是作為前端而 Rails 做后端來連接關(guān)系型數(shù)據(jù)庫,這是完全有可能也并不少見的。(筆者注:國外有種說法,PHP這一類程序員也可以算作是前端)

  繁重的服務(wù)端的計算和處理

  當涉及到大量的計算,Node.js 就不是最佳的解決方案。你肯定不希望使用 Node.js 建立一個斐波那契數(shù)的計算服務(wù)。一般情況下,任何 CPU密集型操作 會削弱掉 Node通過事件驅(qū)動, 異步 I/O 模型等等帶來的在吞吐量上的優(yōu)勢,因為當線程被非異步的高計算量占用時任何傳入的請求將被阻塞。

  正如前面所說,Node.js 是單線程的,只使用一個單一的CPU核心。至于,涉及到服務(wù)器上多核并發(fā)處理,Node 的核心團隊已經(jīng)使用 cluster 模塊的形式在這一方面做了一些工作 (參考:http://nodejs.org/api/cluster.html)。當然,您也可以很容易的通過 nginx 的反向代理運行多個 Node.js 的服務(wù)器實例來避免單一線程阻塞的問題。

  關(guān)于集群(clustering) ,你應該將所有繁重的計算轉(zhuǎn)移到更合適的語言寫的后臺進程來處理,同時讓他們通過像 RabbitMQ 那樣通過消息隊列服務(wù)器來進行通信。

  即使你的后臺處理可能最初運行在同一臺服務(wù)器上時看不出什么優(yōu)點,但是這樣的做法具有非常高的可擴展性的潛力。這些后臺處理服務(wù)可以容易地分割出去,作為單獨的 worker 服務(wù)器,而不需要配置入口 web服務(wù)器的負載。

  當然,你也可以在其他語言平臺上用同樣的方法,但使用 Node.js 你可以得到很高的吞吐量,每個請求都作為一個小任務(wù)非常迅速和高效地處理,這一點我們已經(jīng)討論過了。

  結(jié)論

  我們已經(jīng)從理論到實踐討論過 Node.js 了,從它的目標和野心,到其優(yōu)點和缺點。在 Node.js 的開發(fā)中99%的問題是由誤用阻塞操作而造成的。

  請記?。篘ode.js 從來不是用于解決大規(guī)模計算問題而創(chuàng)建的。它的出現(xiàn)是為了解決大規(guī)模I/O 的問題,并且在這一點上做的非常好

  綜上,如果你項目需求中不包含CPU密集型操作,也不需要訪問任何阻塞的資源,那么你就可以利用的 Node.js 的優(yōu)點,盡情的享受快速、可擴展的網(wǎng)絡(luò)應用。

  原文鏈接: toptal   翻譯: 伯樂在線 - Lellansin