Lección 7: In-memory data grids II Flashcards

1
Q

Cache de segundo nivel

A

• 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é.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

DataGrid como cache de segundo nivel

A

• Además de almacenar cualquier estructura que
insertemos manualmente, algunos IMDG se pueden
configurar como caches automáticas para otros sistemas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

• Write through / write behind

A

• 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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

DataGrid como mecanismo de ejecución

A

Para realizar estas operaciones masivas las tecnologías
IMDG ofrecen dos opciones:
• Cargar todos los datos y modificar y volver a escribir.
• Utilizar “EntryProcessors”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

EntryProcessors

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

IMDG como grid de computación

A

• 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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Executors en Hazelcast

A

• 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

MapReduce: Conceptos básicos

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

MapReduce: Fases

A

• 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Búsquedas avanzadas en mapas

A
  • EntryProcessor.
  • Predicados/Filtros.
  • Pseudo-SQL
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Opciones para almacenar los datos

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Índices

A

• 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Persistencia de mapas/caches

A

• Mapas en memoria RAM se pierden si la aplicación falla/el servidor se cae.

  • Opciones de persistencia más comunes:
  • BDD
  • Fichero
  • Personalizado
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Tipos de persistencia

A

• 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Replicación WAN / Push replication

A

• 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Replicación Activa-activa

A

Ambos cluster permiten modificar valores.

• Necesita una política de merge.

17
Q

Replicación Activa-pasiva

A

Solo uno de los cluster permite modificar valores.

• El otro cluster simplemente tiene una vista de solo-lectura de la cache.

18
Q

Los datos en los sistemas de IMDG se suelen almacenar en “plano” y se serializan a binario para poder enviarlo a los clientes cuando así lo requieren.

Seleccione una:
Verdadero
Falso

A

Falso

19
Q

Al conectar como miembro parcial del cluster evitamos problemas de “shuffle” o rebalanceo de datos ya que los miembros parciales no almacenan datos del cluster.

Seleccione una:
Verdadero
Falso

A

Verdadero

20
Q

Los índices en los sistemas de IMDG me permiten realizar búsquedas por valor con un rendimiento similar al de las búsquedas por clave, siempre y cuando haya creado un índice para el valor por el que quiera buscar.

Seleccione una:
Verdadero
Falso

A

Verdadero

21
Q

En los sistemas de IMDG cuando utilizamos replicación WAN de tipo activa-activa, todos los clusters pueden modificar valores pero necesitamos establecer una política de “merge” en el caso de que el mismo valor se modifique en dos clusteres a la vez.

Seleccione una:
Verdadero
Falso

A

Verdadero

22
Q

El particionamiento de los datos de un IMDG por el hash de la clave siempre es la mejor solución ya que me garantiza una distribución homogénea de los datos.

Seleccione una:
Verdadero
Falso

A

Falso

23
Q

¿Por qué en algunos casos necesitamos soluciones de persistencia en los IMDG para poder recuperar los datos desde un almacenamiento “no volátil” en caso de pérdida del cluster?

Seleccione una o más de una:

a. Regenerar los mapas de caché en algunos casos puede ser demasiado costoso o imposible.
b. Tengo una garantía adicional de recuperación, independientemente de que pueda recuperar los datos por otros medios.
c. El tiempo de recarga del cluster desde los sistemas originales puede ser demasiado grande como para garantizar correctamente el servicio de la aplicación.

A

a. Regenerar los mapas de caché en algunos casos puede ser demasiado costoso o imposible.
b. Tengo una garantía adicional de recuperación, independientemente de que pueda recuperar los datos por otros medios.
c. El tiempo de recarga del cluster desde los sistemas originales puede ser demasiado grande como para garantizar correctamente el servicio de la aplicación.

24
Q

El mecanismo de escritura de “write behind” para caches de segundo nivel realiza la escritura de cache al sistema de almacenamiento primario en segundo plano.

Seleccione una:
Verdadero
Falso

A

Verdadero

25
Q

¿Cuales de las siguientes características son propias del modelo de programación “Map-Reduce”?

Seleccione una o más de una:

a. No permite concatenar múltiples ejecuciones
b. La fase “partition” se encarga de dividir los datos de entrada en particiones procesables de forma independiente
c. la fase “reduce” procesa los datos de cada partición extrayendo aquellos que nos interesan
d. Cualquier algoritmo que se pueda expresar como map-reduce es siempre paralelizable
e. Muchos IMDG tienen motores internos para la ejecución de map-reduce

A

b. La fase “partition” se encarga de dividir los datos de entrada en particiones procesables de forma independiente
d. Cualquier algoritmo que se pueda expresar como map-reduce es siempre paralelizable
e. Muchos IMDG tienen motores internos para la ejecución de map-reduce

26
Q

Podemos utilizar los sistemas de IMDG para realizar computaciones en paralelo pero únicamente si se realiza sobre los datos almacenados en el cluster

Seleccione una:
Verdadero
Falso

A

Falso

27
Q

