¿Qué es un Data Grid?
In-Memory Data Grid es un concepto que facilita el caché creando una capa de almacenamiento de datos de alta velocidad que almacena información de manera volátil en memoria. Gracias a ello, podemos evitar demoras en tiempo de consulta o de cálculos complejos que han sido previamente realizados.
Existen dos tipos de caché:
- Caché local: se encuentra contenida dentro de la propia aplicación.
- Caché de sistemas distribuidos: se encuentra desplegada en uno o varios nodos formando una gran caché lógica, compartiendo distintas estructuras de datos de con una flexibilidad cómoda.
A continuación vamos a ver uno de los principales productos de Data Grid del mercado: Hazelcast.
Hazelcast
Se trata de un sistema de almacenamiento distribuido de código abierto cuyo fundamento principal es compartir distintas estructuras de datos de forma distribuida con una escalabilidad flexible y cómoda. Los datos son distribuidos entre los nodos de manera balanceada, pero siendo tolerante a fallos frente a la caída de nodos.
Arquitectura
- Despliegue y configuración de los nodos para trabajar con nuestros orígenes de datos.
- Cliente con el cual nos comunicamos y configura los nodos.
- Microservicios: Desplegamos JET, trabaja de manera similar y nos permite embeber módulos en cada uno de los microservicios.
Despliegues
Docker Cloud
Levantar instancias de Hazelcast dentro de contenedores docker de forma independiente o como clúster. Podremos levantar un cliente para su gobierno o el «Hazelcast Management center».
Docker & AWS / AzureD
Funcionamiento igual al anterior, pero desplegando los contenedores en cualquier plataforma cloud que nos interese.
Kubernetes & Docker Swarm
Podremos gobernar Hazelcast mediante Kubernetes y Docker Swarm, siendo este caso el recomendado para usar con Azure.
Usos
¿Y qué utilidad tiene todo esto? Veamos algunos ejemplos de uso:
- Compartir datos y trabajo entre varios servidores.
- Caché distribuido de datos.
- Comunicación segura entre servidores.
- Particionado de datos en memoria.
- Procesamiento paralelo.
- Gestión fail-safe de datos.
- Lanzar consultas complejas contra los datos cacheados.
- Distribuir la carga.
- Streamer en tiempo real para la detección del rendimiento.
- Almacenamiento de datos de sesión en aplicación Web.
Hazelcast JET
Trabaja de manera dinámica y en tiempo real con streams de datos, y nos ofrece la posibilidad de embeber cada nodo en aplicaciones y microservicios. Su uso se recomienda cuando nos encontramos ante grandes volúmenes de datos y la necesidad de tiempo real. Nos ofrece un motor de baja latencia y una alta tasa de transferencia.
Algunas características
- Baja latencia end-to-end.
- Hazelcast IMDG embebido.
- Simple de usar: un único JAR sin dependencias.
- Ligero y embebible.
- Despliegue en cloud.
Usos Jet
- Recomendable para su uso en microservicios.
- Conexión con DataBrokers.
- Integración y deployment sencillo.
- Soporte para Big Data y IoT.
Imagen de cabecera: Julius Drost en Unsplash