• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Arhitecturi de cacheing server side - LVLE 2009
 

Arhitecturi de cacheing server side - LVLE 2009

on

  • 1,428 views

Ce inseamna "cache" si la ce foloseste? Cand datele pot deveni inconsistente? ...

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.

Statistics

Views

Total Views
1,428
Views on SlideShare
1,426
Embed Views
2

Actions

Likes
0
Downloads
12
Comments
0

2 Embeds 2

http://www.slideshare.net 1
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Arhitecturi de cacheing server side - LVLE 2009 Arhitecturi de cacheing server side - LVLE 2009 Presentation Transcript

    • Arhitecturi de cacheing server-side
    • Arhitecturi de cacheing server-side Mihai Oaida - Student Politehnica Timişoara - Web / Software developer Datagroup Int - Instructor tehnologii web http://tehnologii-web.ro - Freelancer Mihai Oaida <mihai.oaida@gmail.com> 01
    • Arhitecturi de cacheing server-side 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 Mihai Oaida <mihai.oaida@gmail.com> 02
    • Arhitecturi de cacheing server-side Ce este un cache? - mediu rapid de stocare - stochează datele care se accesează des - volatil sau nevolatil - echilibru între spaţiu consumat şi viteză Cerere → Procesare → Ieşire Cerere → Cache → Ieşire Scop Load mai mic pe server Mihai Oaida <mihai.oaida@gmail.com> 03
    • Arhitecturi de cacheing server-side Exemple • Sesiunile • Documente xhtml de pe un wiki • Date statistice • Date sumar ( Număr de produse per categorie) Mihai Oaida <mihai.oaida@gmail.com> 04
    • Arhitecturi de cacheing server-side 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.0 transfer , aprox 400Mbps, cicluri I/O limitate Mihai Oaida <mihai.oaida@gmail.com> 05
    • Arhitecturi de cacheing server-side Soluţii Cache pe HDD soluţie simplă, usor de implementat hdd este încet, este mecanic o soluţie rapidă este scumpă Cache în RAM soluţie puţin mai complexă viteză mare de citire/scriere este ieftin Mihai Oaida <mihai.oaida@gmail.com> 06
    • Arhitecturi de cacheing server-side Cache de cod PHP Rularea unui script Citire de pe HDD – “compilare” =>opcode =>rulare Accelerator PHP Modul de PHP Are o zonă de memorie rezervată , ex 32 Mb Rularea unui script a doua oară Citire din RAM => rulare Performanţe aprox 10x Mihai Oaida <mihai.oaida@gmail.com> 07
    • Arhitecturi de cacheing server-side Acceleratoare APC – PECL xCache http://xcache.lighttpd.net/ , pachet Ubuntu eAccelerator http://eaccelerator.net port FreeBSD Zend Python : Psyco Mihai Oaida <mihai.oaida@gmail.com> 08
    • Arhitecturi de cacheing server-side Testare ab – apache benchmark Ex: ab –n 100 –c 10 http://tehnologii-web.ro Se pot folosi teste proprii pentru a măsura performanţa Mihai Oaida <mihai.oaida@gmail.com> 09
    • Arhitecturi de cacheing server-side Cache de string-uri Deamon care rulează în paralel... … sau modul de PHP Are o zonă de RAM rezervată Practic un hash table mare Nu are securitate Serverul se restartează => se pierd datele Mihai Oaida <mihai.oaida@gmail.com> 10
    • Arhitecturi de cacheing server-side Exemple APC apc_add('text_home',$text); apc_fetch('text_home'); xCache xcache_set($key,$value); xcache_get($key); Mihai Oaida <mihai.oaida@gmail.com> 11
    • Arhitecturi de cacheing server-side Memcached Deamon care rulează în paralel Se poate replica pe n maşini Tot un hash table mare (posibil distribuit) Are conectori în PHP,Ruby,Python,Java,C#, Mysql,etc Exemplu: Facebook 800 servere dedicate memcached Aprox. 28TB RAM Mihai Oaida <mihai.oaida@gmail.com> 12
    • Arhitecturi de cacheing server-side Exemplu # ./memcached -d -m 1024 -l server1 -p 12345 $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(); Mihai Oaida <mihai.oaida@gmail.com> 13
    • Arhitecturi de cacheing server-side 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 Rezultatele se pot vedea cu Munim http://munin.projects.linpro.no/ Cache doar la tabelele din care se citesc des ex produse DA,comenzi NU Mihai Oaida <mihai.oaida@gmail.com> 14
    • Arhitecturi de cacheing server-side 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 Mihai Oaida <mihai.oaida@gmail.com> 15
    • Arhitecturi de cacheing server-side 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/ Mihai Oaida <mihai.oaida@gmail.com> 16
    • Arhitecturi de cacheing server-side Întrebări? Mihai Oaida <mihai.oaida@gmail.com> 17