Near
Cache
En el artículo anterior (Parte 3: Topologia Distribuida)
se trató la topología de replicación en Oracle Coherence, se vio que es una
buena topología para soportar una alta tasa de escrituras pero que el
rendimiento en las lecturas se ve degradado.
En este nuevo artículo se tratará la topología “Near
Cache” la cual es un hibrido entre la topología de replicación y la topología
distribuida teniendo como consecuencia lo mejor de ambas topologías, un buen rendimiento
para lecturas y un buen rendimiento para escrituras.
La topología Near cache se divide en dos capas:
- Front Cache
- Back Cache
El Front Cache no es más que un subconjunto de
elementos en cada uno de los nodos de Coherence, los cuales son accedidos
localmente para realizar las solicitudes de lectura. De esta manera se alcanza
una latencia nula (ventaja de topología de replicación).
El Back Cache se encarga de recibir todas
las solicitudes de escritura tal como se realiza en la topología distribuida.
Por medio de una clave hash se localiza el nodo que aloja el objeto y se
realiza la escritura en ese nodo.
Entonces, toda solicitud de escritura es enviada
directamente al Back Cache y toda solicitud de lectura es realizada por el
Front Cache. La capa que tiene los objetos verdaderos es la Capa distribuida (Back
Cache), por lo tanto, el Front Cache no es más que una imagen de lo que se
tiene en el Back Cache con el único objetivo de hacer las lecturas locales y
alcanzar una latencia nula. Acá existe un problema, el Front Cache puede tener
objetos “caducados”. Para solucionar este problema la topología Near Cache
proporciona las siguientes formas de desalojar objetos en el Front Cache:
- None
- Present
- All
- Auto
Método de
desalojo de objetos NONE: No desaloja los objetos en el Front Cache. En
algunas aplicaciones no es tan importante que los objetos muestren información
a la fecha, puede tolerarse cierto retraso en los datos. La ventaja de este método
es que no implica ninguna carga adicional en la red para poder mantener los
datos a la fecha. No existe comunicación para sincronización entre Front Cache – Back Cache. Sin embargo, no
siempre se puede querer tener los datos atrasados por siempre, entonces quizás se
deba usar alguna estrategia de expiración basado en tiempo.
Metodo de
desalojo de objetos PRESENT: Este método realiza el desalojo de los objetos
por medio de “listeners” los cuales son los encargados de monitorear los
cambios realizados en el Back Cache y sincronizarlos hacia el Front Cache. Se
deben crear tantos listener como objetos se tengan en el Front Cache. Es decir,
para cada objeto en el Front Cache se debe crear un listener. Cuando un objeto
es modificado en el Back Cache el listener es el encargado de desalojar el
objeto caducado en el Front Cache y situar la nueva imagen de dicho objeto,
esta sincronización es realizada de manera asíncrona, de tal manera que entre
la modificación del objeto en el Back Cache hasta la modificación del objeto en
el Front Cache existe un tiempo mínimo en el que el objeto aun sigue estando
caducado. Por lo común este tiempo mínimo es aceptado, sin embargo, si se desea
necesariamente tener los objetos en el Front Cache totalmente a la fecha se
puede incurrir explícitamente en un bloqueo del objeto mientras el listener
actualiza la imagen en el Front Cache. Por supuesto que la sincronización entre
el Back Cache y el Front Cache generará más tráfico en la red por lo que esta
es una de las desventajas de esta topología.
Método de
desalojo de objetos ALL: Este método es muy parecido al método PRESENT, la
diferencia radica en que en el método PRESENT se tiene que crear un listener
por cada objeto situado en el Front Cache, mientras que en el método ALL se
crea un solo listener. La ventaja de esto es que el número de ciclos de CPU se
reducirán debido a que solo hay un listener procesando información, la
desventaja es que el tráfico en la red se aumentará y quizás hasta se vean
encolamientos debido a que solo existe un listener atendiendo las
notificaciones de cambios en los objetos situados en el Back Cache. Por lo
regular los ambientes que tienen más alta tasa de lecturas que de escrituras y
están utilizando la topología Near Cache se deciden utilizar el método de
desalojo PRESENT, pero si al contrario, se tiene una tasa de escrituras más
alta a la de lecturas suelen utilizar el método ALL para desalojar objetos caducados.
Método de
desalojo de objetos AUTO: Este método realiza cambios automáticamente entre
el método PRESENT y el método ALL basándose en estadísticas de las
transacciones realizadas en cada una de las capas (Front Cache y Back Cache). La
estrategia default de la topología Near Cache es AUTO, sin embargo, este método
no necesariamente realiza un adecuado cambio entre los métodos PRESENT Y
ALL pues se basa en sus propias
estadísticas, por lo que se aconseja establecer el método de manera explícita
entre el PRESENT Y ALL, o usar NONE si es aceptable que las aplicaciones
muestren datos que no estén necesariamente a la fecha.
En la siguiente imagen se realiza
una operación de escritura del objeto D desde el nodo 1 de Coherence, este
objeto es delegado directamente al Back Cache, el cual a su vez localiza que el
objeto está alojado en el nodo 4 y su respectivo backup es alojado en el nodo
3. El Back Cache realiza pues la escritura del objeto en el nodo 4 y su
respectivo backup en el nodo 3.
En la siguiente imagen se realiza
una operación de lectura del objeto B, esta operación es realizada por el Front
Cache, el cual sabe que tiene que ir a
traer la imagen más reciente del objeto pues
se encuentra caducada, dicha imagen es traída desde el nodo 2. También se
realiza una lectura del objeto C la cual se realiza de manera local logrando
una latencia nula.
CONCLUSION: Esta
topología contiene las ventajas que proporciona la tecnología distribuida y la tecnología
replicada, sin embargo, la desventaja es que se debe incurrir en un
procesamiento adicional que es dado por el método de desalojo que se utilice.
Es necesario también realizar un análisis previo para poder determinar el
método de desalojo, pues si se tiene un método de desalojo no adecuado puede
tener como consecuencia un mal rendimiento u objetos no desalojados
adecuadamente.
Hasta aqui doy por finalizado el articulo de Topologias de Oracle Coherence, a continuación un link de cada uno de las partes conforman el articulo:
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