turbó fokozat
DESCRIPTION
Eszközök gyors weboldalak készítéséhezTRANSCRIPT
![Page 1: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/1.jpg)
Turbó fokozatnginx, Redis, Node.js
Sunday, October 4, 2009
![Page 2: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/2.jpg)
Az előadó
Bártházi Andrásmailto:andras beigli barthazi pont hutwitter:ba78http://webakademia.huhttp://web.conf.hu/2009/program#Turbó fokozat
Programozókat keresünk Miner.hu kereső projektünkhöz
Sunday, October 4, 2009
![Page 3: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/3.jpg)
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
Sunday, October 4, 2009
![Page 4: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/4.jpg)
Gyors webszolgáltatásokNyomjuk 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
Melyeket nem feltétlenül kell komolyan venni, de...
Sunday, October 4, 2009
![Page 5: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/5.jpg)
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ő
Sunday, October 4, 2009
![Page 6: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/6.jpg)
Statikus HTMLNagyon 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%
Sunday, October 4, 2009
![Page 7: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/7.jpg)
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
Sunday, October 4, 2009
![Page 8: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/8.jpg)
NOSQL, gyors SQLaz 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
Sunday, October 4, 2009
![Page 9: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/9.jpg)
nginxorosz 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
Sunday, October 4, 2009
![Page 10: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/10.jpg)
nginx
Bár kevesebb szó esik róla, mégis ismert projektek is használják:
wordpress.com
sourceforge.net
torrentreactor.net
github.com
Sunday, October 4, 2009
![Page 11: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/11.jpg)
nginx: lehetőségekAlapfunkció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
Sunday, October 4, 2009
![Page 12: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/12.jpg)
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
Sunday, October 4, 2009
![Page 13: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/13.jpg)
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
Sunday, October 4, 2009
![Page 14: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/14.jpg)
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
Sunday, October 4, 2009
![Page 15: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/15.jpg)
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 Apache-csal másodpercenként több tízezres kiszolgálás me%ett nem tudtam kimutatni sebességbeli különbséget
Sunday, October 4, 2009
![Page 16: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/16.jpg)
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
Sunday, October 4, 2009
![Page 17: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/17.jpg)
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
Sunday, October 4, 2009
![Page 18: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/18.jpg)
nginx vs. lighttpdszemé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
Sunday, October 4, 2009
![Page 19: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/19.jpg)
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
Sunday, October 4, 2009
![Page 20: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/20.jpg)
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...)
Sunday, October 4, 2009
![Page 21: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/21.jpg)
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
Sunday, October 4, 2009
![Page 22: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/22.jpg)
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
Sunday, October 4, 2009
![Page 23: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/23.jpg)
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ó
Sunday, October 4, 2009
![Page 24: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/24.jpg)
Redis: alapműveletekSET 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
Sunday, October 4, 2009
![Page 25: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/25.jpg)
Redis: alapműveletek
KEYS mintaazon elemek listája, melyek kulcsa mintával kezdődik
RANDOMKEY
RENAME régikulcs újkulcs
DBSIZE
EXPIRE kulcs szám
Sunday, October 4, 2009
![Page 26: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/26.jpg)
Redis: listaműveletek
RPUSH kulcs érték, LPUSH kulcs értékelem beszúrása a “kulcs” lista elejére, végére
LLEN kulcs
LRANGE kulcs kezdet véglista egy részének lekérdezése
LTRIM kulcs kezdet vég
Sunday, October 4, 2009
![Page 27: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/27.jpg)
Redis: listaműveletekLINDEX kulcs indexa “kulcs” lista egy elemének lekérdezése
LSET kulcs index értékadott indexű elem felülírása
LREM kulcs darab értékadott értékű elemek eltávolítása a listából
LPOP kulcs, RPOP kulcs
Sunday, October 4, 2009
![Page 28: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/28.jpg)
Redis: halmazműveletek
SADD kulcs érték, SREM kulcs érték, SPOP kulcs
SMEMBERS kulcs
SMOVE kulcs1 kulcs2 érték
SCARD kulcselemek száma az adott halmazban
SISMEBER kulcs érték
Sunday, October 4, 2009
![Page 29: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/29.jpg)
Redis: halmazműveletekSINTER kulcs1 kulcs2 kulcsN,SINTERSTORE célkulcs kulcs1 kulcs2 kulcsNmetszet lekérése, i%etve metszet tárolása
SUNION kulcs1 kulcs2 kulcsNSUNIONSTORE célkulcs kulcs1 kulcs2 kulcsNösszeg lekérése, i%etve összeg tárolása
SDIFF kulcs1 kulcs2 kulcsNSDIFFSTROE célkulcs kulcs1 kulcs2 kulcsNkülönbség lekérése, i%etve különbség letárolása
Sunday, October 4, 2009
![Page 30: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/30.jpg)
Redis: rendezéslistával és halmazzal is működik
SORT kulcsSORT kulcs DESCSORT 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
Sunday, October 4, 2009
![Page 31: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/31.jpg)
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
Sunday, October 4, 2009
![Page 32: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/32.jpg)
Redis: replikáció
Több adatbázist képes összeszinkronizálni:MASTER-SLAVE mode%
Sunday, October 4, 2009
![Page 33: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/33.jpg)
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
Sunday, October 4, 2009
![Page 34: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/34.jpg)
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
Sunday, October 4, 2009
![Page 35: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/35.jpg)
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.
Sunday, October 4, 2009
![Page 36: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/36.jpg)
Node.jsevent 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
Sunday, October 4, 2009
![Page 37: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/37.jpg)
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
Sunday, October 4, 2009
![Page 38: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/38.jpg)
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
Sunday, October 4, 2009
![Page 39: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/39.jpg)
Node.js: sebesség
Nagyon gyors webszerver
10.000 kérést, 1000 konkurens klienstőlpár mp alatt kiszolgál (12k dinamikus tartalmú oldal)
nagyobb fájloknál lassabb lehet (megoldás folyamatban), de nem is erre való
Sunday, October 4, 2009
![Page 40: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/40.jpg)
Node.js: sebesség
Event Machine (Ruby) és Node.js összehasonlításForrá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
Sunday, October 4, 2009
![Page 41: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/41.jpg)
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á
Sunday, October 4, 2009
![Page 42: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/42.jpg)
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
Sunday, October 4, 2009
![Page 43: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/43.jpg)
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
Sunday, October 4, 2009
![Page 44: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/44.jpg)
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
Sunday, October 4, 2009
![Page 45: Turbó fokozat](https://reader033.vdocuments.site/reader033/viewer/2022051609/5479dd34b4af9fa5158b4919/html5/thumbnails/45.jpg)
Köszönet
Bártházi Andrásmailto:andras beigli barthazi pont hutwitter:ba78http://webakademia.huhttp://web.conf.hu/2009/program#Turbó fokozat
Programozókat keresünk Miner.hu kereső projektünkhöz
Sunday, October 4, 2009