国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

淺析Node.js:一個“編碼就緒”服務器

開發 前端
Node是一個服務器端JavaScript解釋器,它將改變服務器應該如何工作的概念。它的目標是幫助程序員構建高度可伸縮的應用程序,編寫能夠處理數萬條同時連接到一個(只有一個)物理機的連接代碼

Node是一個服務器端JavaScript解釋器,它將改變服務器應該如何工作的概念。它的目標是幫助程序員構建高度可伸縮的應用程序,編寫能夠處理數萬條同時連接到一個(只有一個)物理機的連接代碼。本文探究了Node.js能解決哪些問題,它如何工作,如何運行一個簡單應用程序,***,Node何時是以及何時不是一個好的解決方案。

Node旨在解決什么問題?

Node公開宣稱的目標是“旨在提供一種簡單的構建可伸縮網絡程序的方法”。當前的服務器程序有什么問題?我們來做個數學題。在Java和PHP這類語言中,每個連接都會生成一個新線程,每個新線程可能需要 2 MB 配套內存。在一個擁有8GB RAM的系統上,理論上***的并發連接數量是4,000個用戶。隨著您的客戶端基礎的增長,您希望您的web應用程序支持更多用戶,這樣,您必須添加更多服務器。當然,這會增加業務成本,尤其是服務器成本、運輸成本和人工成本。除這些成本上升外,還有一個技術問題:用戶可能針對每個請求使用不同的服務器,因此,任何共享資源都必須在所有服務器之間共享。例如,在Java中,靜態變量和緩存需要在每個服務器上的JVMs之間共享。這就是整個web應用程序架構中的瓶頸:一個服務器能夠處理的并發連接的***數量。

Node解決這個問題的方法是:更改連接連接到服務器的方式。每個連接都創建一個進程,該進程不需要配套內存塊,而不是為每個連接生成一個新的OS線程(并向其分配一些配套內存)。Node聲稱它絕不會死鎖,因為它根本不允許使用鎖,它不會直接阻塞I/O調用。Node還宣稱,運行它的服務器能支持數萬個并發連接。事實上,Node通過將整個系統中的瓶頸從***連接數量更改到單個系統的流量來改變服務器面貌。

現在您有了一個能處理數萬條并發連接的程序,那么您能通過Node實際構建什么呢?如果您有一個web應用程序需要處理這么多連接,那將是一件很 “恐怖” 的事!那是一種“如果您有這個問題,那么它根本不是問題” 的問題。在回答上面的問題之前,我們先看看Node如何工作以及它被設計的如何運行。

Node肯定不是什么

沒錯,Node是一個服務器程序。但是,它肯定不像Apache或Tomcat。那些服務器是獨立服務器產品,可以立即安裝并部署應用程序。通過這些產品,您可以在一分鐘內啟動并運行一個服務器。Node肯定不是這種產品。Apache能添加一個PHP模塊來允許開發人員創建動態web頁,使用Tomcat的程序員能部署JSPs來創建動態web頁。Node肯定不是這種類型。

在Node的早期階段(當前是version 0.4.6),它還不是一個“運行就緒”的服務器程序,您還不能安裝它,向其中放置文件,擁有一個功能齊全的web服務器。即使是要實現web服務器在安裝完成后啟動并運行這個基本功能,也還需要做大量工作。

Node如何工作

Node本身運行V8 JavaScript。等等,服務器上的JavaScript?沒錯,您沒有看錯。服務器端JavaScript 是一個相對較新的概念,這個概念是大約兩年前在developerWorks上討論Aptana Jaxer產品時提到的(參見參考資料)。盡管Jaxer一直沒有真正流行,但這個理念本身并不是遙不可及的 — 為何不能在服務器上使用客戶機上使用的編程語言?

什么使 V8?V8 JavaScript引擎是Google用于他們的Chrome瀏覽器的底層JavaScript引擎。很少有人考慮JavaScript在客戶機上實際做了些什么?實際上,JavaScript引擎負責解釋并執行代碼。使用V8,Google創建了一個以C++編寫的超快解釋器,該解釋器擁有另一個獨特特征;您可以下載該引擎并將其嵌入任何 應用程序。它不僅限于在一個瀏覽器中運行。因此,Node實際上使用Google編寫的V8 JavaScript引擎并將其重建為在服務器上使用。太***了!既然已經有一個不錯的解決方案可用,為何還要創建一種新語言呢?

Node對什么有好處?

到此為止,應該能夠回答“Node是什么” 這個問題了,但您可能還不清楚什么時候應該使用它。這是一個需要提出的重要問題,因為Node對有一些東西有好處,但相反,對另一些東西而言,目前Node可能不是一個好的解決方案。您需要小心決定何時使用Node,因為在錯誤的情況下使用它可能會導致一個多余編碼的 LOT。

