Node의 목적은 확장가능한 네트웤 프로그램들의 구축을 쉽게 제공하는것이다.


아래의 "Hello Word" 웹 서버 예제어서, 많은 클라이언트 연결들은 동시에 처리된다.

Node를 operating system이라 말한다. 새로운 connection이 생성시 통보되고, sleep 상태가 된다. 만약 새로운 connetion이 생성되면, callback으로 실행된다.

각각의 connection은 단지 작은 싸이즈의 힙이 할당된다.


var http = require('http');

http.createServer(function (req, res) {

  res.writeHead(200, {'Content-Type': 'text/plain'});

  res.end('Hello World\n');

}).listen(1337, "127.0.0.1");

console.log('Server running at http://127.0.0.1:1337/');


이점은 오늘날 흔히 사용되는 다른 concurrency model과 다른점이다.

Thread-based 네트워킹은 비효일적이며 사용하기에 어렵다.

Node는 각각의 connection에 대해 2MB thread stacks을 할당하는 시스템에 비해서 높은 부하에서 훨씬 좋은 메모리 효율성을 보여줄 것이다.

Node에는 락이 없기 때문에 Node 사용자들은 프로세스 dead-locking 걱정에서 자유로울 것이다. 

Node에는 직접 IO 작업을 수행하는 함수가 거의 없기 때문에 프로세스들은 블록 당하지 않는다.

블록이 없기 때문에 프로그래머들은 시스템을 빨리 개발 할 수 있습니다.


Node는 Ruby의 EventMachine이나 Python의 Twisted와 같은 시스템들의 영향을 받았고 유사하다.



원문.

http://nodejs.org/about/ 

by SJ.. 2013. 2. 26. 18:30
| 1 |