Por Deiby Gómez
Publicado en mayo 2013
Índice de contenidos
1. Introducción a Oracle Coherence
2. Topología de Replicación, ventajas y desventajas
3. Topología distribuida, ventajas y desventajas
4. Topología Near Cache, ventajas y desventajas
Topología de Replicación, ventajas y desventajas
En la parte 1 de este artículo de topologías vimos la importancia de tener altamente disponible nuestras aplicaciones, se realizaron algunas formulas para demostrar qué tan disponible es nuestro sistema. En esta segunda parte se tratará las ventajas y desventajas de una de las topologías básicas de Oracle Coherence: Topología de Replicación.
Topología de Replicación:
La topología de replicación almacena cada objeto que se envía a un determinado servidor de Coherence, en todos los demás servidores, de tal manera que cada cliente pueda acceder cualquier objeto de manera local, logrando con esto una latencia completamente nula.
En la siguiente imagen se puede observar que cada uno de los objetos (A,B,C,D) están replicados en cada uno de los servidores de Coherence. Y que cada lectura (get) está siendo realizada de manera local:
La latencia nula para un determinado objeto se logra después de su segunda lectura. Lo que sucede es que cuando un objeto es enviado al Cache de Coherence, se “serializa” y luego se manda a escribir a los N servidores de Coherence que existan en el cluster. Cada uno de los servidores recibe el objeto serializado y así lo mantiene hasta que reciba una primer solicitud de lectura, entonces deserializa el objeto y lo mantiene así para las siguientes lecturas, es ahí cuando se alcanza la latencia nula. Entonces podríamos decir que la primera lectura de un objeto implica un costo pequeño: El costo de deserializar el objeto.
Las escrituras en una topología de replicación no son tan eficientes como las lecturas, pues cada escritura implica N-1 escrituras adicionales, donde N es el número de servidores Coherence que se tienen en el cluster. Estas escrituras son necesarias realizarlas para que la información esté totalmente replicada, Coherence no termina una escritura completamente hasta que no haya sido escrita en los demás servidores.
En la siguiente imagen se ve que cuando se escribe el objeto A en el servidor 1, éste se replica a los 3 servidores restantes:
De esto podemos concluir que el rendimiento de las escrituras decaerá conforme se aumente el número de servidores Coherence que se tenga en el cluster.
Recuerde: El rendimiento de las lecturas es inversamente proporcional al número de servidores en el cluster.
Sin embargo, el estar manteniendo replicados todos los objetos en todos los servidores nos favorece en cuanto a Disponibilidad.
Recuerde: La disponibilidad es directamente proporcional al número de servidores en el cluster.
Cuando un servidor falla, únicamente el servidor que escribe un determinado objeto replicará el objeto a todos los demás servidores menos el que no está disponible. Cuando el servidor que falló vuelve a estar disponible, los servidores lo vuelven a tomar en cuenta para replicar los objetos.
En la siguiente imagen el servidor 2 ha dejado de estar disponible. Por lo tanto las escrituras del objeto A solo se realizan a los servidores 3 y 4.
En esta topología también se tiene la limitante que la suma del tamaño de todos los objetos dentro de un servidor no debe sobrepasar el tamaño del servidor más pequeño, esto es porque todos los datos deben ser mantenidos en todos los servidores. Por ejemplo, si se tienen los siguientes tamaños para nuestros 4 servidores:
JVM1 = 3GB.
JVM2 = 3GB.
JVM3 = 1GB.
JVM4 = 3GB.
Cada uno de los servidores solo podrá soportar una cantidad de 1GB en objetos, aunque los servidores 1,2 Y 4 tengan 3GB. Por lo tanto, si lo que nos importa es la disponibilidad de nuestros objetos y el tamaño total de los objetos no excede 1GB nuestra configuración estaría bien. Sin embargo, si se desea tener un total de objetos que exceda 1GB podríamos sacrificar un poco de Disponibilidad y extraer el tercer servidor, dejando únicamente 3 servidores (JVM1, JVM2 y JVM4).
De esta topología podemos concluir lo siguiente:
Publicado por Deiby Gómez.