martes, 16 de octubre de 2012

Topologías de Oracle Coherence Parte 2


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.

Sin embargo, el estar manteniendo replicados todos los objetos en todos los servidores nos favorece en cuanto a Disponibilidad. La disponibilidad es directamente proporcional al número de servidores que se incluyan 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 de 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).

Conclusión:

  • Las lecturas son locales, una latencia nula.
  • Cada escritura requiere N-1 escrituras adicionales. Donde N es el número de servidores en nuestro cluster.
  • La Disponibilidad es tan buena como número de servidores se tenga en el cluster.
  • El tamaño del Cache se limita al tamaño del servidor más pequeño.
  • En esta topologia la Disponibilidad es inversamente proporcional al rendimiento de las lecturas.


Articulo Completo listo para descargarse en el siguiente link: https://www.dropbox.com/s/7dv1aom6u1lzqan/Topologias%20de%20Coherence.pdf

No hay comentarios:

Publicar un comentario

Oracle ACE Director Award - Deiby Gómez

Thanks #OracleACE Program for this awesome certificate recognizing the work I have done in the community for the last year. Looking forwa...