memcached - CrismerLaPignola

Archive

Posts Tagged ‘memcached’

Velocizzare un’applicazione web con MEMCACHED – Seconda parte

March 13th, 2012 2 comments

COLLEGARSI AL NOSTRO CACHE SERVER

Innanzitutto, dobbiamo creare una connessione al nostro server Memcached. Di seguito il codice che dovreste usare nel vostro script php:

// Connection constants
define(‘MEMCACHED_HOST’, ’127.0.0.1′);
define(‘MEMCACHED_PORT’, ’11211′);

// Connection creation
$memcache = new Memcache;
$cacheAvailable = $memcache->connect(MEMCACHED_HOST, MEMCACHED_PORT);
A questo punto, abbiamo stabilito una connessione al nostro Memcache server. Potrebbe anche fallire ma possiamo conscere l’esito grazie alla variabile $cacheAvailable.

MEMORIZZARE I DATI NELLA CACHE

Addentriamoci nella memorizzazione del dati. Faremo tra poco un’esempio per chiarire i concetti: simuleremo un negozio no line. Abbiamo uno script chiamato ‘edit_product.php’ il cui
scopo è quello di salvare i dati di un prodotto nel nostro database.  Ognuno dei nostri prodotti ha le seguenti informazioni:

  • id
  • name
  • description
  • price

A questo punto nel nostro edit_product.php, eseguiamo una query INSERT UPDATE il cui scopo è scrivere i dati relativi al prodotto nel nostro database MySql . Esaminiamo il codice:

// We have validated and sanitized our data
// We have escaped every risky char with mysql_real_escape_string()
// Now we want to save it into our database
$sql = “INSERT INTO products (id, name, description, price) VALUES ($id, ‘$name’, ‘$description’, $price)”;
$querySuccess = mysql_query($sql, $db);

Come ho già detto, vogliamo memorizzare i nostri dati sia nel nostro database MySQL e server Memcached.  Ecco come possiamo procedere:

// We have validated and sanitized our data
// We have escaped every risky char with mysql_real_escape_string()
// Now we want to write them to our database :
$sql = “INSERT INTO products (id, name, description, price) VALUES ($id, ‘$name’, ‘$description’, $price)”;
$querySuccess = mysql_query($sql, $db);

// We have written our data into our database
// Now let’s store the product name, description and price into our cache
// The method “set” tells our Memcached server to store the data associated to a specific key
if ($querySuccess === true)
{
   // We build a unique key that we can build again later
   // We will use the word ‘product’ plus our product’s id (eg. “product_12″)
   $key = ‘product_’ . $id;

   // We store an associative array containing our product data
   $product = array(‘id’ => $id, ‘name’ => $name, ‘description’ => $description, ‘price’ => $price);

   // And we ask Memcached to store that data
   $memcache->set($key, $product);
}

In questo modo sia il database che la cache contengono i nostri dati di prodotto.

Read more…

Velocizzare un’applicazione web con MEMCACHED – Prima parte

February 15th, 2012 2 comments

Molto spesso accade che i nostri sforzi per sviluppare un’applicazione web e / o un sito non si esauriscono con la sua pubblicaizone.
Le applicazioni web moderne producono una quantità sempre più notevole di dati da e per il web che molto spesso rallentano sensibilmente le prestazioni.

Con questo articolo cercherò di spiegare come è possibile migliorare notevolmente la risposta del vostro sito e implementare un sistema in grado di gestire migliaia di visitatori contemporaneamente mediante la creazione di uno strato di cash tra il codice e il database. L’aspetto importante è che arrivare a costruire tale infrastruttura non è complesso, lo vedremo durante questo tutorial.

I siti web moderni e applicazioni web utilizzano una grande quantità di dati, e non è raro contare fino a 20 o addirittura 30 query SQL nella generazione di una sola pagina.
Aggiungete a questo valore un gran numero di visitatori, ecco che spesso si ottiene un database sovraccaricato, e pagine che hanno bisogno anche di alcuni secondi per essere generate e inviate al client.

