QNA > P > Per Cosa Viene Usata La Cache Tao In Facebook?

Per cosa viene usata la cache TAO in Facebook?

TAO è il data store distribuito che è ampiamente utilizzato in Facebook per memorizzare e servire il grafico sociale. L'intera architettura è altamente ottimizzata in lettura, supporta un modello di dati a grafo e funziona in più regioni geografiche. TAO conserva alcuni dei vantaggi chiave dell'architettura memcached/mysql separando nettamente i livelli di caching dal negozio persistente, permettendo a ciascuno di essi di essere scalato indipendentemente. A qualsiasi utente del sistema presenta una singola API unificata che fa apparire l'intero sistema come un gigantesco database a grafo.

I vantaggi chiave del sistema includono:

  1. Fornisce una separazione pulita della logica dell'applicazione/prodotto dall'accesso ai dati fornendo un'API a grafo semplice ma potente e un modello di dati per memorizzare e recuperare i dati. Questo permette agli ingegneri di prodotto di Facebook di muoversi velocemente.
  2. Impiegando una cache write-through TAO permette a Facebook di fornire una migliore esperienza utente e di preservare l'importantissima semantica di coerenza read-what-you-write anche quando l'architettura si estende su più regioni geografiche.
  3. Impiegando una cache read-through write-through TAO protegge anche meglio gli store persistenti sottostanti evitando problemi come thundering herds senza compromettere la coerenza dei dati.


TAO è stato in produzione presso Facebook per diversi anni e al suo picco serve più di un miliardo di richieste di lettura e diversi milioni di richieste di scrittura al secondo.

Abbiamo appena scritto un post sul blog di TAO [1] che fornisce un sacco di contesto sulla motivazione del lavoro, l'architettura generale del sistema e il modello di dati. Un documento tecnico completo su TAO è anche pubblicato come parte degli atti dell'Usenix ATC 2013 [2] che fornisce ancora più dettagli sul design e l'implementazione.

[1] TAO: The power of the graph
[2] TAO: Facebook's Distributed Data Store for the Social Graph

Di Keyser Lauterborn

Cosa succede quando un elemento privato e uno condiviso sono in cache? :: Quale percentuale dei dati complessivi di Facebook è in cache nel suo cluster memcached?
Link utili