正如您此前所看到的,Node非常適合以下情況:您預計可能有很高的流量,而在響應客戶端之前服務器端邏輯和處理所需不一定是巨大的。Node表現出眾的典型示例包括:

RESTful API

提供RESTful API的web服務接收幾個參數,解析它們,組合一個響應,并返回一個響應(通常是較少的文本)給用戶。這是適合Node的理想情況,因為您可以構建它來處理數萬條連接。它還不需要大量邏輯;它只是從一個數據庫查找一些值并組合一個響應。由于響應是少量文本,入站請求時少量文本,因此流量不高,一臺機器甚至也可以處理最繁忙的公司的API需求。

Twitter隊列

想像一下像Twitter這樣的公司,它必須接收tweets并將其寫入一個數據庫。實際上,每秒幾乎有數千條 tweets 達到,數據庫不可能及時處理高峰時段需要的寫入數量。Node成為這個問題的解決方案的重要一環。如您所見,Node能處理數萬條入站tweets。它能迅速輕松地將它們寫入一個內存排隊機制(例如 memcached),另一個單獨進程可以從那里將它們寫入數據庫。Node在這里的角色是迅速收集tweet并將這個信息傳遞給另一個負責寫入的進程。想象一下另一種設計 — 一個常規 PHP 服務器自己試圖處理對數據庫的寫入 — 每個tweet將在寫入數據庫時導致一個短暫的延遲,這是因為數據庫調用正在阻塞通道。由于數據庫延遲,一臺這樣設計的機器每秒可能只能處理2000條入站tweets。每秒100萬條tweets需要500個服務器。相反,Node能處理每個連接而不會阻塞通道,從而能捕獲盡可能多的tweets。一個能處理50,000 條tweets的Node機器只需要20個服務器。

映像文件服務器

一個擁有大型分布式網站的公司(比如 Facebook 或 Flickr)可能會決定將所有機器只用于服務映像。Node將是這個問題的一個不錯的解決方案,因為該公司能使用它編寫一個簡單的文件檢索器,然后處理數萬條連接。Node將查找映像文件,返回文件或一個404錯誤,然后什么也不用做。這種設置將允許這類分布式網站減少它們服務映像、.js和 .css文件等靜態文件所需的服務器數量。

它對什么有壞處?

當然,在某些情況下,Node并非理想選擇。下面是Node不擅長的領域:

動態創建的頁

目前,Node沒有提供一種默認方法來創建動態頁。例如,使用JavaServer Pages (JSP) 技術時,可以創建一個在 這樣的JSP代碼段中包含循環的index.jsp 頁。Node不支持這類動態的、HTML驅動的頁面。同樣,Node不太適合作為Apache和Tomcat這樣的網頁服務器。因此,如果您想在Node中提供這樣一個服務器端解決方案,必須自己編寫整個解決方案。PHP程序員不想在每次部署web應用程序時都編寫一個針對Apache的PHP轉換器,當目前為止,這正是Node要求您做的。

關系數據庫重型應用程序

Node的目的是快速、異步和非阻塞。數據庫并不一定分享這些目標。它們是同步和阻塞的,因為讀寫時對數據庫的調用在結果生成之前將一直阻塞通道。因此,一個每個請求都需要大量數據庫調用、大量讀取、大量寫入的web應用程序非常不適合Node,這是因為關系數據庫本身就能抵銷Node的眾多優勢。(新的NoSQL數據庫更適合Node,不過那完全是另一個主題了。)

結語

問題是“什么是Node.js?” 應該已經得到解答。閱讀本文之后,您應該能通過幾個清晰簡潔的句子回答這個問題。如果這樣,那么您已經走到了許多編碼員和程序員的前面。我和許多人都談論過Node,但它們對 Node究竟是什么一直很迷惑??梢岳斫猓麄兙哂械氖茿pache的思維方式 — 服務器是一個應用程序,將HTML文件放入其中,一切就會正常運轉。而Node是目的驅動的。它是一個軟件程序,使用JavaScript來允許程序員輕松快速地創建快速、可伸縮的web服務器。Apache是運行就緒的,而ode是編碼就緒的。

Node完成了它提供高度可伸縮服務器的目標。它并不分配一個 “每個連接一個線程” 模型,而是使用一個 “每個連接一個流程” 模型,只創建每個連接需要的內存。它使用Google的一個非常快速的JavaScript引擎:V8引擎。它使用一個事件驅動設計來保持代碼最小且易于閱讀。所有這些因素促成了Node的理想目標 — 編寫一個高度可伸縮的解決方案變得比較容易。