Lo strumento che stiamo per usare oggi per migliorare le prestazioni si chiama Memcached.  Si tratta di high-performance in-memory data caching system.
O,  per dirla in altre parole, un programma molto veloce che viene eseguito sul server e utilizza una piccola parte della memoria disponibile per memorizzare un array associativo di dati.

Potete chiedere a Memcached di fare due cose:

  • Memorizzare il valore ‘V’ con la chiave ‘K’;
  • Ottenere il valore ‘V’ associato alla chiave ‘K’.

Read more…

ESPLORANDO IL SOFTWARE CHE STA’ ALLA BASE DI FACEBOOK (I PARTE)

June 24th, 2010 1 comment

…traduzione dell’articolo “Exploring the software behind Facebook, the world’s largest site”..

La maggior parte degli approcci tradizionali di web server risultano impraticabili per Facebook che ormai per le sue dimensioni e caratteristiche necessità di ‘attenzione particoloare‘.
Gli ingegneri lavorano constantemente affinchè Facebook continui ad erogare ai suoi utenti un servizio veloce, fruibile e sicuro; e non è un’impresa facile dati i numeri che girano intorno a questo ormai famosissimo Social Network.

Prima di addentrarci in alcuni significativi dettagli vediamo quali sono questi numeri a dir poco incredibili:

  1. Facebook server 570 milioni di pagine viste ogni mese
  2. Ci sono un quantitativo di foto su Facebook il cui totale supera tutti i siti di raccolta foto come Filckr..
  3. Più di 3 milioni di foto vengono caricate mensilmente.
  4. Il sistema di Facbook serve più di 1.2 milioni di foto al secondo. Questi dati non includono le immagini servite dal CDN di Facebook.
  5. Più di 25 milioni di contenuti (aggiornamenti, commenti ecc.) vengono condivisi ogni giorno.
  6. Facebook ha più di 30.000 server, e questo è un dato dell’anno scorso!


IL SOFTWARE CHE SOSTIENE FACEBOOK NEL SUO LAVORO

Nel corso del tempo Facebook è dovuto cambiare ed estendere le sue operazione e incorporare nel suo ‘motore’ sempre più elementi e servizi.
Facciamo alcuni esempi:

  • Facebook utilizza come linguaggio di programmazione il PHP, ma è stato necessario costruire un compilatore capace di introdurre codice nativo nel suo web
    server, così da migliorare le performance;
  • Facebook utilizza Linux come sistema operativo, ma è opportunamente ottimizzato per raggiungere i suoi target (sopratutto in termini di networking)
  • Facebook utilizza Mysql come data base server ma si avvale di ulteriori software per supportare le performance di accesso alle informazioni (in altre parole l’uso di Memcasched risulta fondamentale per rendere veloci gli accessi agli storage a milioni di utenti).

Ma passiamo ai dettagli e andiamo a presentare alcuni dei più importanti software di cui si avvale Facebook per fornire servizi sempre più veloci,
con prestazioni avanzate e tecnologici.

In questa prima parte parleremo di Memcached.

MEMCACHED

Memcashed (http://memcached.org/) è al momento uno dei più famosi software che supportano applicazioni web.
E’ in sostanza un sistema di memory cashing distribuito del quale Facebook, ma non solo lui, utilizza come cashing layer tra i web server e i Db server MySql
(questo per ovviare all’accesso al db che solitamente non è mai velocissimo).
Nel corso degli anni, Facebook ha fatto un sacco di ottimizzazioni per il software Memcasched come ad esempio ottimizzare il network stack solo per menzionarne uno.

Nella prossima puntata parleremo di HipHop per PHP e Haystack, BigPipe e Cassandra.

Related Posts with Thumbnails
Categories: Internet Tags: , ,
Creative Commons License
Questo/a opera è pubblicato sotto una Licenza Creative Commons