Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.

Nodejs는 real-time application에 적합하고, event-driven, non-blocking I/O 를 사용한다.


Resolve 1.  real-time application



고객들의 요구 사항이 높아지면서 기술적으로 실시간(real-time) 을 구현해야 한다. 대표적으로 네이트온 웹 메신저, 페이스북 채팅 등이 있다. Nodejs는 real-time application이 필요로 할 때 대응이 빠르다. Socket.io module를 이용하면 간단하게 구현이 가능 하다. non-blocking I/O 이기 때문이다. Java 기반으로 구현을 해야할경우 Comet, Dwr 등을 이용해야 하는데 많은 시간이 요구 되고 난이도가 있는 편이다. 


Resolve 2.  event-driven



실행 절차

a:  Client는 Server로 요청 한다. - event 발생

b:  Server는 Client로 응답 한다. - callback


구조


server.on(event, callback);



사용 예.


server.on('request', function(request, response){

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

        res.write('Hello World');

        res.end();

});



결론

Nodejs는 요청이 들어올때마다 Thread를 생성 하는 서버와는 다르게 단일 Thread이고 요청이 들어올때 마다 Event를 발생 시키고 요구 조건이 다 처리가 되면 Callback으로 응답을 한다. 이와 같은 방식은 메모리를 효율적으로 사용 하고, 많은 동시 접속자를 수용 할 수 있다.


Resolve 3.  non-blocking I/O



Nodejs는 요청이 들어올때마다 Event를 발생시킨다. blocking 방식과는 다르게 계속 추가적인 Event를 수용할 수 있다.


'Nodejs' 카테고리의 다른 글

Nodejs Query IN 절 이용 하기  (0) 2013.02.18
Debian Linux에서 Eclipse, Nodejs 연동하기  (0) 2013.02.16
Nodejs 설치 하기  (0) 2013.02.10
Html을 Jade로 변환하기  (0) 2013.02.06
Nodejs의 의미와 자바의 대안  (0) 2013.02.05

+ Recent posts