2014-11-03 53 views
-1

假設你有下面的代碼:的NodeJS - 它是如何處理的請求

var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    //Computations that takes one millisecond 
    ............ 
    res.end('Hello World\n'); 
}).listen(8124, "127.0.0.1"); 

問題:

  1. 威爾節點處理,在平行的回調?
  2. 如果我們每毫秒發送一個請求(假設同時發送3個請求),會發生什麼?
  3. 如果我們每秒發送150 000個請求會發生什麼?
+0

你有代碼,爲什麼不寫你描述和看到的測試用例?節點是單線程和異步的,所以它不會並行處理請求。如果你發送多個請求,他們將不得不等待先前的請求完成 – 2014-11-03 13:44:10

+0

@LcLk,這是理解Node的核心元素。此外*它如何工作*我想知道*爲什麼它以這種方式工作*。 – 2014-11-03 14:56:57

+0

你最好的選擇是閱讀一些[文章](http://css.dzone.com/articles/quick-introduction-how-nodejs),甚至可以看看[source](https://github.com/joyent /節點)。它以這種方式工作,因爲基於異步事件的服務器比多線程處理速度更快,開銷更少,而且通常負載平衡是通過一些反向代理(如指向多個服務器的nginx或apache)完成的。 – 2014-11-03 15:05:26

回答

2

儘管我是nodejs的新手,但我會嘗試給出一些建議。

恕我直言,節點不處理任何並行。它是單線程的,意味着只有1個進程,1個線程,1個CPU。他所有的權力都是通過使用回調函數以非阻塞的方式處理的。這使節點保持快速而沒有多線程的複雜性。

如果單個服務器的NodeJS是不夠的,你的巨大傳入的請求,認爲集羣,以充分利用多核系統的:http://nodejs.org/api/cluster.html

不僅僅是谷歌。有很多關於這個話題的文章。