Node.JS 1: Úvod do Node.JS

Node.JS je open-source multiplatformní javascriptové run-time prostředí, které vykonává (překvapivě javascriptový) kód na serverové straně (server-side). Node.JS je postaveno na V8 Javascriptovém enginu (od Google Chromu). Využívá událostmi řízenou architekturu (EDA - z anglického Event driven architecture) a non-blocking I/O model, díky čemuž je tak efektivní.

EDA - Event-driven architecture

Česky událostmi řízená architektura. Vše si můžeme porovnat na :

PHP

  • představitel dávkově orinetované architektury
  • program obdrží jeden úkol, splní ho a vykonává další

Node.JS

  • představitel EDA - architektury řízené událostmi
  • může současně otvírat soubor a zároveň s ním pracovat (asynchronně)

Příklad

Představte si, že se usadíte v restauraci, dostanete ukrutnou chuť na pečenou husu. Postarší pán u vedlejšího stolu ale také dostal (a opět ukrutnou:-) ) chuť na špagety:

Dávkově orientovaná architektura

Bude-li se číšník chovat na základě dávkově orientované architektury: Zeptá se prvního zákazníka. Starší muž si objedná špagety. Číšník objednávku nahlásí kuchaři a čeká, až budou špagety hotové. Přinese je na stůl a zeptá se Vás, co Vám může nabídnout. Uuuuuuuuuuuuuuffff! To byla doba!

Událostmi řízená architektura EDA

Bude-li se číšník chovat na základě architektury řízené událsotmi (EDA): Zeptá se chlapíka, který usedl ke stolu jako první. Na objednaných špagetách začne po vyřízení pracovat kuchař (=systém), číšník se mezitím vypraví k Vám. Tady to teda frčí. Díky za pohotovost, Pohlreichu!

Pokud bychom to chtěli převést do programu:

PHP - Dávkově orientovaná architektura

  1. Server pošle požadavek (request) o soubor (file) ze souborového systému (file system).
  2. Server počká, dokud systém neotevře a nepřečte soubor
  3. Server vrátí data klientovi.
  4. Server pošle požadavek na další soubor.

Node.JS - EDA

  1. Server pošle požadavek o soubor ze souborového systému
  2. Server pošle požadavek na další soubor
  3. Když systém otevře a přečte soubor, server vrátí dotaz klientovi

Multi-threadový nebo Single threadový

PHP a další back-endové frameworky pracují na multithreadovém přístupu (doslovně přeloženo více-vláknovém). Ten pracuje na principu multitaskingu a vykonává několik úkolů zároveň. To bohužel vyžaduje hodně paměti a zdrojů procesoru. Oproti tomu Node.JS představuje single-threadový přístup (ano, mohli bychom jej nazvat jako jeno-vláknový). Využívá Systémových událostí (System Events) k dosažení stejného výsledku pomocí non-blocking, asynchronního modelu.