Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Alto rendimiento y escalabilidad con Oracle Coherence

No description
by

Enrique Delgado

on 9 July 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Alto rendimiento y escalabilidad con Oracle Coherence

Alto rendimiento y escalabilidad con
FIN
Qué es Coherence?
Interacción con el cluster
Características avanzadas
a
Características y expectativas
del proyecto
Equipo de desarrollo geográficamente distribuído (¿España/India/Colombia?)
Servicios de back-office.
Tiempo de respuesta de servicio de disponibilidad con promedio de dos segundos (servicio ya existente con arquitectura legacy, a ser mejorado y optimizado).
Tiempo de respuesta de servicios de soporte con promedio de 200 milisegundos (servicios nuevos: Top Seller y Ranking).
Concurrencia del servicio: internacional.
Fuente de datos híbrida: RDBMS (Oracle Database) y NoSQL (Oracle Coherence).

No era posible (ni deseable) reemplazar al RDBMS por:
Otros servicios lo usan (incluso algunos nuestros).
Aplicaciones ADF.
Persistencia.
Auditoría e historiales.

Sincronización de las fuentes de datos:
Timeout.
Invocación al API de borrado/actualización.
OaqJmsBridge (triggers, ESB, Camel, EntryProcessor).
Por demanda (Clásico).
Proactivo: complementa el patrón por demanda, no esperar a que se le pida el dato sino que escribe en Coherence durante el start-up del servicio, tal vez un sub-conjunto de los datos. Después se aplica el patrón por demanda.
Pre-carga: máximo rendimiento por que reeamplaza al RDBMS, el cual solo se usa para transferir sus datos a Coherence durante el start-up del servicio. Después se deben sincronizar las fuentes de datos.
Patrones de uso de caché
Aspectos fundamentales
Data grid en memoria (caché distribuido)

Processing grid (motor de procesamiento distribuido)
Beneficios del modelo distribuido
Escalabilidad horizontal
A mayor capacidad de datos mayor capacidad de procesamiento
Tolerancia a fallos y balanceo de carga
Coherence proporciona una vista consistente de los datos
Cada nodo tiene un sub-conjunto de los datos.
Back-up de sus datos en los demás nodos.
Los nodos "caídos" son ignorados.
La cantidad de back-up's es configurable, pero tiene un costo.
Cómo funciona el caché distribuído?
Definición formal: es un conjunto de componentes interconectados entre sí trabajando como uno solo.

Un cluster de Oracle Coherence está formado por varios “servidores Coherence” (JVMs interconectadas entre sí para formar un solo componente: el caché de Coherence.

+Disponibilidad:
Desacoplar componentes.
Redundancia en los componentes.
Arquitectura de Oracle Coherence: Cluster
Topologías
Definición: disposición o arreglo, ya sea físico o lógico, de los elementos (nodos, enlaces, etc) de una red.

Veremos solo algunas:
Replicada.
Particionada.
Near-cache.
Replicada
Replicada - escritura
Replicada - pros y cons
Cada objeto se almacena en todos los nodos.
Lecturas en cualquier nodo.
La escritura es costosa por que cada dato se copia en todos los nodos
Pros
Cons
Lectura tan rápida como puede ser: latencia nula.
La disponibilidad es directamente proporcional al número de nodos.
Los nodos "caidos" son ignorados.
Los objetos se deserializan en la primer lectura.
Escritura es menos eficiente por que cada dato debe copiarse en
todos
los nodos.
El rendimiento de las escrituras es inversamente proporcional al número de nodos.
El nodo más pequeño define el límite del cluster.
Particionada
Particionada - nodo caído
Particionada pros
Cada nodo tiene una parte de la información.
Usa back-up.
Lecturas en nodo específico, transparente por la clave hash.
Aumenta el tráfico en las lecturas.
Particionada cons
Los objetos siempre están serializados para optimizar la transferencia entre nodos pero tiene su costo en las lecturas.
Alto tráfico en la red tanto para uso normal como para recuperación ante fallas.
Particionada - escritura
write through
Por defecto un nodo de back-up, pero pueden ser más.
Uso de local storage
Los nodos 1 y 2 no poseen objetos debido a “LocalStorage=false”.
Los nodos 3 y 4 almacenan todos los datos.
Aunque muchas lecturas usan un nodo remoto, este se determina eficientemente y univocamente.
Buen rendimiento en las escrituras al usar un solo back-up.
Recuperación ante fallas es transparente.
Escalabilidad horizontal.
Near cache
Híbrido entre las topologías replicada y particionada (buen rendimiento en E/S).

Capas:
Front cache: sub-conjunto de los datos de los nodos. Se usa en las lecturas (posible latencia nula).
Back cache: procesa las escrituras. Delega en el nodo requerido.
Near cache
Near cache - escritura
El dato B está caducado. Coherence lo sincroniza.
Near cache pros y cons
Los que hereda de las otras dos topologías.
'Con' adicional por el costo de la sincronización del front-cache.
Selección de la topología
Escoger bien cuándo usar cada una:
Cantidad de datos se puede estimar: replicada.
Cantidad de datos crece y podría saturar la memoria: particionada.
Caso promedio con peticiones repetibles: near.

Ejemplo registraduría nacional: 1118 ciudades (replicada) y cédulas (particionada).
Ejemplo compras (electrodomésticos, viajes): near. Aplica el principio de localidad espacio temporal.
Instalación del producto
tangosol-coherence-
override.xml
cache-config.xml
pof.xml
Archivos de configuración
Procesamiento distribuído
Capa de persistencia
Lecciones aprendidas y recomendaciones
Descomprimir un zip.

Servidor: cache-server.cmd/.sh
Cliente: coherence.cmd/.sh
Activar servidor
Activar cliente
Comunicación por defecto con multicast, tanto cliente como servidor.

Todos son nodos.
$ cd D:\myPrograms\coherence-3.7.1.0\bin
$ cache-server.cmd
[...]

Started DefaultCacheServer...
$ coherence.cmd personas
[...]
Map (personas): put 100 "Gina Mercado"
null

Map (personas): put 200 "Miguel Vega"
null

Map (personas): put 200 "Miguel De La Vega"
Miguel Vega

Map (personas): list
100 = Gina Mercado
200 = Miguel De La Vega
El descriptor operacional. Define parámetros de ejecución como:
Cluster.
Comunicación.
Servicios.
Seguridad.
Licencia.
Etc.
Ejemplo de tangosol.xml
Define características de cada caché, como la topología, replicación, tamaño, etc.
Dos partes:
Scheme: plantilla para entidades con características comunes.
Mapping: Mapea cachés con esquemas.
Portable object format.
Protocolo binario, independiente de la plataforma, para Java, .Net y C++.
Más rápido y compacto que java.io.Serializable (que usa reflexión e incrusta nombre de la clase, tipo y nombre de los campos).
Efecto:
Rendimiento.
Tráfico en la red.
Cuántos datos puede almacenar en los nodos (licencias).
Full transcript