Turbó fokozat. nginx, Redis, Node.js



Hasonló dokumentumok
Adatbázis-kezelő rendszerek. dr. Siki Zoltán

LOGalyze Telepítési és Frissítési Dokumentáció Verzió 3.0

Web harvesztelés. Automatikus módszerekkel

Google App Engine az Oktatásban 1.0. ügyvezető MattaKis Consulting

MySQL kontra MongoDB programozás. SQL és NoSQL megközelítés egy konkrét példán keresztül

Adatbázis rendszerek. dr. Siki Zoltán

NIIF Központi Elosztott Szolgáltatói Platform

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat

Operációs rendszerek III.

Ezüst fokozatú támogatók:

Bemutatkozás. Heilig Szabolcs Hojtsy Gábor Illés Szabolcs Palócz István

TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

Személyügyi nyilvántartás szoftver

PHP-MySQL. Adatbázisok gyakorlat

Riak. Pronounced REE-ahk. Elosztott adattároló eszköz. Molnár Péter

Reaktív programozás szerver oldalon

Ustream.tv Bepillantás egy közösségi élővideo site működésébe

OCSP Stapling. Az SSL kapcsolatok sebességének növelése Apache, IIS és NginX szerverek esetén 1(10)

Listák, szótárak, fájlok Listák, szótárak, fájlok

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Nyílt forrású, webes WGS84-EOV transzformáció

Valós idejű megoldások: Realtime ODS és Database In-Memory tapasztalatok

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

NAGY TELJESÍTM. Szerzők Dévai. István Automatizálási. és s Alkalmazott Informatikai Tanszék

ELEKTRONIKUS MUNKABÉRJEGYZÉK MODUL

Csak felvételi vizsga: csak záróvizsga: közös vizsga: Mérnök informatikus szak BME Villamosmérnöki és Informatikai Kar május 30.

Alternatív adatbázisok Gráfadatbázisok

Kalumet Számlázó. Termék leírás

Apache, MySQL, PHP/Perl NetWare-n

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Adatbázis háttér játszóházi beléptető és nyilvántartó rendszerhez Egy valós rendszer bemutatása

SQUID. Forrás:

Információ és kommunikáció

WWW Kliens-szerver Alapfogalmak Technológiák Terv. Web programozás 1 / 31

Adatbázis-kezelés. Dr. Fülep Dávid. SELECT id FROM tantargy WHERE intezmeny = sze ORDER BY hasznossag LIMIT 1 NGB_SZ_003_9

Szolgáltatási csomagok I-SZERVIZ Kft. érvényes szeptember 1-től

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

Nyilvántartási Rendszer

Adatbázis-kezelés. Fülep Dávid. SELECT id FROM eloadas WHERE intezmeny = sze ORDER BY unalomfaktor LIMIT 1 NGB_SZ_003_9

NoSQL technológiák. NoSQL Fórum Budapest, március 23. Diasablon: - a fotók sajátok :)

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

GDi Esri Magyarország Felhasználói Konferencia Timár Gábor: Konkurens adatfeldolgozás ArcGIS rendszerben

A webhelyhez kötődő szoftverek architektúrája

Tematika. MongoDB koncepció JSON Schemaless logika Replicaset képzés Sharding Aggregate framework

Többfelhasználós és internetes térkép kezelés, megjelenítés

Számítógépes Hálózatok GY 7.hét

Hány komputer van a kezemben?

Információ és kommunikáció

r e l o a d. n o n p r o f i t f o r u m. e u Telepítési útmutató 3. RELOADED

Produktív környezetben használt, nyílt forráskódú komplex térinformatikai megoldások dr. Siki Zoltán

Számítógép felépítése

Microsoft SQL Server telepítése

Tűzfal megoldások. ComNETWORX nap, I. 30. ComNETWORX Rt.

április 24. INFO Savaria április 24. INFO Savaria április 24. INFO Savaria

Adatbázis rendszerek Gy: Az adattárolás fejlődése

Rendszermodernizációs lehetőségek a HANA-val Poszeidon. Groma István PhD SDA DMS Zrt.

Internet programozása. 1. előadás

SDL Trados szervermegoldások. Szekeres Csaba SDL Trados partner M-Prospect Kft.

Miért érdemes váltani, mikor ezeket más szoftverek is tudják?

Szoftver Tervezési Dokumentáció. Nguyen Thai Binh

Weboldalak biztonsága

EgroupWare: A csoportmunka megoldás

Web-fejlesztés NGM_IN002_1

ALKALMAZÁS KERETRENDSZER

Internet alkamazások Készítette: Methos L. Müller Készült: 2010

Gyakorlati vizsgatevékenység A

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

Dspace fejlesztési tapasztalatok, problémák és megoldások