與理解Node是什么同樣重要的是,理解它不是什么。Node并不是Apache的一個替代品,后者旨在使PHP web應用程序更容易伸縮。事實確實如此。在Node的這個初始階段,大量程序員使用它的可能性不大,但在它能發揮作用的場景中,它的表現非常好。

將來應該期望從Node得到什么呢?這也許是本文引出的最重要的問題。既然您知道了它現在的作用,您應該會想知道它下一步將做什么。在接下來的一年中,我期待著Node提供與現有的第三方支持庫更好地集成。現在,許多第三方程序員已經研發了用于Node的插件,包括添加文件服務器支持和MySQL支持。希望Node開始將它們集成到其核心功能中。***,我還希望 Node支持某種動態頁面模塊,這樣,您就可以在HTML文件中執行在PHP和JSP(也許是一個NSP,一個Node服務器頁)中所做的操作。***,希望有一天會出現一個 “部署就緒” 的Node服務器,可以下載和安裝,只需將您的HTML文件放到其中,就像使用Apache或Tomcat那樣。Node現在還處于初始階段,但它發展得很快,可能不久就會出現在您的視野中。

注:本文內容是根據developerWorks作者Mike Abernethy的文章整理而來的,在Michael Abernethy的13年技術生涯中,他與各種不同的技術和客戶打交道。他目前是一名自由程序員,擅長Java高可用性和jQuery。他現在專注于富Internet 應用程序,試圖同時實現應用程序的復雜性和簡單性。他空閑時常常去打高爾夫球,更確切地說,是在灌木叢中尋找他打飛的高爾夫球。

【編輯推薦】

  1. Node.js 0.4.8發布 附下載
  2. 詳解JavaScript DOM中的Node節點
  3. ***的JavaScript框架間對比信息表
  4. JavaScript重構深入剖析
  5. 驚動大神的JavaScript:在Web上運行Linux
責任編輯:陳貽新 來源: developerWorks
相關推薦

2022-06-05 13:52:32

Node.jsDNS 的原理DNS 服務器

2020-10-29 16:00:03

Node.jsweb前端

2020-10-12 08:06:28

HTTP 服務器證書

2019-03-15 09:34:18

靜態資源服務器命令前端

2019-02-15 10:49:37

Node.jsweb服務器

2011-10-25 09:28:30

Node.js

2020-08-07 10:40:56

Node.jsexpress前端

2021-09-02 10:49:25

Node.jsPHP服務器開發

2011-07-26 11:07:08

JavaScript

2011-09-08 13:53:31

Node.js

2014-04-21 14:56:45

NodeJSOAuth2服務器

2025-07-11 08:09:07

Node.jsAPI權限

2011-09-08 10:21:50

Node.js

2011-10-19 14:38:46

Node.js

2020-08-24 08:07:32

Node.js文件函數

2023-04-07 09:07:11

2022-10-18 18:43:40

Node.js低代碼

2013-11-01 09:34:56

Node.js技術

2019-04-15 11:00:46

框架Node.JS開發

2015-03-10 10:59:18

Node.js開發指南基礎介紹
點贊
收藏

51CTO技術棧公眾號

