Terracotta

De Dos Ideas.
Saltar a: navegación, buscar

Terracotta es un software de código abierto que permite crear aplicaciones Java que pueden escalar a cualquier cantidad de computadoras, sin tener que crear código adicional o usar bases de datos para compartir datos dentro del cluster.

Terracotta utiliza el concepto de Memoria Adjunta a la Red (NAM - Network Attached Memory). El uso de NAM le permite a Terracotta distribuir en cluster a Máquinas Virtuales Java (JVM) directamente debajo de las aplicaciones, brindando alta disponibilidad y escalabilidad de forma transparente.

La ventaja de Terracotta es que la aplicación preparada para funcionar en cluster es exactamente igual a una aplicación Java común. Todos los conceptos y librerías que se usan (POJOs, Spring Framework, Hibernate, threads, sincronización, etc.) funcionan de la misma manera con Terracotta en un entorno distribuido, de la misma manera que funcionan en una única máquina virtual con muchos hilos de ejecución.

Terracotta funciona a nivel de memoria, por lo que no es necesario heredar de ninguna clase ni implementar ninguna interfaz para compatir objetos entre todas las máquinas virtuales del cluster (ni siquiera es necesario implementar java.io.Serializable).

En definitiva, se puede programar la aplicación de manera natural, y se deja a Terracotta que administre todo el trabajo para crear un entorno escalable y de alta disponibilidad.

Características

Terracotta es una alternativa más rápida, simple y barata que las bases de datos tradicionales para compartir datos entre distintos procesos. Terracotta persiste la información a disco y funciona en memoria, por lo que resulta más rápido y escalable que las bases de datos o la replicación por mensajería (siempre hablando dentro del contexto de compartir información entre procesos)

Algunas de las características de Terracotta:

  • Heap compartido entre todas las JVM (replicación de objetos, identidad de objetos entre todas las JVM)
  • Bloqueos distribuidos (sincronización, wait/notify y soporte para java.util.concurrent)
  • Coherencia de objetos garantizada
  • Persistencia a disco para una alta disponibilidad
  • Memoria virtual (el heap puede estar en Terracotta o en disco, de manera transparente)
  • Estructura de datos distribuida, como Maps, Lists, Arrays, Queues, y cualquier POJO
  • Integración con varios frameworks populares (Spring Framework, Apache Lucene, Compass, EhCache, Quartz, y muchos más)
  • Herramientas de monitoreo y administración
  • Alta disponibilidad y posiblidad de escalar horizontalmente los servidores de Terracotta

Ver también