Távolléti díj kezelése a Novitax programban

JSF alkalmazások teljesítményhangolása JMeter és dynatrace segítségével

elektronikus adattárolást memóriacím

DataScope program SE/SP-300 távadókhoz HASZNÁLATI UTASÍTÁS

Adatbázis kezelő szoftverek biztonsága. Vasi Sándor G-3S

Pick Pack Pont kereső és boltválasztó alkalmazás

Adatbázis, adatbázis-kezelő

BaBér bérügyviteli rendszer telepítési segédlete év

Weboldalak Biztonsági Kérdései

BaBér. Bérügyviteli rendszer. Telepítési segédlet 2014.

Rétegezett architektúra HTTP. A hálózatfejlesztés motorját a hálózati alkalmazások képezik. TCP/IP protokoll készlet

Automatikus infrastruktúra menedzsment és alkalmazástelepítés

Tartalomjegyzék. Weboldalüzemeltetői praktikák... 1 Átlag weboldal... 1 Wordpress praktikák... 2

Telepítés, újratelepítés több számítógépre, hálózatos telepítés Kulcs-Bér program

Adatbázis rendszerek 7. előadás State of the art

Enterprise extended Output Management. exom - Greendoc Systems Kft. 1

A megfelelő IP védelem biztosításával, alkalmasak a kültéri alkalmazások kialakítására.

A processzor hajtja végre a műveleteket. összeadás, szorzás, logikai műveletek (és, vagy, nem)

Flex: csak rugalmasan!

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Adatbázis-kezelő rendszerek alkalmazása. MongoDB beadandó feladat Programtervező informatikus szak

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 5.ELŐADÁS. Sütik és munkamenetek kezelése

Földmérési és Távérzékelési Intézet

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

Kedvenc Ingyenes editorok avagy milyen a programozó jobbkeze? PSPAD editor DEVPHP IDE

A Matarka szerszámosládája

Felhasználói kézikönyv Bázis, Aktív, Portál és Portál+ csomagokhoz

Vectory telepítési útmutató

Hálózati operációs rendszerek II.

Tartalomjegyzék. Előszó... 10

Imperatív programozás

Átírás:

Turbó fokozat nginx, Redis, Node.js

Az előadó Bártházi András mailto:andras beigli barthazi pont hu twitter:ba78 http://webakademia.hu http://web.conf.hu/2009/program#turbó fokozat Programozókat keresünk Miner.hu kereső projektünkhöz

Miről lesz szó? Mitől lesz gyors egy szolgáltatás? Eszközök, melyek segíthetnek: nginx - webkiszolgáló Redis - memória alapú adatbázis Node.js - öná%ó szerver oldali JavaScript

Gyors webszolgáltatások Melyeket nem feltétlenül kell komolyan venni, de... Nyomjuk meg a turbó gombot a szerverkompúteren Tegyük ki a tartalmat statikus HTML fájlként Írjuk meg a szerver oldali kódunkat assemblyben Ne használjunk adatbázis kéréseket, vagy csak egyszerűeket

Turbó gomb Használd az erőt! Ma már egy 4 magos, 16 GB memóriát tartalmazó szerver is elérhető áron beszerezhető

Statikus HTML Nagyon sok weboldal kivitelezhető HTML-ként Lehet generálni a HTML-t A cache-t ki lehet írni HTML-ként a szerverre, és rewrite megoldásokkal kiszolgálni Gyors kiszolgáló ke%

Kódolás assemblyben Ha nem is assembly-ben, de C/C++ben egész használható megoldások vannak, például: http://www.webtoolkit.eu/wt Mindenestre a cél hogy a kód egyszerű, és a lehetőségek szerint gyors legyen

NOSQL, gyors SQL az sql nyelv sok esetben felesleges lehet gyors, egyszerű adatbázisok: CouchDB, MongoDB,... MySQL, PostgreSQL: de jól indexelt, csak elsődleges kulccsal történő lekérdezések memóriában tárolt adatok

nginx orosz fejlesztésű webszerver, leginkább a lighttpd-hoz hasonlít http://nginx.net/ két célra kiváló, de más feladatokra is megá%ja a helyét: statikus fájlok kiszolgálása proxy szerver minimális memóriahasználata miatt VPS szerverekre kifejezetten ajánlott

nginx Bár kevesebb szó esik róla, mégis ismert projektek is használják: wordpress.com sourceforge.net torrentreactor.net github.com

nginx: lehetőségek Alapfunkciókat ismeri: hozzáférés blokkolás IP cím(tartomány) alapján, HTTP Basic authentikáció, könyvtártartalom listázása, FastCGI, Gzip, virtuális hosztok, rewrite rule-ok, stb. Érdekesebb modulok: load balancing, 1x1 GIF, GeoIP, image filter (képek feldolgozása GD könyvtárra), levelezés proxy, kiszolgálás memcachedből, Circle GIF, HTTP Push, upload progress

