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):
- node snmp SNMP modul (natív, teljesen javascriptben!)
- hook.io event emitter (pl. IRC botot írni benne nagyon egyszerű)
- node-reverse-proxy http reverse proxy
Hogyan tovább?
- Introduction to Node.js with Ryan Dahl (a fő fejlesztő előadása)