999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Node.js服務器技術初探

2014-06-20 13:35:02駱文亮
無線互聯科技 2014年3期

駱文亮

摘 要:通過對Node.js技術的簡介,引出Node.js的基本概念、功能和它能解決的問題以及Node.js的應用場景。

關鍵詞:Java;JSON;Javascript

1 引言

從2009年Node.js的誕生至今,已有近5年時間,其成長速度令人咂舌。國外大量的社區對Node.js的前景充分肯定,各種實際應用層出不窮。而國內這方面發展相對緩慢,Node.js中文社區也活躍著很多開發者。本文通過對Node.js的介紹,提出Node.js的基本概念、功能和實際應用場合。希望對開發人員有所幫助。

2 Node.js簡介

2.1 Google V8 JavaScript引擎

Google公司著名的瀏覽器Chrome瀏覽器就是基于Google V8 JavaScript引擎的高速瀏覽器。V8是由丹麥Google開發的開源JavaScript引擎。V8在執行之前將JavaScript編譯成了機器碼,而非位元組碼或是直譯它,以此提升效能。更進一步,使用了如內聯緩存(inline caching)等方法來提高性能。有了這些功能,JavaScript程序與V8引擎的速度媲美二進制編譯。

為了縮短由垃圾收集造成的停頓,V8使用stop-the-world, generational, accurate的垃圾收集器。在執行回收之時會暫時中斷程序的執行,而且只處理物件堆疊。還會收集內存內所有物件的指標,可以避免內存溢位的情況。

2.2 Node.js基本概念

Node.js是服務器端的JavaScript運行環境,它具有無阻塞(non-blocking)和事件驅動(event-driven)等的特色,Node.js采用V8引擎,同樣,Node.js實現了類似Apache和 nginx的web服務,讓你可以通過它來搭建基于JavaScript的 Web App。

Node.js是一個可以快速構建網絡服務及應用的平臺,它的構建是基于Chrome's JavaScript runtime,它可以很好地工作與非瀏覽器環境。總之,Node.js是一個脫離了瀏覽器的Javascript。

3 Node.js功能

3.1 Node.js解決的問題

在很多情況下,服務器端的性能瓶頸主要在于大量的數據請求讓服務器疲于應付,造成大量的阻塞。Node.JS的誕生就是用來解決服務端阻塞問題。例如,當客戶端通過一句查詢語句來查詢一些信息時,程序進程往往只是在等待結果的返回,浪費了大量的時間不說,還這就造成了進程的阻塞。在對于高并發,I/O密集型的WebAPP中,一方面服務器讓進程很長時間處于等待狀態,另一方面為了應付新的請求不斷的增加新的進程。這樣的浪費會導致系統的實際性能遠遠小于它能夠支撐性能,這個就是系統的瓶頸,而且這樣的系統也特別容易被黑客利用慢鏈接攻擊。

3.2 Node.js解決問題的基本思路

Node.js解決阻塞問題的思路是,建立一種事件機制,發起查詢請求之后,立即將進程交出,當數據返回后觸發事件,再繼續處理數據。

要達到上述目的,需要語言能夠提供一套高效的異步事件調度機制。而主要用于處理瀏覽器端的各種交互事件的JavaScript相對于其他語言,至少有兩個關鍵點特別適合完成這個任務:

1)JavaScript是一種函數式編程語言,函數編程語言最重要的數學基礎是λ演算(lambda calculus)——即函數可以接受函數當作輸入(參數)和輸出(返回值)。

2)JavaScript支持“閉包”。在復雜的應用中,一定會遇到這類場景。即在函數運行時需要訪問函數定義時的上下文數據。而在異步編程中,函數的定義和運行又分處不同的時間段,那么保持上下文的問題變得更加突出。JavaScript支持的“閉包”能夠較好地處理這個問題。

4 Node.js應用場景

4.1 I/O密集型

在I/O密集型的應用場景中,Node,js的并行I/O能力,能夠非常有效地利用的硬件資源,從而提供更多好的服務。I/O密集的優勢主要在于Node利用事件循環的處理能力,而不是啟動每一個線程為每一個請求服務,資源占用極少。