nginx: dokumentáció alapvetően orosz projekt, orosz dokumentációval az utóbbi időben elkészült egy angol nyelvű wiki, mely átfogóan bemutatja a lehetőségeket, modulokat interneten több helyen is olvashatunk leírásokat arról, hogy adott problémákat hogy lehet megoldani a segítségével

nginx: működés eltérően az Apache-tól, nincsenek külön szálak indítva kliensenként úgynevezett event based server megoldás processzoronként érdemes workereket indítani, négyprocesszoros szerverben négyet

nginx: sebesség a sebesség nagyon sokféleképpen mérhető: kis statikus fájlok nagy statikus fájlok (adatátvitel) különböző szerver oldali nyelvek

nginx: sebesség ide jött volna különböző mérésekkel igazolva, hogy milyen gyors az nginx statikus fájlok esetén de összehasonlítva távoli kiszolgálás esetén Apachecsal másodpercenként több tízezres kiszolgálás me%ett nem tudtam kimutatni sebességbeli különbséget

nginx: sebesség memóriában, processzor terhelésben viszont egyértelmű nyertes volt, helyből adva a szervernek terhelést: 25kB-os fájl, 100.000 kérés, 10.000 párhuzamos szál Apache: 150 MB memória, 2-es, 3-as load, 45 mp nginx: 50 MB memória, nincs load, 22 mp

nginx: mérések a méréseket egy négyprocesszoros, Core 2 quad szerveren, 4 GB memóriával végeztem, az ab eszközzel távoli kiszolgáláskor egy 100 Mbit/s vonalon csatlakozó, másik szerver teremben levő szerverről mértem alapból a szerveren minimális terhelés volt, a méréseket 10-20 alkalommal is elvégezve vontam le a következtéseket

nginx vs. lighttpd személyesen nem végeztem méréseket, nincsenek tapasztalatok nincs rengeteg összehasonlítás, ezekből a lighttpd hátrányának a következőkre róják fel: több napnyi futtatás után szivárgó memória kevésbé jó processzor kihasználás virtuális hosztoknál nincs külön logolási lehetőség(?) http://www.wikivs.com/wiki/lighttpd_vs_nginx

nginx: használat mi a következőkre használjuk a projektjeinkben: statikus fájlok kiszolgálása (Miner Maps, Miner Toolbar) FastCGI-vel PHP kiszolgálás: előnye hogy nagy látogatottság esetén megfogta a PHP processzek számát, sebesség/processzoridő/memória változás amúgy nem volt

Redis: tulajdonságok Hipergyors fejlesztés: pár hónap alatt 1.0-s kiadás Nagyon jó dokumentáció Ke%emes közösség (levlista) Jó nyelvi támogatottság (PHP, Ruby, Python, Java...)

Redis: tulajdonságok Alapvetően egy kulcs-érték alapú, az adatokat memóriában tároló adatbázisszerver http://code.google.com/p/redis/ Leginkább a Memcachedhez lehet hasonlítani, de szignifikáns különbségek vannak

Redis: tulajdonságok nagyon gyors kiszolgálás: másodpercenként 100.000 írás, 80.000 olvasás atomi, összetett műveletek: listák, halmazok támogatása perzisztens tárolás: adatbázis kiírása lemezre jól hangolhatóan

Redis: egyszerű nem igényel különösebb konfigurációt, gyorsan kipróbálható, átlátható, telnettel lehet hozzá csatlakozni nincsenek bonyolult parancsok, nagyon könnyen és gyorsan tanulható

Redis: alapműveletek SET kulcs érték GET kulcs, MGET kulcs1 kulcs2 kulcs3 EXISTS kulcs INCR kulcs, DECR kulcs INCRBY kulcs szám, DECRBY kulcs szám DEL kulcs

Redis: alapműveletek KEYS minta azon elemek listája, melyek kulcsa mintával kezdődik RANDOMKEY RENAME régikulcs újkulcs DBSIZE EXPIRE kulcs szám

Redis: listaműveletek RPUSH kulcs érték, LPUSH kulcs érték elem beszúrása a kulcs lista elejére, végére LLEN kulcs LRANGE kulcs kezdet vég lista egy részének lekérdezése LTRIM kulcs kezdet vég

Redis: listaműveletek LINDEX kulcs index a kulcs lista egy elemének lekérdezése LSET kulcs index érték adott indexű elem felülírása LREM kulcs darab érték adott értékű elemek eltávolítása a listából LPOP kulcs, RPOP kulcs

