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 |