NODE.
JS
Ujval Joshi
BRIEF
Server Side Javascript
Built on googles V8 javascript engine
Event Driven and Non blocking IO
Build on C/C++
MOTIVATION
I/O needs to be done differently
var query = db.select(select * from T)
IN MOST CASES WE DO NOTHING
IO LATENCY
L1- 3 cycles
L2 -14 cycles
RAM - 250 cycles
DISK - 41,000,000 cycles
NETWORK - 240,000,000 cycles
BETTER SOFTWARE CAN DO BETTER
WEB SERVERS
WEB SERVER
Client
Process
Server
Process
Resources
1. Client
send
request
2. Server
Process
Request
3. Server
Send
Response
4. Client
Process
Response
WEB SERVER
Client
Process
Server
Process
Resources
1. Client
send
request
2. Server
Process
Request
3. Server
Send
Response
4. Client
Process
Response
APACHE VS NGINX
APACHE VS NGINX
Concurrent connection vs Req/sec
APACHE VS NGINX
Concurrent connection vs Memory
WHATS THE DIFFERENCE?
APACHE use thread per connection
NGINX use event loop
Context switching cost CPU time
Each thread require some memory
DOCTORS SURGERY VS FAST FOOD
DELIVERY
CODE LIKE THIS
Either block the entire process or create multiple execution stack
var query = db.select(select * from T)
// use the result
WE CAN ALSO DO LIKE THIS
Allow program to return to event loop immediately
var result =(select *, function(result) {
// use the result
});
WHY JAVASCRIPT?
Javascript is designed specically to be used
with event loop
Anonymous Functions and closures.
I/O through Event call backs
Only one call back at a time
AGAIN NODE.JS
Offers event driven and non blocking I/O
model
Created by Ryan Dahl in 2009
Current version is 0.10.25
DEMO
WHEN TO USE NODE
Realtime applications
Data Intensive Application
FRAMEWORKS
Express.js
Sails
EXPRESS.JS
DEMO
SUMMERY
THE GOOD PART
Fast and scalable
Great community
All javascript
BAD PART
CPU intensive tasks
Learning curve
THANKS
Get in touch
twitter: @ujvaljoshi
email: [email protected]