jueves, 25 de octubre de 2012

Topologías de Oracle Coherence Parte 3


En la parte 2 del presente artículo se conoció la topología de replicación, en la cual vimos que es muy buena topología a implementar cuando nuestro ambiente realiza un gran porcentaje de lecturas y pocas escrituras, también vimos que la Disponibilidad es tan buena como nodos en el cluster existan. En esta parte del articulo se verá la topología distribuida, en qué ambientes se debería implementar, sus ventajas y desventajas.

Topología Distribuida:

La  topología distribuida de Oracle Coherence almacena  cierta parte de los objetos en cada uno de los nodos del cluster, es decir, distribuye toda la información entre los nodos, de tal manera que cada nodo posea 1/n de la información, donde n es el número de nodos en el cluster.

Ya que cada nodo del cluster posee únicamente 1/n de la información, podríamos afirmar que a diferencia de la topología de replicación, se tendrá que incurrir en un costo adicional en un porcentaje de solicitudes de lectura ya que no necesariamente la información va a estar local sino que se deberá ir a un diferente nodo y leer la información desde ahí.

Entonces podríamos afirmar que (N-1)/N de las operaciones de lectura irán a un diferente nodo a leer la información. Por lo tanto el tráfico en la red aumentará debido la transferencia de objetos entre los nodos. Sin embargo, la localización del nodo que posee un determinado objeto se realiza por una clave hash lo cual hace muy rápida la localización de dicho nodo, es casi una comunicación de punto a punto. Cada uno de los nodos del cluster conocen todas las claves hash necesitadas de todos los objetos.

En la siguiente imagen se puede apreciar que la lectura del objeto A es realizada de manera local logrando una latencia nula (Característica de la topología de replicación), mientras que el objeto B es leído desde el nodo 2, el objeto C desde el nodo 3 y el objeto D desde el nodo 4, creando en cada una de esas solicitudes de lectura un aumento de uso de la red.


También es necesario indicar que los objetos en cada uno de los nodos del cluster dentro de una topología distribuida se mantienen serializados, lo cual implica un costo adicional en cada una de las lecturas, el costo de deserialización. En esta topología distribuida a diferencia de la topología de replicación los objetos siempre se mantienen serializados, esto se realiza con la intención de que sea más rápida la transferencia de un objeto hacia otro nodo del cluster cuando lo necesite.

De las lecturas podremos sacar las siguientes conclusiones:

  • (N-1)/N de las operaciones de lectura se realizará obteniendo la información desde un nodo remoto, donde N es el número de nodos.
  • Una lectura lleva implícito el costo de deserialización.
  • En 1/N de las operaciones de lectura serán realizadas de manera local obteniendo una latencia nula, donde N es el número de nodos.
  • La identificación del nodo que posee un determinado objeto es realizado por una clave hash.

Las operaciones de escritura se ven mejoradas en esta topología distribuida a comparación de la topología de replicación ya que cada escritura es realizada únicamente en el nodo que posee el objeto. Sin embargo, si cada nodo posee únicamente 1/N parte de la información, la disponibilidad sería muy mala, de tal manera que si un nodo falla toda la información que ése nodo almacena se verá perdida. Coherence en ésta topología distribuida introdujo el concepto de Backup para remediar este problema.

Un nodo puede tener al menos un backup de toda la información que posee y alojarlo en otro nodo del cluster, de tal manera que cuando ese nodo tenga una falla, Coherence detecté en qué nodo se encuentra su respectivo backup, lo restaure y la información esté disponible nuevamente, siendo todo este proceso de recuperación totalmente transparente al usuario. Un nodo puede tener M backups si asi se desea, y cada escritura no es declara finalizada hasta que haya sido escrita en cada uno de los backups que posea el nodo. Sin embargo, hay que tomar en cuenta que para cada escritura realizada a un nodo se hará (Q -1) escrirutas adicionales, donde Q es el número de backups que posee ese nodo. Entonces podríamos decir que en esta topología la Disponibilidad es inversamente proporcional al rendimiento de las operaciones de escrituras. En la vida real con esta topología se maneja únicamente un backup para cada nodo para mejorar la Disponibilidad, lo cual es la recomendación de oracle.

En la siguiente imagen podemos observar que cada nodo posee un solo backup, por lo tanto porq cada escritura de un objeto, se realizará una escritura adicional. El objeto A es escrito de manera local al nodo 1 y su backup es realizado al nodo 4. El objeto C es escrito de manera remota al nodo 3 y su backup es escrito al nodo 1. Igualmente la ubicación del nodo que posee el objeto es realizado por una clave hash.


En la siguiente imagen se puede apreciar que el nodo 2 sufre una falla. El nodo 2 almacena el objeto B. Cuando Coherence reconoce la falla del nodo 2 automáticamente localiza el nodo en el que se encuentra su backup (nodo 3) y lo restaura, verifica qué backups de cuales nodos eran alojados en el nodo 2 (backup del objeto D) y vuelve a crear un backup en otro nodo (nodo 4).


En esta topología  se pueden crear nodos vacios, es decir que no almacenan objetos, sino que sirven únicamente como un punto de acceso a los objetos almacenados en los demás modos. A esta característica se le llama “Local Storage”.

En la siguiente imagen se puede ver que el nodo 1 y 2 no poseen objetos pues tiene la característica “LocalStorage=false”. Mientras que los nodos 3 y 4 almacenan toda la información.



CONCLUSION:
  • La mayoría de las lecturas se realizan a nodos remotos. 1/N de manera local con latencia nula, (N-1)/N de manera remota. Donde N es el numero de nodos.
  • El rendimiento de las escrituras se ve aumentado pues solo se realiza en el nodo que posee el objeto y en su respectivo nodo de backup, si este poseyera.
  • La Disponibilidad es inversamente proporcional al rendimiento de las escrituras.
  • Se pueden crear nodos vacios en diferentes versiones de JDK.
  • La localización del nodo para leer o escribir un objeto se realiza por claves  hash.
  • La recuperación ante fallas es transparente al usuario.

Revisado Por: Ing. Iván Garcia.

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