SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
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

Mais conteúdo relacionado

Semelhante a Arhitecturi de cacheing server side - LVLE 2009

Arhitecturi de caching server-side - Infoeducatie 2008
Arhitecturi de caching server-side - Infoeducatie 2008 Arhitecturi de caching server-side - Infoeducatie 2008
Arhitecturi de caching server-side - Infoeducatie 2008 Mihai Oaida
 
Innovation in Publishing - HTML5 and Cloud Computing
Innovation in Publishing - HTML5 and Cloud ComputingInnovation in Publishing - HTML5 and Cloud Computing
Innovation in Publishing - HTML5 and Cloud ComputingMihai Dan Nadas
 
05 db server_deployment_ro
05 db server_deployment_ro05 db server_deployment_ro
05 db server_deployment_romcroitor
 
MySQL din linie de comanda
MySQL din linie de comandaMySQL din linie de comanda
MySQL din linie de comandamcroitor
 
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...Codecamp Romania
 
Web Storage Performance
Web Storage PerformanceWeb Storage Performance
Web Storage PerformanceMihai Valache
 
Ro IT Webinar - Masina Virtuala, calatorie catre cloud
Ro IT Webinar - Masina Virtuala, calatorie catre cloudRo IT Webinar - Masina Virtuala, calatorie catre cloud
Ro IT Webinar - Masina Virtuala, calatorie catre cloudMarius Zaharia
 
Programare Web - Accesul la baze de date prin PHP
Programare Web - Accesul la baze de date prin PHPProgramare Web - Accesul la baze de date prin PHP
Programare Web - Accesul la baze de date prin PHPSabin Buraga
 
Pagini web mai rapide
Pagini web mai rapidePagini web mai rapide
Pagini web mai rapideAlex Burciu
 
Prezentare Distinct Nbb Cluster V1
Prezentare Distinct Nbb Cluster V1Prezentare Distinct Nbb Cluster V1
Prezentare Distinct Nbb Cluster V1Adrian Dragomir
 
Proiect programare web
Proiect programare webProiect programare web
Proiect programare webAlex Cms
 
Proiect programare web
Proiect programare webProiect programare web
Proiect programare webAlex Cms
 
Windows Azure AppFabric - Service Bus, Caching
Windows Azure AppFabric - Service Bus, CachingWindows Azure AppFabric - Service Bus, Caching
Windows Azure AppFabric - Service Bus, CachingMihai Dan Nadas
 
Gabriel Voicu - De ce Ruby on Rails este o alegere buna in 2024 (2024.02.06, ...
Gabriel Voicu - De ce Ruby on Rails este o alegere buna in 2024 (2024.02.06, ...Gabriel Voicu - De ce Ruby on Rails este o alegere buna in 2024 (2024.02.06, ...
Gabriel Voicu - De ce Ruby on Rails este o alegere buna in 2024 (2024.02.06, ...constantadevelopers
 

Semelhante a Arhitecturi de cacheing server side - LVLE 2009 (16)

Arhitecturi de caching server-side - Infoeducatie 2008
Arhitecturi de caching server-side - Infoeducatie 2008 Arhitecturi de caching server-side - Infoeducatie 2008
Arhitecturi de caching server-side - Infoeducatie 2008
 
Innovation in Publishing - HTML5 and Cloud Computing
Innovation in Publishing - HTML5 and Cloud ComputingInnovation in Publishing - HTML5 and Cloud Computing
Innovation in Publishing - HTML5 and Cloud Computing
 
05 db server_deployment_ro
05 db server_deployment_ro05 db server_deployment_ro
05 db server_deployment_ro
 
Redis si Resque
Redis si ResqueRedis si Resque
Redis si Resque
 
MySQL din linie de comanda
MySQL din linie de comandaMySQL din linie de comanda
MySQL din linie de comanda
 
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
 
Web Storage Performance
Web Storage PerformanceWeb Storage Performance
Web Storage Performance
 
Ro IT Webinar - Masina Virtuala, calatorie catre cloud
Ro IT Webinar - Masina Virtuala, calatorie catre cloudRo IT Webinar - Masina Virtuala, calatorie catre cloud
Ro IT Webinar - Masina Virtuala, calatorie catre cloud
 
Programare Web - Accesul la baze de date prin PHP
Programare Web - Accesul la baze de date prin PHPProgramare Web - Accesul la baze de date prin PHP
Programare Web - Accesul la baze de date prin PHP
 
Pagini web mai rapide
Pagini web mai rapidePagini web mai rapide
Pagini web mai rapide
 
Prezentare Distinct Nbb Cluster V1
Prezentare Distinct Nbb Cluster V1Prezentare Distinct Nbb Cluster V1
Prezentare Distinct Nbb Cluster V1
 
Proiect programare web
Proiect programare webProiect programare web
Proiect programare web
 
Proiect programare web
Proiect programare webProiect programare web
Proiect programare web
 
Windows Azure AppFabric - Service Bus, Caching
Windows Azure AppFabric - Service Bus, CachingWindows Azure AppFabric - Service Bus, Caching
Windows Azure AppFabric - Service Bus, Caching
 
Flash Super Marathon
Flash Super MarathonFlash Super Marathon
Flash Super Marathon
 
Gabriel Voicu - De ce Ruby on Rails este o alegere buna in 2024 (2024.02.06, ...
Gabriel Voicu - De ce Ruby on Rails este o alegere buna in 2024 (2024.02.06, ...Gabriel Voicu - De ce Ruby on Rails este o alegere buna in 2024 (2024.02.06, ...
Gabriel Voicu - De ce Ruby on Rails este o alegere buna in 2024 (2024.02.06, ...
 

Arhitecturi de cacheing server side - LVLE 2009

  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. Arhitecturi de cacheing server-side Întrebări? Mihai Oaida <mihai.oaida@gmail.com> 17