4.2 不擅長CPU密集型

最顯而易見的情況就是是那種CPU使用率高同時I/O操作小的。所以如果你打算寫一個視頻編碼軟件,人工智能軟件或者類似的CPU使用率高的軟件,請不要用node.js。

4.3 分布式應用

淘寶的數據平臺是國內對Node的分布式應用是一個典型的例子。分布式應用意味著對可伸縮性的要求非常高。數據平臺通常要在一個數據庫集群中去尋找需要的數據。這個案例其實也是高效利用并行I/O的例子。Node高效利用并行I/O的過程,也是高效使用數據庫的過程。對于Node,這個行為只是一次普通的I/O。對于數據庫而言,卻是一次復雜的計算,所以也是進而充分壓榨硬件資源的過程。

5 結束語

從本文可以看出,Node完成了它提供高度可伸縮服務器的目標。它使用了Google的一個非常快速的JavaScript引擎,即V8引擎。它使用一個事件驅動設計來保持代碼最小且易于閱讀。所有這些因素促成了Node的理想目標,即編寫一個高度可伸縮的解決方案變得比較容易。

[參考文獻]

[1]Mike Cantelon,TJ Holowaychuk.Node.js in Action 2011.

[2]http://limu.iteye.com/blog/1013223.,2013-01-17.

[3]http://cnodejs.org/topic/4f97d5b8407edba21.2013-04-23.

[4]樸靈.深入淺出Node.js.人民郵電出版社.

主站蜘蛛池模板: 99热这里都是国产精品| 一区二区三区四区在线| 成人午夜视频免费看欧美| 亚洲日本在线免费观看| 无码精品福利一区二区三区| 91 九色视频丝袜| 日韩欧美成人高清在线观看| 久久精品aⅴ无码中文字幕| 99久久精品国产自免费| 久久国产精品嫖妓| 浮力影院国产第一页| 国产精品视频3p| 中字无码精油按摩中出视频| 国产精欧美一区二区三区| 国产免费a级片| 精品久久久久久久久久久| 亚洲AV无码乱码在线观看裸奔 | 久久精品国产91久久综合麻豆自制 | 四虎影视国产精品| 在线无码九区| 久久精品一卡日本电影| 国产精品无码AV中文| 真实国产乱子伦高清| 欧美亚洲香蕉| 女人av社区男人的天堂| 伊人欧美在线| 亚洲国产黄色| 欧美va亚洲va香蕉在线| 999精品视频在线| 国内嫩模私拍精品视频| 国产精品久线在线观看| 天天综合网色中文字幕| 不卡国产视频第一页| 国产成人精品18| 久久久久88色偷偷| 天天综合网色| 在线观看欧美国产| 18禁影院亚洲专区| 亚洲男人的天堂在线观看| 色综合中文综合网| 亚洲午夜片| 超碰aⅴ人人做人人爽欧美 | 好久久免费视频高清| 国产精品私拍在线爆乳| 在线视频精品一区| 一本一道波多野结衣av黑人在线| 国产一级做美女做受视频| 国产综合在线观看视频| 久久久久免费精品国产| 人人看人人鲁狠狠高清| 又爽又大又黄a级毛片在线视频| 亚洲欧美日韩成人在线| 亚洲精品日产AⅤ| 老司机午夜精品视频你懂的| 人妻精品全国免费视频| 日本午夜视频在线观看| 中文字幕 欧美日韩| 99re视频在线| 成人在线不卡| 国产亚洲欧美日韩在线一区二区三区| 成年人视频一区二区| 女人毛片a级大学毛片免费| 欧美国产日韩在线| 亚洲中文在线看视频一区| 四虎影视永久在线精品| 无码福利日韩神码福利片| 欧美笫一页| 综合色88| a级毛片网| 女人毛片a级大学毛片免费 | 国产区在线看| 亚洲中文久久精品无玛| 美女国内精品自产拍在线播放| 一区二区偷拍美女撒尿视频| 亚洲国产欧美自拍| 色爽网免费视频| 精品综合久久久久久97超人| 激情成人综合网| 一级毛片在线播放免费观看| 国产99在线观看| 欧美成人h精品网站| 国产一级裸网站|