Redis: halmazműveletek SADD kulcs érték, SREM kulcs érték, SPOP kulcs SMEMBERS kulcs SMOVE kulcs1 kulcs2 érték SCARD kulcs elemek száma az adott halmazban SISMEBER kulcs érték

Redis: halmazműveletek SINTER kulcs1 kulcs2 kulcsn, SINTERSTORE célkulcs kulcs1 kulcs2 kulcsn metszet lekérése, i%etve metszet tárolása SUNION kulcs1 kulcs2 kulcsn SUNIONSTORE célkulcs kulcs1 kulcs2 kulcsn összeg lekérése, i%etve összeg tárolása SDIFF kulcs1 kulcs2 kulcsn SDIFFSTROE célkulcs kulcs1 kulcs2 kulcsn különbség lekérése, i%etve különbség letárolása

Redis: rendezés listával és halmazzal is működik SORT kulcs SORT kulcs DESC SORT kulcs LIMIT 0 10 ALPHA DESC SORT kulcs BY weight_* SORT kulcs BY weight_* GET object_* veszi kulcs lista elemeit (pl. azonosítók: 1,2,3), lekéri weight_1, weight_2, weight_3 értékeket és rendezi azokat, majd az így kapott sorrend alapján visszaadja object_3, object_2, object_1 elemeket

Redis: mentés konfig fájlban hangolható: x másodpercenként x írás művelet után pl beá%ítható: alapból percenként, de ha volt 1000 művelet, akkor azután is SAVE, BGSAVE, LASTSAVE műveletek

Redis: replikáció Több adatbázist képes összeszinkronizálni: MASTER-SLAVE mode%

Redis: backup az adatbázis perzisztens része egy darab fájl leá%ás nélkül backpuolható, mivel az adatbázis mentése atomi művelet

Redis: egyebek egyszerű, saját szöveges protoko% példakódként egy egyszerű Twitter klón forrása is elérhető, kipróbálható több adatbázist (névteret) is támogat, bár nem igazán kényelmesen, érdemes inkább külön szervereket indítani

Redis: használat IWIW alkalmazásaink mögötti adattároláshoz Miner mögötti queue, /iss bejegyzések tárolása, gyorsítása, oldal cache, stb.

Node.js event I/O engine a V8 JavaScript motorhoz alapvető célja skálázható hálózati dolgok készítése esemény alapú, nem pedig thread alapú megoldás nem webszerver, de webszerver is készíthető segítségével http://nodejs.org/ hasonló az Event Machine (Ruby) és Twisted (Python) projektekhez

Node.js: tulajdonságok Hipergyors fejlesztés Ke%emes közösség (levlista) Használható dokumentáció Fiatal kora e%enére sok kapcsolódó projekt

Node.js: I/O Alapvetően támogatja a következő I/O műveleteket: konzolos standard I/O (stdin, stdout) fájlok írása, olvasása HTTP, TCP és DNS protoko%ok kezelése

Node.js: sebesség Nagyon gyors webszerver 10.000 kérést, 1000 konkurens klienstől pár mp alatt kiszolgál (12k dinamikus tartalmú oldal) nagyobb fájloknál lassabb lehet (megoldás folyamatban), de nem is erre való

Node.js: sebesség Event Machine (Ruby) és Node.js összehasonlítás Forrás: http://four.livejournal.com/1019177.html 1 konkurens kliens: node: 23782, ev: 22606 / sec 5 konkurens kliens: node: 34303, ev: 36899 / sec 300 konkurens kliens: node: 35668, ev: 36405 / sec

Node.js: Comet Mivel memóriafoglalása minimális, i%etve esemény alapú kiszolgálót lehet készíteni benne, kiválóan alkalmas több ezer szál párhuzamos kezelésére is példakódként egy böngésző alap chatszoba megvalósítást is me%ékeltek hozzá

Node.js Bár fiatal projekt, de: mivel JavaScript, kész JavaScript könyvtárak je%emzően használhatóak vele számos modul, kiegészítés van már hozzá most is

Node.js Érdekesebb kapcsolódó projektek: Redis kliens, CouchDB kliens, Tokyo Tyrant kliens, Postgres kliens JSON-RPC webszolgáltatás, Express (Sinatra klón), Disqus blog komment rendszer klón, IRC bot Készül az Extension API, amivel kész könyvtárak könnyen csatolhatóak lesznek

Node.js: használat A Miner Toolbar megoldásának kiszolgálója készül Node.js alapokon Különböző Miner szubprojektek mögöttes kiszolgálója lesz Jól proxyzható nginx segítségével

Köszönet Bártházi András mailto:andras beigli barthazi pont hu twitter:ba78 http://webakademia.hu http://web.conf.hu/2009/program#turbó fokozat Programozókat keresünk Miner.hu kereső projektünkhöz