Lección 7: In-memory data grids II Flashcards
Cache de segundo nivel
• Las cachés de segundo nivel se utilizan para desacoplar el
acceso a sistemas de almacenamiento mas lentos.
• Cuando se pide un dato, primero se comprueba si está en
caché, si no esta se busca en el sistema de almacenamiento
primario y se guarda en caché.
DataGrid como cache de segundo nivel
• Además de almacenar cualquier estructura que
insertemos manualmente, algunos IMDG se pueden
configurar como caches automáticas para otros sistemas.
• Write through / write behind
• Al escribir utilizando caché de nivel 2, el dato suele escribirse en cache y luego la cache lo almacena
en base de datos.
• Utilizando “write through” el dato se escribe de forma síncrona en los dos, la llamada no vuelve hasta
que el dato está en cache y base de datos.
• Utilizando “write behind” el dato se escribe de forma asíncrona en base de datos, la llamada vuelve
en cuanto se escribe en cache
DataGrid como mecanismo de ejecución
Para realizar estas operaciones masivas las tecnologías
IMDG ofrecen dos opciones:
• Cargar todos los datos y modificar y volver a escribir.
• Utilizar “EntryProcessors”
EntryProcessors
en lugar de mover los datos (muchos GB) al código (<1KB),
mover el código a los datos.
• Se ahorra tráfico de red y el rendimiento mejora en muchos órdenes de
magnitud, ya que el código se ejecuta en los servidores donde los datos están en
memoria, lo cual hace que sea muy rápido acceder a ellos y modificarlos.
• El código además se ejecuta en paralelo en todos los nodos sobre los datos
locales de cada nodo, permite incrementar el rendimiento aumentando el
número de nodos.
IMDG como grid de computación
• Un cluster IMDG se suele utilizar para almacenar datos, sin embargo puede tener mucha potencia de computación.
• Además de EntryProcessors ligados a los datos, algunas tecnologías permiten lanzar ejecuciones independientes de los
datos.
• Las operaciones que lancemos deben ser paralelizables si
queremos que todos los nodos puedan ejecutarlas
simultáneamente
Executors en Hazelcast
• Hazelcast puede funcionar como un grid de computación
mediante el concepto “Executor”
• El código es “copiado” a cada nodo desde el cliente y
luego ejecutado dentro de los mismos.
MapReduce: Conceptos básicos
es un modelo de programación especial diseñado
para lograr paralelización sobre el procesado masivo de datos.
Cualquier algoritmo convertido a MapReduce es siempre
paralelizable
• El procesado se divide en varias partes (partition, map, shuffle,
reduce). Cada uno de estos parte es a su vez paralelizable.
MapReduce: Fases
• Partition: Se dividen los datos de entrada en particiones
independientes siguiendo algún criterio.
• Map: Se procesan los datos de cada partición, extrayendo y
convirtiendo los datos que nos interesan.
• Shuffle: Se reordenan, agrupan y envían los datos mapeados
antes de procesarlos en los reducers.
• Reduce: Se procesan los resultados del map para generar el
resultado del cómputo.
Búsquedas avanzadas en mapas
- EntryProcessor.
- Predicados/Filtros.
- Pseudo-SQL
Opciones para almacenar los datos
- Binaria
• No es necesario serializar el dato para enviárselo a un cliente.
• Hay que deserializar el dato cuando se quiere utilizar con un EntryProcessor - Objeto
• Es necesario que serializar el dato antes de enviárselo al cliente.
• No es necesario deserializar el dato cuando se quiere utilizar desde un EntryProcessor.
Índices
• A la hora de realizar búsquedas por valor, lo ideal sería
buscar únicamente por el campo que necesitamos.
• Las tecnologías IMDG permiten definir índices (ordenados
o no) sobre un campo que esté presente en los objetos
“Valor” de la cache, que acelerará esta búsqueda.
Persistencia de mapas/caches
• Mapas en memoria RAM se pierden si la aplicación falla/el servidor se cae.
- Opciones de persistencia más comunes:
- BDD
- Fichero
- Personalizado
Tipos de persistencia
• Persistencia síncrona:
• Guarda los datos a la vez en la cache y en la BBDD/Fichero.
• Garantiza consistencia entre la cache y la BBDD.
• Fuerte impacto al rendimiento de escritura.
• Persistencia asíncrona:
• Guarda los datos en la cache y tras un tiempo intenta guardarlo en la
BBDD/Fichero en otro hilo.
• No garantiza consistencia entre la cache y la BBDD.
• Impacto casi inexistente al rendimiento de escritura.
Replicación WAN / Push replication
• Copia de mapas o caches de un clúster a otro.
• Normalmente utilizado entre diferentes Islas con
latencias elevadas (Madrid, Londres, Tokyo…) o entre
dominios de seguridad.
• Cada isla funciona y rinde de forma independiente, sin
verse afectada por la conexión entre ambas.
• Activa-activa o activa-pasiva.