Introducción
a Oracle Coherence:
Oracle
Coherence es un producto dentro de Fusion Middleware que permite crear redes de
datos en memoria para agilizar las lecturas/escrituras de nuestros objetos,
esto sin descuidar la confiabilidad, la accesibilidad y la seguridad de los
datos. Coherence también es una solución escalable, la capacidad de memoria
puede llegar a ser tan grande como se requiera, solo es necesario agregar más
nodos a la configuración.
¿La Disponibilidad es importante?
El
tema de la disponibilidad se subestima en la vida real, esto es un error. La
disponibilidad de nuestros datos debe ser un tema de mucha importancia,
podemos establecer la disponibilidad como un “todo”, a esto le llamaremos: La
disponibilidad del Sistema.
La
disponibilidad del sistema puede ser definido como el producto de la
disponibilidad de cada componente que está dentro de nuestro sistema.
DS=DC1*DC2*DC3*….*DCn
Donde: DS=Probabilidad de Disponibilidad
del Sistema
DC1=Probabilidad
de Disponibilidad del Componente 1
DCn=Probabilidad de Disponibilidad
del Componente N
Por
ejemplo, si tuviéramos los siguientes componentes:
- Servidor Web
- Servidor de aplicaciones
- Servidor de base de datos
Y cada
uno de los anteriores componentes tuviera una disponibilidad del 99%, entonces
se espera que la Disponibilidad del Sistema (DS) sea la siguiente:
DS=0.99*0.99*0.99=0.97=97%
Si
usted considera que su empresa puede tolerar un sistema con disponibilidad del
97%, está bien. Sin embargo, debe tomar en cuenta que el 97% de Disponibilidad
es 11 días al año. ¿Acepta su empresa 11 días al año sin servicio?
Existen
dos maneras de mejorar la disponibilidad de nuestro sistema:
1. Desacoplar componentes: Para tener componentes aislados
dentro de nuestro sistema, de tal manera que si un componente falla no afecte a
los demás y en consecuencia… no afecte el sistema.
Coherence
logra tener componentes desacoplados introduciendo el concepto de operaciones
asincrónicas. Esto permite que aunque la capa de datos este inaccesible
coherence seguirá aceptando operaciones de lectura/escritura. Las escrituras las
irá encolando de tal manera que cuando la capa de datos este nuevamente
disponible se realicen las operaciones sobre ella. Esto trae como beneficio que
una falla de Base de datos sea totalmente transparente al usuario final.
Sin
embargo, hay que tomar en cuenta los siguientes puntos:
· Muchas aplicaciones utilizando una misma base de datos puede provocar conflictos. Al tener las
escrituras de manera asíncronas puede haber conflictos entre las escrituras de
las demás aplicaciones.
· Cada
vez que un usuario necesite consultar datos “viejos”, se debe realizar el
refrescado de estos elementos de manera síncrona, lo cual agrega un pequeño
costo a la lectura.
· Si
toda la configuración de coherence se cae, las operaciones asíncronas encoladas
se perderán pues todo está en memoria. Entiéndase “toda” la configuración como
todas las maquinas virtuales de java en todos los servidores involucrados en la
configuración de coherence, incluido sus backups. Esto es poco probable, sin
embargo, es necesario dejarlo claro.
2. Redundancia en los componentes: Si usted quiere alcanzar una alta
disponibilidad de manera síncrona, la única alternativa es aumentar la
redundancia de los componentes.
Sin
embargo, la redundancia no es suficiente para lograr una disponibilidad del
100%. Para comprobar esto calculemos la probabilidad de falla de todo un
conjunto de componentes redundantes:
FCC=FC1*FC2*…*FCN.
Donde FCC=Probabilidad de Falla del
Conjunto de Componentes redundantes.
FC1=Probabilidad de Falla del
Componente 1.
FCN=Probabilidad de Falla del
Componente N.
Haciendo
uso del dato “Disponibilidad de un componente” podemos calcular su probabilidad
de Falla:
FC=1-DC
Donde FC=Probabilidad de Falla de un Componente.
DC=Probabilidad de Disponibilidad
de un Componente.
Por
ejemplo, nuestro componente Servidor de Aplicaciones tiene una disponibilidad
del 99% entonces su Probabilidad de Falla es:
FC=1-0.99=0.01
Si
a este componente le agregamos un Servidor de Aplicaciones de tal manera que
nuestro componente ahora sea redundante, tendríamos la siguiente probabilidad
de Disponibilidad:
DC=1-(0.01*0.01)=1-0.0001=0.9999=99.99%
Si
a cada uno de los 2 componentes restantes que tenemos en nuestro Sistema
(Servidor Web y Servidor de Bases de Datos) le agregamos un servidor de tal
manera que sean ahora redundantes, la disponibilidad de cada componente quedaría
de la siguiente manera:
·
Servidor
Web = 99.99%
·
Servidor
de Aplicaciones = 99.99%
·
Servidor
de Base de Datos = 99.99%
Entonces
la disponibilidad de todo nuestro Sistema quedaría de la siguiente manera:
DS=0.9999*0.9999*0.9999=0.9997=99.97%
Y
la probabilidad de falla de todo nuestro Sistema quedaría así:
FS=1-0.9997=0.0003=0.03%
CONCLUSION:
·
Sin
redundancia, nuestro sistema tendría 11 días sin servicio al año.
·
Con
redundancia, (un componente más) nuestro sistema tiene solamente 2.6 horas al
año.
Reformulo mi pregunta anterior: ¿Acepta su empresa 2.6 horas al año sin servicio?
2.6
horas al año sin servido es un dato relativamente aceptable, sin embargo ¡no es
100% de Disponibilidad!
Por
intuición vemos que el 100% de Disponibilidad lo vamos alcanzando
proporcionalmente a la redundancia que se le dé a cada componente, pero ahí ya tendríamos
que involucrar el factor costo. ¿Existe alguna alternativa que nos elimine la necesidad de compra de N componente redundantes? ¡Sí,
Oracle Coherence!
Arquitectura de Oracle Coherence:
Oracle
Coherece trabaja con una arquitectura de “Cluster”.
Esta
definición ya es muy conocida, sin embargo, a continuación expongo la
definición formal:
Cluster:
Es un conjunto de componentes interconectados entre sí trabajando como uno
solo.
Un
cluster de Oracle Coherence está formado por varios “servidores coherence” que
no son más que instancias de maquinas virtuales java las cuales trabajan interconectadas entre sí para formar un solo componente: El cache de Coherence.
Cada
una de estos servidores puede alojar datos de varias maneras las cuales
dependen de los siguientes principales factores:
- ¿Sus aplicaciones realizan muchas lecturas?
- ¿Sus aplicaciones realizan muchas escrituras?
- ¿Sus aplicaciones toleran leer datos que no están a la fecha?
- ¿Sus aplicaciones necesitan tener los datos altamente seguros?
- ¿Es muy grande la cantidad de datos que manejan sus aplicaciones?
- ¿Utiliza SUN JDK u Oracle Jrockit?
Dependiendo
de las respuestas que se les dé a cada una de las anteriores preguntas se puede
elegir entre las siguientes topologías básicas de Coherence:
NOTA: las 3 topologías presentadas a
continuación no son las únicas de las cuales dispone Oracle Coherence, las topologías
son muy personalizables.
- Topología de Replicación
- Topología Particionada
- Near-Cache
Parte 2: Topologias de Coherence Parte 2.
Articulo Completo listo para descargarse en el siguiente link: https://www.dropbox.com/s/
El link esta roto. Donde puedo encontrar más información de coherence
ResponderEliminar