Los sistemas de IMDG sobre Java suelen utilizar sus propios mecanismos de serialización binaria para serializar y almacenar los objetos en lugar de la serialización que da Java por defecto. Lo hacen porque la serialización de Java es lenta y genera resultados mas grandes que otras soluciones.

Seleccione una:
Verdadero
Falso

A

Verdadero

28
Q

La persistencia asíncrona tiene un fuerte impacto en el rendimiento de escritura pero garantiza la consistencia de datos entre la cache y el sistema de persistencia.

Seleccione una:
Verdadero
Falso

A

Falso

29
Q

Las caches de segundo nivel se utilizan para almacenar una copia de todos los datos del almacenamiento primario con el objetivo de tener un acceso mas rápido a los datos.

Seleccione una:
Verdadero
Falso

A

Falso

30
Q

¿Que ventajas tiene utilizar el grid como mecanismo de ejecución con sistemas de tipo “entry processor” respecto a las soluciones adicionales donde se extraen los datos y se calcula en “local”?

Seleccione una o más de una:

a. La ejecución es completamente segura y no afecta al cluster de almacenamiento
b. Evitamos la necesidad de mover los datos, reduciendo tráfico de red y tiempos
c. La ejecución se realiza de forma paralela en todos los nodos, utilizamos la potencia de cómputo de cada uno de ellos

A

b. Evitamos la necesidad de mover los datos, reduciendo tráfico de red y tiempos
c. La ejecución se realiza de forma paralela en todos los nodos, utilizamos la potencia de cómputo de cada uno de ellos

31
Q

Podemos incrementar el número de nodos para tener mas JVMs y reducir los problemas por GC en los sistemas de IMDG al tener menos datos por nodo.

Sin embargo esto tiene el problema de que al aumentar el número de nodos también incrementa la comunicaciones entre ellos lo que puede afectar a sistemas grandes. Del mismo modo si tenemos mas de un nodo por máquina física podemos perder datos si se rompe la máquina física y no está bien configurada la localidad del dato.

Seleccione una:
Verdadero
Falso

A

Verdadero

32
Q

Algunos de los problemas de conectar al cluster en los sistemas de IMDG como “miembro completo” del cluster son:

Seleccione una o más de una:

a. Cada cliente tiene que abrir una conexión a todos los servidores del cluster, si el número de clientes es alto podemos provocar un problema de tráfico de red.
b. La latencia a la hora de trabajar con los datos del cluster es peor que si conectamos como cliente externo debido al incremento de comunicación interna
c. Al conectar como miembro completo se produce un movimiento de datos “shuffle” para rebalancear el cluster. Esto no es deseable en un cluster compartido ya que puede afectar al rendimiento.
d. La conexión entre el cliente y el cluster puede ser peor que entre los miembros del cluster, al entrar como miembro y formar parte de todas las comunicaciones estamos afectando a todos debido a que la conexión del cliente es mas lenta.

A

a. Cada cliente tiene que abrir una conexión a todos los servidores del cluster, si el número de clientes es alto podemos provocar un problema de tráfico de red.
c. Al conectar como miembro completo se produce un movimiento de datos “shuffle” para rebalancear el cluster. Esto no es deseable en un cluster compartido ya que puede afectar al rendimiento.
d. La conexión entre el cliente y el cluster puede ser peor que entre los miembros del cluster, al entrar como miembro y formar parte de todas las comunicaciones estamos afectando a todos debido a que la conexión del cliente es mas lenta.

33
Q

Conectar como clientes externos al cluster ofrece peor latencia al tener un salto mas de red pero evitamos la creación de conexiones innecesarias y afectamos al cluster lo mínimo posible en caso de conexiones y desconexiones de clientes.

Seleccione una:
Verdadero
Falso

A

Verdadero

34
Q

Almacenar grandes volúmenes de datos en sistemas de IMDG en Java puede resultar un problema ya que en el caso de borrado, la ejecución del “garbage collector” puede detener el sistema por demasiado tiempo.

¿Que opciones tenemos para evitar o reducir esta problemática?

Seleccione una o más de una:

a. Utilizar discos de almacenamiento mas rápidos de forma que el tiempo de acceso a los datos se reduzca a la hora de ejecutar el GC
b. Cambiar el sistema de recolección de basura para que haga recolección “concurrente” que es mas rápida que la serie que se suele utilizar normalmente
c. Dividir el cluster en mas JVMs de forma que cada una de ellas almacene menos datos. Esto hace que las pausas por GC se reduzcan al tener que liberar menos memoria.
d. Utilizar máquinas virtuales especiales que no se vean tan afectadas por este problema.
e. Utilizar memoria “Off Heap” para que la memoria de los datos resida fuera del Heap de la máquina virtual y se gestione de forma manual sin pausas por GC

A

c. Dividir el cluster en mas JVMs de forma que cada una de ellas almacene menos datos. Esto hace que las pausas por GC se reduzcan al tener que liberar menos memoria.
d. Utilizar máquinas virtuales especiales que no se vean tan afectadas por este problema.
e. Utilizar memoria “Off Heap” para que la memoria de los datos resida fuera del Heap de la máquina virtual y se gestione de forma manual sin pausas por GC