Cache Distribuida Ayudante - German Rende Técnicas de Diseño Cache Distribuida Ayudante - German Rende
Presentación del Problema Cuello de Botella Caída abrupta de la performance del sistema en horas pico Base de Datos 1 Servidor Clientes Concurrentes Front End 4 Servidores Back End 4 Servidores Sistema Granja de Servidores
Solución – Cache Distribuida Base de Datos Cliente Cache Clúster de almacenamiento de la Cache Sistema Nodo Local Nodos Remotos Configuraciones Posibles Local Cache Replicated Cache Optimized Cache Partitioned Cache
Tecnologías y Herramientas Java 1.6 Eclipse / NetBeans Maven PostgreSQL 8.3 Hibernate 3.2.6 Junit Google-Guice Java Remote Method Invocation (RMI)
Objetivos de Nuestro Diseño Minimizar el acoplamiento entre los distintos componentes Permitir la reutilización de componentes Facilidad para modificar la configuración y extender / cambiar funcionalidad Facilidad de probar los componentes en forma aislada
Diagrama de Componentes Destacados Brokering entre nodo y cliente mediante RMI Modelo independiente del protocolo de comunicación
Diagrama de Procesos Destacados Interoperativilidad entre procesos heterogéneos Abstracción de la localización física del cliente, nodos, loggers y storages
Diagrama de Despliegue distribuida Destacados Diseño distribuido para Nodos, Clientes y Loggers Bajo acoplamiento (uso intensivo de interfaces) local
Diagrama de Clases – Common Destacados La clase Item es la unidad de almacenamiento Serialización binaria de los objetos item
Diagrama de Clases – Client Destacados Patrón Factory Patrón Proxy Dependencias a través de interfaces
Diagrama de Clases – Node (1) node-rmi sync Destacados Segregación de interfaces Patrón Factory Patrón Strategy
Diagrama de Clases – Node (2) storage Destacados Patrón Composite Segregación de interfaces Template Methods
Diagrama de Clases – Node (3) garbage collector Cada Listener decide cuando lanzar el Garbage Collector de acuerdo a distintas condiciones storage listener
Sincronismo: Cache Local Nodo 1 Nodo 2 Clúster
Sincronismo: Cache Replicada Item1 Item2 Cache 2 Nodo 1 Nodo 2 Item1 Item2 Clúster
Sincronismo: Cache Particionada Item2 Item1 Cache 1 Item2 Cache 2 Item2 Nodo 1 Nodo 2 Item2 Clúster
Sincronismo: Nodos e Items Clúster
Demo
¿Preguntas? Muchas Gracias