inside node.js

Post on 18-Jun-2015

4.445 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

소스코드로 살펴보는 node.js의 구조와 성능 원리, 그리고 주의점

TRANSCRIPT

http://socialmetrics.co.kr/searchKeywordMap.html

http://www.google.com/trends/

http://blog.gopivotal.com/cloud-foundry-pivotal/products/future-proofing-your-apps-cloud-foundry-and-node-js

http://blog.gopivotal.com/cloud-foundry-pivotal/products/future-proofing-your-apps-cloud-foundry-and-node-js

C/C++ libraries

node bindings

standard libraries

application codes

javascript

C/C++

node

lib src

uv

cares

http_parser

openssl

V8

zlib

standardlibraries

nodebindings

zlib

event, non-block I/O

async DNS library

http message parser

cryptography

javascript engine

src/node.cc

node V8 libuv

매개변수에 따라V8 컨텍스트 생성및 표준 모듈 초기화

기본 루프 실행

메인 스크립트 실행hello world 출력

IOCP 이벤트 루프 시작

open

event loopV8 I/O threadfs

fs.open()

binding

Open()

ASYNC_CALLuv_fs_open()fs__open()SET_REQ_RESULT()

데이터 출력

uv_poll_ex()uv_process_reqs()req->cb()

listen

event loopV8 libuvnet

Server.listen()

binding

Listen()

uv_listen()

acceptex()

웹 브라우저 tcp 접속 시,

uv_process_tcp_accept_req()TCPWrap::OnConnection()

Server.on(‘connection’)

event loopV8 libuv

StreamWrap::ReadStart

binding

uv_tcp_read_start()

uv_process_tcp_read_req()uv_tcp_queue_read()WSARecv()

socket.on(‘end’)request.on(‘end’)

uv_read_start()

event loopV8 libuv

StreamWrap::WriteBuffer()

binding

uv_tcp_write()

다 전송 될 때 까지계속 전송 시도전송완료 후 노티

response.on(‘end’)

uv_write()

while

web browser http

페이지 요청

event loop

리스너 실행

무한 루프

묵묵부답…서비스 불가

웹 브라우저는계속 로딩만…

• 무한루프

top related