Silviu Dicu wrote:
http://www.danga.com/memcached/
La ce si cu ce framework/limbaj/api etc ... ? Daca te intrebi daca
merge, da merge.
--
Php/java/perl

Am vazut ca facebook il foloseste (cel putin asa spun ei) si sint sigur
ca merge.
Ce ma intereseaza:

- Sint diferentele majore comparat fata de un cache php clasic (in
termeni de operare )
dap, cachuieste "obiecte". poti sa-l foloseti in paralel cu un sistem de cache al template-urilor ... imaginatia e singura frana in ceea ce priveste la ce poti sa-l folosesti.
- in cazul in care daemonul nu este functional ce se intimpla (trebuie
sa faci un fel de 'checked exception' in
Cod ?!)
in principiu cel putin in php da, tre sa te ocupi tu de asta. dar exista frameworks care au grija de asta pt tine suficient de elegant (cakephp de ex).
- Cit este de stabil si scalabil - daca ai doi daemoni pe doua servere
este posibil ca ei sa se syncronizeze ori opereaza
individual ? - moare unul celalat ii ia locul (ha)
Nu se copiaza, nu sunt redundante. Dar daca ai in ambii clienti (ala care scrie si ala care citeste) acceasi lista de servere si foloseti acceasi biblioteca algoritmul de cache stie sa faca load balancing automat. Nu te astepta sa scrii cu perl si sa citesti cu php (nativ). Fiecare biblioteca salveaza cum a fost sa fie implementarea. ex :PHP salveaza ca serialize() iar Perl ca Storable. (era si o implementare .net care tine xml, ca sa obtii beneficii de viteza parsand xml, LOL). Daca adaugi sau scoti un server din lista toate celelate cache-uri din lista sunt invalidate, si reincepe popularea.

In principiu cam toate memcache-urile din lista ar fi mai bine sa fie up la orice moment. Cat e down programul tau ar trebui sa isi ia datele care erau acolo direct de la sursa. Cand isi revine, incepi sa-l repopulezi.

Nu e foarte wize sa foloseti acelasi memcached pt aplicatii multiple (numele key-lor/variabilelor) cu biblioteci multiple (o sa mai obtii si un haos destul de dragut la encodare/decodare in caz de conflict). Nu inseamna ca nu merge daca ai grija, dar mai bine nu incerci. E nonblocking.
- cum se poate monitoriza  (script in nagios ?!)
Daca stii de ce intrebi. check port is open, write to cache random value to unique key, read from cache, check daca sunt la fel. exit cu codul corespunzator. Mai exista si tutorialul asta : http://www.netuality.ro/monitoring-memcached-with-cacti/tools/20060802 (ca sa fim nationalisti)
- am db-uri care fac numai 'read' - este fezabil sa inlocuiesc un db cu
memchached ?!
Nu prea, stored procedures sunt de obicei mai rapide. memcached se foloseste in general pentru tinerea sesiunilor in sistemele cu multi useri si a datelor des accesate. Daca datele nu se schimba rapid in timp mai bine le tii direct in config ca array, d-astea. De exemplu un RSS de la CNN poate fi salvat direct ca string in memcached si updatat direct acolo (sau scris direct pe disk :P). Comentariile de la articolele care NU sunt pe prima pagina ... nu e foarte folositor. Oricum la sub 20 de hit-uri pe secunda in baze de date cu tabele pe la 10.000 inregistrari (pe un desktop normal) e mai ieftin ca timp si efort sa optimizezi baza de date decat sa treci la memcached. Anyway, tu stii mai bine ce ai. Memcached e teoretic mai rapid cu PHP (serialise is meant to be fast) sau PERL. Sub java s-ar putea sa ramai surprins, da' aproape in orice conditii e mai incet. Pur si simplu pt ca scopul lui memcached e altul. Sa scaleze si sa ia load-ul de pe serverele de baze de date si sa fie suficient de rapid, nu sa fie mai rapid sau sa le inlocuiasca.

Probabil si alte intrebari pe care ti le pui au raspunsul aici :
http://www.socialtext.net/memcached/index.cgi?faq

Citeste mai ales partea cu race conditions. Cu un pic de imaginatie s-ar putea sa-ti dai seama ca ... poate fii chiar mai rau daca nu ai cronjoburi/daemon in spate care sa aiba grija de memcached si sa-l tina consistent si up2date. Si eventual sa trebuiasca sa faci aberatii de genul emulare de lockuri (nu exista nativ). De asta am renuntat ultima oara la el si am pus 2 servere de baze (master/slave) de date in loc. Mare parte din info e trasa din limitata mea experienta PHP-istica.



Sper sa fie de folos.
Dragos

multumesc
--




_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug



_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui