Twemcache è una soluzione, utilizzata internamente per la piattaforma, concepita da Twitter come un fork di Memcached: il sistema di caching della memoria sviluppato da Brad Fitzpatrick per LiveJournal nel 2003. Twitter ha adattato Memcached alle proprie esigenze di scalabilità, come aveva già fatto Facebook con un progetto risalente al 2008 — che, però, risulta irreperibile all’indirizzo originario via GitHub. Twemcache è stato appena rilasciato dai programmatori sotto la nuova licenza BSD sulla stessa piattaforma di hosting.
L’esigenza alla base dello sviluppo di Twemcache è una maggiore robustezza e duttilità con Memcached. Il sistema sul quale “gira”, per Twitter, è di dimensioni impressionanti: i sistemisti devono gestire centinaia di cache server, che a loro volta amministrano 20Tb di dati cad. per oltre trenta servizi in–memory — inclusa la memorizzazione dei tweet. Parliamo di due milioni di miliardi di query al giorno, più di ventitré milioni di query al secondo. È un’infrastruttura che, peraltro, continua a crescere in maniera esponenziale.
Non stupisce che gli ingegneri di Twitter abbiano optato per una soluzione ad hoc. Twemcache – proposto in versione 2.0.4 – è un fork di Memcached 1.4.4 fortemente modificato. Gli sviluppatori hanno fornito delle informazioni molto dettagliate sulle modifiche effettuate al codice originario. Le ottimizzazioni proposte da Twemcache si possono raggruppare in due categorie: quelle dedicate ai dischi, quelle dedicate ai processori centrali. L’esempio più indicativo riguarda, appunto, la memorizzazione e la pubblicazione dei tweet.
Gli aggiornamenti di stato, una volta inviati a Twitter, sono memorizzati in modo persistente sui dischi. Tuttavia, molte richieste degli utenti richiedono che i tweet siano estratti dalla loro posizione originaria: i “cinguettii” più popolari sono gestiti da Twemcache, che ne ottimizza la disposizione sui dischi. Ognuno di essi è associato a una serie di informazioni sul posizionamento geografico, ecc. che sono esposte alle API e Twemcache – in questo caso – ne ottimizza il calcolo, a livello di Central Processing Unit (CPU).
Il problema principale di Twitter con Memcached è stato chiamato slab calcification dagli sviluppatori. Il sistema, infatti, restringe la creazione dei singoli slab per la classe alla quale sono stati inizialmente associati a una dimensione predefinita. Quando sono creati dei nuovi elementi, devono essere associati a nuove classi con le stesse caratteristiche o la scrittura dei dati potrebbe fallire. Spesso, però, i server raggiungono la dimensione massima disponibile. Twemcache risponde con il meccanismo della random eviction.
Quest’ultima ammette il ridimensionamento degli slab, senza la necessità di riconfigurare l’intera struttura del cache server. Altre due caratteristiche di Twemcache sono la generazione delle statistiche priva di lock, una proprietà in comune col fork ideato da Facebook, e un logger asincrono. Sul repository mantenuto con GitHub sono disponibili tutte le informazioni utili a capire dettagliatamente di cosa si tratti. Twemcache è usato in associazione a Twemproxy, il proxy del protocollo già rilasciato sotto licenza Apache 2.0.
Via | Twitter
Twemcache è il fork di Memcached utilizzato internamente per Twitter é stato pubblicato su Ossblog.it alle 15:00 di mercoledì 11 luglio 2012. Leggete le condizioni di utilizzo del feed.