Ha a Realtime hálózati grafikonok előadásom slidejait keresed a HBONE 2012 -es workshopról jó helyen jársz.

Sajnos egy projektor probléma teljesen megzavart, így lehetlen volt megérteni a mondanivalómat. Ezt próbálom itt helyre tenni. :)

c3 noc demo

A c3netmon noc került demoként bemutatásra. (Ez a 2011-es Chaos Communications Conference-re készült.)

Ennek a felépítése a következő:

  • frontend
  • backend
  • memcached

Működése

A backend egyszerű (és elég ügyetlen) shell scriptek rendszeres indításával gyűjt metrikákat. Az adatok memcache-be kerülnek.

A frontend tartja a kapcsolatot a kliensekkel (böngésző) azokkal az adatokkal dolgozik, amit a backend a memcache-be tett. Az oldal betöltésekor az eddig gyűjtött adatokat a kliens letölti. Egy websocket kapcsolat is kiépül és a szükséges adatok ezen keresztül érkeznek meg a klienshez. Amint friss adat érhető el (a backend gyűjtési intervallumától függ, alapból pár másodperc) a frontend a friss adatokat küldi a kliensnek. A kliens javascript használatával az új és már jelenlevő adatok alapján frissíti a grafikont.

Mi ez a node.js és miért jó?

A Node.js a Google chrome-ban használt v8 javascript engine-re épül. Úgy tervezték, hogy szándékosan a blokkolódó működést nem támogatja. Azért nem, mert ez nem hatékony. Helyette egy non-blocking callback-re épülő rendszert hoztak létre. Hasonló even-loop modellt használ több nagy teljesítményű webszerver pl. az nginx is.

Gyakorlatilag ez egy javascriptet futattó virtuális gép (egy VM) ezt szokás szerver oldali javascriptnek is hívni.

A Nodejs két legfőbb tulajdonsága a nagy teljesítmény és a szerver működés (pl. TCP, HTTP). Ennek használatával könnyen lehet több helyről származó adatot tényleg realtime módon közreadni.

Néhány érdekes vagy hasznos modul (nagyon sok modul létezik):

Hogyan tovább?