arhitecturi de cacheing server side - lvle 2009

18

Click here to load reader

Upload: mihai-oaida

Post on 02-Jul-2015

828 views

Category:

Technology


1 download

DESCRIPTION

Ce inseamna "cache" si la ce foloseste? Cand datele pot deveni inconsistente? La ce se poate face cache? String-uri, cod compilat, rezultate SQL? Ce este un accelerator PHP? Voi raspunde la toate aceste intrebari si multe altele. Exemple pentru PHP si MySQL.

TRANSCRIPT

Page 1: Arhitecturi de cacheing server side - LVLE 2009

Arhitecturi de cacheingserver-side

Page 2: Arhitecturi de cacheing server side - LVLE 2009

Mihai Oaida

- Student Politehnica Timişoara- Web / Software developer Datagroup Int- Instructor tehnologii web http://tehnologii-web.ro

- Freelancer

Arhitecturi de cacheing server-side

Mihai Oaida <[email protected]> 01

Page 3: Arhitecturi de cacheing server side - LVLE 2009

Arhitecturi de cacheing server-side

- Ce este un cache?- Medii de stocare- Cache de cod PHP- Cache de string-uri- Cache de rezultate sql- Concluzii

Arhitecturi de cacheing server-side

Mihai Oaida <[email protected]> 02

Page 4: Arhitecturi de cacheing server side - LVLE 2009

Ce este un cache?

- mediu rapid de stocare- stochează datele care se accesează des- volatil sau nevolatil- echilibru între spaţiu consumat şi viteză

Arhitecturi de cacheing server-side

Mihai Oaida <[email protected]> 03

Scop Load mai mic pe server

Cerere Procesare Ieşire→ →

Cerere Cache Ieşire→ →

Page 5: Arhitecturi de cacheing server side - LVLE 2009

Exemple

• Sesiunile • Documente xhtml de pe un wiki• Date statistice• Date sumar ( Număr de produse per categorie)

Arhitecturi de cacheing server-side

Mihai Oaida <[email protected]> 04

Page 6: Arhitecturi de cacheing server side - LVLE 2009

Medii de stocare şi interfeţe

HDD – SATA 2 transfer 300MBps (RAID HDD mai rapid)

timp acces x ms (10^-3) variabil

RAM – DDR2 transfer 3200 – 8500 MBps

timp acces x ns (10^-9) constant

L2 Cache transfer , aprox 35 GBps

USB 2.0transfer , aprox 400Mbps, cicluri I/O limitate

Arhitecturi de cacheing server-side

Mihai Oaida <[email protected]> 05

Page 7: Arhitecturi de cacheing server side - LVLE 2009

Soluţii

Cache pe HDDsoluţie simplă, usor de implementathdd este încet, este mecanico soluţie rapidă este scumpă

Cache în RAMsoluţie puţin mai complexăviteză mare de citire/scriereeste ieftin

Arhitecturi de cacheing server-side

Mihai Oaida <[email protected]> 06

Page 8: Arhitecturi de cacheing server side - LVLE 2009

Cache de cod PHP

Rularea unui scriptCitire de pe HDD – “compilare” =>opcode

=>rulareAccelerator PHP Modul de PHP Are o zonă de memorie rezervată , ex 32 MbRularea unui script a doua oară

Citire din RAM => rulare Performanţe aprox 10x

Arhitecturi de cacheing server-side

Mihai Oaida <[email protected]> 07

Page 9: Arhitecturi de cacheing server side - LVLE 2009

Acceleratoare

APC – PECLxCache http://xcache.lighttpd.net/ , pachet UbuntueAccelerator http://eaccelerator.net port FreeBSDZend

Python : Psyco

Arhitecturi de cacheing server-side

Mihai Oaida <[email protected]> 08

Page 10: Arhitecturi de cacheing server side - LVLE 2009

Testare

ab – apache benchmarkEx: ab –n 100 –c 10 http://tehnologii-web.ro

Se pot folosi teste proprii pentru a măsura performanţa

Arhitecturi de cacheing server-side

Mihai Oaida <[email protected]> 09

Page 11: Arhitecturi de cacheing server side - LVLE 2009

Cache de string-uri

Deamon care rulează în paralel...… sau modul de PHPAre o zonă de RAM rezervatăPractic un hash table mare

Nu are securitateServerul se restartează => se pierd datele

Arhitecturi de cacheing server-side

Mihai Oaida <[email protected]> 10

Page 12: Arhitecturi de cacheing server side - LVLE 2009

Exemple

APCapc_add('text_home',$text);apc_fetch('text_home');

xCache xcache_set($key,$value);

xcache_get($key);

Arhitecturi de cacheing server-side

Mihai Oaida <[email protected]> 11

Page 13: Arhitecturi de cacheing server side - LVLE 2009

Memcached

Deamon care rulează în paralelSe poate replica pe n maşiniTot un hash table mare (posibil distribuit)Are conectori în PHP,Ruby,Python,Java,C#, Mysql,etc

Arhitecturi de cacheing server-side

Mihai Oaida <[email protected]> 12

Exemplu: Facebook800 servere dedicate memcachedAprox. 28TB RAM

Page 14: Arhitecturi de cacheing server side - LVLE 2009

Exemplu

# ./memcached -d -m 1024 -l server1 -p 12345

Arhitecturi de cacheing server-side

Mihai Oaida <[email protected]> 13

$mem = new Memcache;

/* se conexteaza la server 1 */$mem->connect('server1',12345);

/* seteza pe cheia produse_3 valoarea 23 */$mem->set('produse_3',23,MEMCACHE_COMPRESSED,50);

/* selecteaza o anumita cheie din cache */$valoare = $mem->get('produse_3'); /* inchide conexiunea */ $mem->close();

Page 15: Arhitecturi de cacheing server side - LVLE 2009

Mysql query cache

• Din my.conf se poate seta o limită de memorie• Se face cache la SELECT• Update , Insert sau Delete şterg cache-ul pe tabelul respectiv

Arhitecturi de cacheing server-side

Mihai Oaida <[email protected]> 14

Rezultatele se pot vedea cu Munimhttp://munin.projects.linpro.no/

Cache doar la tabelele din care se citesc desex produse DA,comenzi NU

Page 16: Arhitecturi de cacheing server side - LVLE 2009

Concluzii

• Web2.0 = trafic => aplicatii care scalează• Este nevoie de arhitecturi de cacheing• În acceaşi bani se pot servi mai multi useri

• Traficul se poate dubla/tripla peste noapte

• Toţi fac cache-ing pe server:Wikipedia,Facebook,Google,Yahoo,Digg,Flickr, etc

Arhitecturi de cacheing server-side

Mihai Oaida <[email protected]> 15

Page 17: Arhitecturi de cacheing server side - LVLE 2009

Referinţe

PHP http://www.php.net/apc http://eaccelerator.net http://xcache.lighttpd.net/

MySQL http://dev.mysql.com/doc/refman/5.0/en/query-cache.html

Statistici http://munin.projects.linpro.no/

Arhitecturi de cacheing server-side

Mihai Oaida <[email protected]> 16

Page 18: Arhitecturi de cacheing server side - LVLE 2009

Întrebări?

Arhitecturi de cacheing server-side

Mihai Oaida <[email protected]> 17