Este documento presenta una introducción a Oracle Coherence, una plataforma de memoria distribuida en red que permite el almacenamiento y procesamiento de datos a gran escala. Explica cómo funciona Coherence, cómo montar un cluster Coherence, cómo monitorear y operar Coherence, y presenta más funcionalidades avanzadas. Finalmente, incluye una demostración de uso de Coherence para consultar y procesar un gran grafo de datos de redes sociales.
2. Nuestros
Servicios
3270 / 5250 JEE
3270 / 5250 .NET
GUI Web
4GL COBOL
ASP JEE
JEE / .NET
.NET / host
EAI
BPM
JEE / host
SOA
RIA / SOA
TECNOLOGÍA
FORMACIÓN
IBM SOFTWARE
METODOLÓGICA
CALIDAD
PRODUCTIVIDAD
OPEN SOURCE
CONSTRUCCIÓN
PLUG-INS
ECLIPSE
TUNING
PRODUCTIVIDAD
OPTIMIZACIÓN
ARQUITECTURA
JEE / .NET
SOPORTE
VIRTUALIZACIÓN
WAS
24 X 7
TÉCNICA DE
SISTEMAS
GESTIÓN
DOCUMENTAL
Servicios de
Migración
Servicio de
Integración
Servicios de
Consultoría
Servicios
Avanzados de
Arquitectura
SistemasServicios de
Desarrollo
Web
DESARROLLO
JEE/ .NET / PHP
PORTALES / CMS
RIA / REA
USABILIDAD
DISEÑO
MAQUETACIÓN
OPEN SOURCE
CENTRO DE
DESARROLLO
MÓVILES
3. Agenda
• Overview
• Cómo funciona Oralce
Coherence
• Montar
• Monitorizar / Operar
• Mas funcionalidad
• Demo
• Preguntas
Oracle®, Java™ are trademarks or registered trademarks of Oracle
Corporation and/or its affiliates.
5. • Sistema con :
– Lectura y/o escritura intensiva de datos
– Procesamiento intenso de datos
• Sistema requiere :
– Bajar tiempos de respuesta
– Acceso transaccional
• Sistema con problemas de :
– Escalabilidad con su repositorio de datos
( costoso! )
– Disponibilidad
– Arquitectura cada vez más compleja
Overview – Problema
6. • Escalar verticalmente
– Más Memoria
– Más CPU
• Escalar horizontalmente
– Clustering de aplicaciones
• Web – session stickiness
• Load balance
– Caching
• Sincronización de la cache en el
cluster
Overview – Solución SIN Coherence
9. La opción mas interesante!
• Coherence como repositorio de datos (
GBs )
– Clustering , soportando HA
– Sincronización con la base de datos (
asíncrono )
– Auto Load Balance
– Querys, Índices , procesos ( paralelo) .
Overview
11. Overview – Problema
Antes Ahora
Coste memoria
Cantidad request
Cantidad/procesamie
nto de datos
Escalamiento de
bases de datos
Alta disponibilidad
de bases de datos
Soluciones Bigdata!
13. • Nodos Coherence - JVMs
• Cluster Coherence HA ( distribuido , replicado , near )
• Estructura del caché – NamedCache
• Primary vs Backup data
Cómo funciona Coherence - Terminología
14. • Los datos son esparcidos entre los
nodos del cluster. ( JVMs )
• Transparente al desarrollador.
• Cada miembro tiene acceso a todos
los datos.
• Todas las localizaciones de datos son
conocidas – no hace falta lookup!
• Un nodo nuevo se une
automáticamente.
• Balanceo de carga automático.
NamedCache paises =
CacheFactory.getCache(“paises");
paises.put(‘JPN’,‘Japon’);
Cómo funciona Coherence
15. Cómo funciona Coherence – Portable Object
• Portable Object es el tipo de serialización mas rápida
y efectiva para Coherence.
@Portable
public class Customer
{
@PortableProperty
private int customerId;
@PortableProperty
private String name;
@PortableProperty
private String region;
@PortableProperty
private float creditLimit;
...
}
NamedCache customers= …
customers.put(customerId,c
ustomerObj);
1
2
16. Cómo funciona Coherence – Portable Object
• Portable Object es el
tipo de serialización
mas rápida y efectiva
para Coherence.
• Tamaño mínimo
serializado
• Optimo para la red
• Extracción de
propiedades cuando
esta serializado
17. • Si un nodo deja de funcionar, se
usa el backup de los datos que
se encuentra en otro nodo.
• Coherence redistribuye los
datos en los nodos buenos.
String japon =
paises.get(‘JPN’);
Cómo funciona Coherence
18. • Write-Behind acepta
modificaciones a datos
directamente en el Grid
Coherence.
• Las modificaciones son luego
escritas asíncronamente al
repositorio de datos ( ej: base
de datos ), vía una cola,
opcionalmente después de un
retardo.
• Todos los write-behind de
datos son síncronos y
manejados con redundancia,
haciendo la operación
resistente a fallos.
Cómo funciona Coherence – Write Behind
19. • Acceso a los repositorios de
datos mediante el Data Grid.
• Operaciones Read / Write son
siempre manejadas por el nodo
que maneja esos datos.
• Los accesos concurrentes son
combinados , reduciendo los
accesos a base de datos.
• Write-Through mantiene los
datos en memoria y base de
datos sincronizada.
Cómo funciona Coherence Read-Through & Write-Through
20. Cómo funciona Coherence - Filtros / Queries
• Se pueden encontrar los datos no solo por la
clave :
– Se puede usar el API de filtros.
select homeAddress.state, age, count()
from "ContactInfoCache"
group by homeAddress.state, age
Se puede hacer queries y agregaciones usando
Coherence Query Languaje CQL.
Filter filter = new
EqualsFilter("getId.getAccountId",123);
21. Cómo funciona Coherence - Processors
• Coherence también es sistema
de procesamiento en paralelo.
class StockSplitProcessor
extends AbstractProcessor {
Object process(Entry entry) {
Stock stock =
(Stock)entry.getValue();
stock.quantity *= 2;
entry.setValue(stock);
return null;
}
}
22. • En topología distribuida cada nodo
de Coherence guarda una parte de
los datos primary y una parte del
backup.
• Alta disponibilidad y tolerancia a
fallos 100%
• Vista lógica del 100% de datos
desde cualquier nodo.
Cómo funciona Coherence - Distribuido
23. Todos los nodos verifican la salud de
otro nodo.
Si un nodo no responde, se retira
del cluster.
La data primaria y backup se
redistribuye entre los nodos activos.
Si un nodo nuevo se une al cluster
igualmente se redistribuyen los
datos
Cómo funciona Coherence – Health check
24. • Coherence permite registrar el interés en un
elemento de cache especifico: inserts, updates,
deletes .
• No es necesario hacer pool a Coherence para ver si
un dato ha cambiado.
Cómo funciona Coherence – Cache events
25. • Las operaciones en el grid son
transaccionales.
• Se garantiza la consistencia de los
datos en memoria.
• La combinación de escalabilidad y
rendimiento hace Oracle
Coherence óptima para
aplicaciones con grandes cargas
transaccionales.
Cómo funciona Coherence - Transacciones
27. Cómo funciona Coherence
Topología de Cache : Distribuido vs Replicado
Distribuido Replicado
Escalable Mejor, menos
memoria
Se necesita mas
memoria
Updates poca
latencia
Si No, se tiene que
recorrer todos los
nodos
Mientras mas nodos
toma mas tiempo
Lecturas de un dato Máximo dos
conexiones
Una conexión, no
latencia
Lecturas de
colecciones de datos
( CQL )
N conexiones Una conexión, no
latencia
32. 4 definir carga, sincronización ,
pruebas y tuning .
• La carga debe ser rápida
• Definir método de
sincronización con la base de
datos
• Pruebas, tuning
– Xmx , hilos, caches
– overload de memoria
Montar Coherence
37. Mas funcionalidad – Coherence
Extend
• Para acceder desde C++ / .NET
• Acceder a múltiples clusters desde un solo proceso
• Acceder a un cluster desde múltiples clientes ( Apps )
• Balanceo de carga
38. Mas funcionalidad – Backup
asíncrono
• Mejora performance
• Cuando no se necesita consistencia
<async-backup>true</async-backup>
39. Mas funcionalidad – Rolling
restart / upgrade
• Reiniciar cada servidor en secuencia, útil cuando se
requiere hacer un reinicio de todo el cluster sin
perder alta disponibilidad
• Vía scripts Jython WLST
40. Mas funcionalidad – Hot cache
• Mantiene sincronía de otros cambios en base de
datos, vía Oracle Golden Gate
41. Mas funcionalidad – GAR
• Despliegue de empaquetado GAR en todo el cluster
Coherence ( Ejem : usando consola administración )
• Puede ser incluido dentro de un EAR ( Weblogic )
42. Mas funcionalidad – REST
• Retorna formato XML y JSON
• JAXB, JAX-RS (Jersey), Grizzly and Jackson (Apache)
• Usando un Servlet Container o un servidor web embebido
• GET/PUT/DELETE /{cache-name}/{key}
• Ejemplo :
– GET http://host:port/CoherenceWeb/rest/Department/100
– GET http://host:port/CoherenceWeb/rest/Department/location1700
<rest>
<resources>
<resource>
<cache-name>Department</cache-name>
<key-class>java.lang.Integer</key-class>
<value-class>nl.amis.model.hr.Department</value-class>
<query>
<name>location1700</name>
<expression>locationId is 1700</expression>
</query>
</resources>
</rest>
coherence-rest-config.xml
45. 1. 149 000 registros de nodos
2. Conexiones bidireccionales entre los nodos estilo
twitter.
3. Base de Datos MySQL vs Coherence
Preguntas :
• Cuantas conexiones tiene en promedio determinado
grupo ?
• Cual es la edad mínima en determinado grupo ?
• Cuantas pasos de conexión promedio hay entre dos
nodos aleatorios ?
Demo - Grafo de red social
47. Demo - Grafo de red social
Diagrama de
clases
desnormalizado
Diagrama
EER
48. • 500 hilos , 10 segundos , 40 veces
• Cada hilo : persona aleatoria sus datos y los de todos
sus followers.
• Resultados Coherence
• Resultados Mysql
Demo - Grafo de red social