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