北条麻妃久久精品| 国产视频不卡| 九九视频精品全部免费播放| 精品一区二区日本| 欧美日韩情趣电影| 波多野结衣亚洲一区| 999久久久国产精品| 欧美性猛片xxxx免费看久爱| 国产精品巨作av| 狠狠色噜噜狠狠色综合久| 亚洲精品高清视频在线观看| 日本久久二区| 亚洲精品美女久久7777777| 欧美综合久久久| 欧美日韩老妇| 三上悠亚在线一区二区| 亚洲福利在线看| 亚洲午夜激情av| 日本午夜精品视频在线观看| 丁香花在线高清完整版视频 | eeuss鲁片一区二区三区| 欧美日韩精品久久| 日韩av影视在线| 一区二区三区久久久| 久久99热国产| 日韩精品免费一区二区在线观看| 日韩精品在线观看视频| 日本一区二区三区www| 欧美亚洲综合在线| 亚洲国产影院| 四虎亚洲精品| 欧美日韩激情四射| 欧美xxxx做受欧美.88| 国产精品电影一区二区三区| 国产亚洲欧美日韩在线观看一区二区| 黄页视频在线免费观看| 999在线观看免费大全电视剧| 在线成人高清不卡| 国产一区高清在线| 日韩精品一区二区三区中文| 成人高清在线观看免费| 91丨九色丨国产| 亚洲国产日韩欧美综合久久| 99久久777色| 久久av电影| 国产在线看片| 国产毛片久久久久久国产毛片| 久久亚洲私人国产精品va| 亚洲色图20p| 欧美区亚洲区| 91www在线| 午夜激情在线观看视频| 91美女片黄在线观| 精品久久久影院| 91蜜桃免费观看视频| 红桃成人av在线播放| 三区四区在线视频| 成人午夜视频免费观看| 91av在线影院| 欧美色网站导航| 国产精品一区一区三区| 亚洲aa在线| 成人三级网址| 国产情侣av自拍| 99在线热播| 日韩中文理论片| 精品免费在线观看| 狠狠色综合播放一区二区| 丁香婷婷成人| 狠狠v欧美ⅴ日韩v亚洲v大胸| 色乱码一区二区三区熟女| 91黑丝在线观看| 欧美高清视频在线高清观看mv色露露十八 | 国产精品四虎| 久久福利一区二区| 国产精品福利久久久| 欧美精品vⅰdeose4hd| www.爱久久.com| 亚洲啊v在线观看| 欧美aaa视频| 污污网站在线| 成人免费在线视频播放| 国产欧美最新羞羞视频在线观看| 精品夜色国产国偷在线| 五月婷婷综合激情| 不卡的电视剧免费网站有什么| 中出一区二区| 4438五月综合| 成人video亚洲精品| 国产美女视频黄a视频免费| 国产精品久久久久婷婷| 在线观看亚洲区| 欧美性生交大片免费| 欧产日产国产精品视频| 黄网免费视频| 日韩av在线电影观看| 8x海外华人永久免费日韩内陆视频| 欧美精品久久一区| 国产精品麻豆久久久| 日韩高清不卡在线| 精品大片一区二区| aaaa欧美| 国产素人视频在线观看| 成年人视频在线| 男插女免费视频| 亚洲va男人天堂| 欧美第一黄网免费网站| 精品99久久久久久| 精品国产成人av| 久久综合色鬼综合色| 免费精品视频| 欧美艳星介绍134位艳星| 性欧美18一19sex性欧美| 激情福利在线| 又黄又免费的网站| 亚洲欧洲综合另类在线| 国语自产精品视频在线看一大j8 | 欧美激情另类| 欧美一区三区二区| 欧美一级二级三级| 黄色成年人视频在线观看| 女人和拘做爰正片视频| 欧美日韩破处视频| 韩国欧美一区二区| 在线观看国产一区二区| 国产清纯白嫩初高生在线观看91| 免费大片黄在线观看视频网站| 成人漫画网站免费| 成年人看的毛片| 日产中文字幕在线精品一区 | 精品一区电影| 奇米一区二区| 玛雅亚洲电影| 四季久久免费一区二区三区四区| 日韩av免费观影| 黄色三级电影网| 国产福利一区视频| 欧妇女乱妇女乱视频| 婷婷视频在线播放| 日韩精品成人一区二区在线观看| 成人羞羞视频免费| 成人有码在线播放| 国产美女主播一区| 国产精品久久久久影院日本| 欧美亚洲国产视频小说| 国产综合在线看| 欧美日本精品在线| 久久精品人人爽| www.亚洲人.com| 色777狠狠综合秋免鲁丝| 在线观看精品国产视频| 伊人一区二区三区久久精品| 亚洲国模精品私拍| 精品无码久久久久久国产| 亚洲成人网在线观看| 亚洲精品按摩视频| 亚洲黄色有码视频| 亚洲欧美日韩网| 亚洲桃花岛网站| 在线看日韩欧美| 久久九九全国免费精品观看| 久久国产精品免费视频| 久久国产精品电影| 亚洲91精品在线| 欧美中文字幕视频在线观看| 热久久免费国产视频| 国产精品极品美女粉嫩高清在线| 国产精品久久久久久一区二区| 国产日韩在线观看av| 3d动漫啪啪精品一区二区免费| 动漫3d精品一区二区三区| 久久99精品久久久久久久青青日本 | 久久99九九99精品| 日韩成人av影视| 美女视频网站黄色亚洲| 国产一区二区美女| 国产精品911| 久久先锋资源网| 中文字幕在线不卡国产视频| 自拍偷在线精品自拍偷无码专区| 亚洲欧美日韩人成在线播放| 精品久久久久久久久国产字幕| 欧洲精品一区二区| 日韩亚洲欧美高清| 亚洲人成电影网站色xx| 蜜臀久久99精品久久久无需会员 | 色影视在线观看| a篇片在线观看网站| 涩涩在线视频| 欧美精品三级在线| 尤物tv在线精品| 欧美ab在线视频| 三级影片在线观看欧美日韩一区二区| 久久99久久久欧美国产| 91蜜桃婷婷狠狠久久综合9色| 亚洲日韩欧美一区二区在线| 日韩欧美在线一区| 精品久久久久一区| 欧美成人亚洲成人| 成人免费午夜电影|