Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that...

20
Node.js Luis Ackermann 25. November 2014 Seminar: Open-Source-Softwareentwicklung HS2014, Universität Basel

Transcript of Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that...

Page 1: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Node.jsLuis Ackermann

25. November 2014

Seminar: Open-Source-Softwareentwicklung HS2014, Universität Basel

Page 2: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

JavaScript• Dynamic type-checking

• Wert bestimmt Datentyp, nicht Variable

• Ermöglicht sehr flexibles Entwickeln

• Weakly typed

• Funktionen sind typ-ungebunden

• Objekte lassen sich dynamisch erweitern

• Truthy & Falsy Variablen

Page 3: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Node.js

• JavaScript Laufzeit-Umgebung

• JIT-Kompilierung mit V8

• Single-threaded, easily scalable

Page 4: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Node.js

“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.org

Page 5: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Blocking I/O

Request Handler

Request Thread

Thread

Thread

Page 6: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Request Handler

Request Thread

Thread

Thread

Blocking I/O

Page 7: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Request Handler

Thread

Thread

ThreadRequest

Request

Blocking I/O

Page 8: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Request Handler

Thread

Thread

Thread

Response

Blocking I/O

Page 9: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Request Handler

Request Thread

Thread

Thread

Blocking I/O

Page 10: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Request Handler

Thread

Thread

Thread

Request

Request

🕑

🕑

Blocking I/O

Page 11: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Non-blocking I/O

Event Loop

Request

Request

Request

Page 12: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Non-blocking I/O

Event Loop IO

IO

IORequest

Request

Request

Page 13: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Non-blocking I/O

Event Loop IO

IO

IO

Response

Page 14: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Non-blocking I/O

Event Loop IO

IO

Page 15: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Non-blocking I/O

Event Loop IO

IO

IO

Request

Request

Page 16: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Non-blocking I/O

Event Loop IO

IO

IO

IO

IO

Request

Request

Page 17: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Non-blocking I/O

Event Loop IO

IO

IO

IO

IO

Request

Request

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

IO

Page 18: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Quelle: loadimpact.com

⦿ Concurrent Users ⦿ Response Time⦿ CPU Usage

Page 19: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Beispiel

Page 20: Node - ai.dmi.unibas.ch · Node.js “Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications

Danke für die Aufmerksamkeit