La gestione della cache di secondo livello con Terracotta
In questo articolo parliamo di persistenza distribuita dei dati, in particolare di cache di secondo livello.
Prendiamo un esempio ricorrente e supponiamo di avere una rete al cui interno girano più istanze di una stessa applicazione, le quali poggiano sulla stessa base di dati (sia essa su un unico nodo o anch’essa distribuita).
Ogni nodo con attiva l’applicazione di cui sopra disporrà presumibilmente di una propria cache (naturalmente parliamo di cache applicativa, non hardware) per evitare di fare spesso le chiamate più frequenti al database e quindi ottimizzare i tempi di risposta dell’applicativo alle richieste degli utenti. Chiameremo “cache di primo livello” questo tipo di capacità dell’applicazione.
Se pensiamo che su ogni nodo gira la stessa applicazione, viene da pensare che (statisticamente) le richieste di dati al database saranno mediamente le medesime per tutti i nodi della rete. Perchè allora non implementare un livello di persistenza dei dati secondario, che eviti ad un nodo di chiedere al database le informazioni che qualche altro nodo ha già chiesto prima?
Questo tipo di meccanismo viene definito clustering o cache di secondo livello.
Terracotta è un framework che si occupa di clustering, ossia di creare un substrato di memoria condivisa tra più nodi di una stessa rete, il tutto configurando poche righe di XML.
Terracotta supporta l’integrazione con molti framework, tra cui Spring, Hibernate, Ehcache, Lucene e Quartz.