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/
No hay comentarios:
Publicar un comentario