იოსებ ძმანაშვილი node.js

Post on 10-May-2015

305 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

სტუდენტური ჰაკათონი - cst.unihack.ge პრეზენტაცია იოსებ ძმანაშვილი - Node.JS http://www.youtube.com/watch?v=GO74oM2Fb4o uniHack hack@CST

TRANSCRIPT

NODE.JS INTROA Talk By Ioseb Dzmanashvili

@iosebi

Wednesday, December 25, 13

ABOUT ME

Software Architect at AzRy LLC

Assistant Professor at CST

Ph.D Student at Technical University of Georgia

V8 Contributor

Wednesday, December 25, 13

ABOUT NODE.JS

Released in 2009 by Ryan Dahl

Is built on V8 JavaScript Engine

Based on event-driven non-blocking I/O

Platform for fast and scalable network apps

Wednesday, December 25, 13

WHAT MAKES IT AWESOME?

Easy of use

Server side JavaScript

Active community

Repository of awesome modules

npm install [module name]

Wednesday, December 25, 13

SERIOUSLY? IS THAT ALL?

Wednesday, December 25, 13

WELL, NO

Built on V8 JavaScript engine

Node.js never blocks on I/O operations

You do not need to manage threads

No expensive context switching

No memory waste on execution stacks

Wednesday, December 25, 13

V8 ADVANTAGES

Fastest JavaScript runtime

No JIT, it compiles JavaScript into Assembler

Short(really short) garbage collector cycles

Great implementation of EcmaScript 5 and EcmaScript 6

Wednesday, December 25, 13

MAJOR BOTTLENECKS

I/O operations (Disk, RAM, Network)

Threaded concurrency

Wednesday, December 25, 13

I/O LATENCY

I/O CPU Cycles

L1-Cache 3

L2-Cache 14

RAM 250

Hard Disk 41.000.000

Network 240.000.000

Wednesday, December 25, 13

WHAT CONTRIBUTES TO LATENCY?

Wednesday, December 25, 13

TYPICAL CODE EXAMPLE

var query = "SELECT * FROM t";var result = db.query(query);

while(result.hasNext()) { print(result.next());}

db.free(result);

Wednesday, December 25, 13

NON BLOCKING EXAMPLE

var query = "SELECT * FROM t";

db.query(query, function(result) { while(result.hasNext()) { print(result.next()); }});

// do something here

Wednesday, December 25, 13

FILE I/O EXAMPLE

$file = fopen("file.txt", "r");

while(!feof($file)){ $line = fgets($file); // do something with line}

fclose($file);

Wednesday, December 25, 13

ASYNC I/O WITH FILES

function readFile(file) { var br = new BufferedReader(file, ...); br.on("error", function(error) { // handle error }).on("line", function(line) { // do something meaningful with line }).on("end", function() { // we are done }).read();}

readFile("/path/to/file");

Wednesday, December 25, 13

HOW NODE.JS SOLVES I/O PROBLEMS FOR ME?

Wednesday, December 25, 13

SINGLE THREADED

1Wednesday, December 25, 13

EVENT LOOP

SingleThread

Wednesday, December 25, 13

FS I/Ofn3();

PROGRAM EXECUTION FLOW

Program never waits for I/O operations completion

I/O is handled asynchronously

fn0();

fn1();

fn2();

DB I/O

FS I/O

NETWORK I/O

Wednesday, December 25, 13

DISADVANTAGES?

Wednesday, December 25, 13

IT IS JAVASCRIPT

Wednesday, December 25, 13

QUESTIONS?

Wednesday, December 25, 13

THANK YOU

Wednesday, December 25, 13

top related