2. Usando “Windows Server
AppFabric Caching” en
escenarios de alta
disponibilidad
Mariano Omar Rodriguez
Arquitecto
Tellago Inc.
2
3. Arquitectura típica Web sites
lentos
Usuarios
Load Balancer
Sticky Routing
Donde esta
el carrito Aplicación
/ Capa Web
Aplicación Aplicación Aplicación
ASP.NET App
Carrito en
Servidores Session en
Base de
comienzan a memoria
Datos
sobrecargada fallar Capa de
Base de
Datos Datos
Catálogos en la
Base de Datos
3
4. Objetivos de la sesión
El problema
Cacheando con Windows Server AppFabric
Overview
Desarrollo
4
5. ¿Que es AppFabric Caching?
Es un cache explicito, distribuido y en
memoria para aplicaciones y cualquier tipo
de dato.
Objetos CLR, XML, Datos Binarios, etc.
La memoria es distribuida entre múltiples
servidores.
5
6. ¿Que es AppFabric Caching?
Los clientes del
cache acceden a
través del cliente
Los clientes
acceden al cache
Vista unificada del cache como si fuera
único
La capa de cache
distribuye los
datos a través de
diferentes nodos
6
7. ¿En que capa va?
Usuarios
Aplicación Aplicación
… Aplicación
Capa Web
(ASP.NET)
Capa de acceso al Capa de acceso al Capa de acceso al
Cache Cache Cache
Capa de
Capa de
Database Cloud Cache
Datos
Caching
Service
Caching
Service
Caching
Service
7
8. ¿Por que usarlo?
Comparte datos a través de diferentes
aplicaciones.
No hay necesidad de ruteo “Pegajoso”.
Performance
Escalabilidad horizontal (Scale-out)
Disponibilidad
8
9. Deployment Usuarios
Copiar assemblies
cliente y agregar
app.config
<hosts>
…
<host name="BL1CDB8083714“ Aplicación Aplicatión Aplicatión
cachePort="22233" Caching Access Layer Caching Access Layer Caching Access Layer
cacheHostName="DistributedCacheService"/>
…..
</hosts>
<localCache isEnabled=“true" ../>
<security … />
Web Tier
Caching Service
Caching Service
Caching Service
Habilitar el rol
de servidor de
Cache Tier
cache
Configuración
(Base de datos, file system share, etc.)
Almacena políticas del cache
9 Almacena información de particionamiento
10. Seguridad
Seguridad basada en el dominio
Basada en cuentas locales o de dominio
Solo servidores autorizados pueden unirse al
cluster
Solo clientes autorizados pueden conectarse al
cluster
grant-cacheallowedclientaccount domainmachine$
grant-cacheallowedclientaccount domainusername
Seguridad a nivel transporte
Firma y encriptación de mensajes
10
11. Administración y monitoreo
Administración centralizada a través de
PowerShell
Perfmon para monitorear el cache
Logging
Soporta EWT
11
12. Caching API
var factory = new DataCacheFactory();
var cache = factory.GetCache(“Catalog”);
cache.Put(“data-1”, new Data(“Some Data”));
var data = (Data)cache.Get(“Data-1”);
cache.CreateRegion(“Region”);
cache.Put(“data-1”, new Data(“Some Data”),
“Region”);
var data = (Data)cache.Get(“Data-1”, “Region”);
12
13. Caching API – Jerarquia lógica
1. Server
2. Cache host
3. Cache
4. Region,
5. Items
6. Instancias
Host Item
Dirección fisica de la instancia Clave, Contenido, Tags, TTL, Ti
Caches (nombre) mestamp y Version
Pueden residir en varios Regiones
servidores. Contenedor de items
Definidos en la configuración. Creados implicita o
explicitamente
13
14. Caching API - Tagging
Permite agregar tags a los items
var tag = new Tag(“Tag”);
cache.Put(“Data-101", new Data(“Data1"),
new[]{ tag }, “region”);
cache.Put(“Data-102", new Data(“Data2"),
“Region”);
// From the same or a different client
var objects = cache.GetAnyMatchingTag(“Region“,
tag);
16. Patrón – Cache Aside
var data = cache.Get(“Data-1”) as
Data;
Application
Caching Access Layer
if (data == null)
{
data = ReadFromDB();
Caching Service
cache.Put(“Data1”, data);
}
Database
16
17. Distribución de datos
Cache particionado
Escalar en memoria: mas máquinas, mas
memoria para el cache.
Escalar en throughput: mas
máquinas, claves mas distribuidas, mejor
throughput.
18. Usando las „Features‟
Clasificar los datos
Referencia
Actividad
Recursos
Examinar requerimientos
Performance (Latencia y Throughput)
Consistencia
Remoción (¿Son los datos eliminables?)
Seguridad
Disponibilidad
19. Tipos de dato
Referencia
No se actualizan frecuentemente
Compartidos
Actividad
Lectura y escritura
No compartidos
Ej: Shopping Cart
Recursos
Lectura y Escritura
Compartidos
20. Datos de Referencia - performace
El catálogo no cambia o cambia rara vez
El costo de acceder a diferentes máquinas
es inecesario
Solucion: Cache local Application
Application Get(K2)
Get(K2)
Put(K2, v3)
AppFabric Caching Client AppFabric Caching Client
Local Cache K2, V2
Routing Table Routing Table
Cache1 Cache2 Cache3
Primary for K1,V1 Primary for K2,V2 Primary for K3,V3
K1, V1 K2, V2
V3 K3, V3
21. Datos de Actividad - Disponibilidad
Application
(K2, V2) Application
PUT Get(K2)
AppFabric Caching Client
Routing Table AppFabric Caching Client
Routing Table
Cache1 Cache2 Cache3
Primary for Primary for Primary for
K2, V2
Replication
K1, V1 Agent K3, V3
K2, V2
Secondary for Secondary for Secondary for
K2, V2 K3, V3 K1, V1
22. Datos de Recurso
Bloqueo optimista
Usando GetCacheItem se obtiene la version
Cada actulización incrementa la version
Cuando se llama a Put/Remove se debe
suministrar la versión.
23. Datos de Recurso
Bloqueo pesimista
Cliente1: Cliente2: Cliente3:
GetAndLock ("k1") GetAndLock ("k1") Get ("k1")
GetAndLock obtiene
bloqueo
GetAndLock en el Get común
mismo item falla
K1
25. Notificación de datos
Notificaciones
Registran en cualquier cliente para notificar
cambios
cache.AddCacheLevelCallback(DataCacheOperations
filter, DataCacheNotificationCallback callback);
cache.AddRegionLevelCallback(string region, DataCacheOperations filter,
DataCacheNotificationCallback callback);
cache.AddItemLevelCallback(string key, DataCacheOperations filter,
DataCacheNotificationCallback callback);
26. Notificación de datos Registra
Notificación
para Key “K3"
llama Delegate Application Mapea Keys
Store Last LSN a Particion (ej:
AppFabric Caching Client P2)
Routing Table
Poll
Required
Partition: P2 Nodes
Last LSN: 19
Nodes Return
List of Changes
LSN Order
Cache1 Cache2 Cache3
Primary for Primary for Primary for
Change Log
Change Log
K1, V1 Change Log
K2, V2 (Partition P2) K3, V3
Partition P1
33 Add K1 1 Add K2 18 Del K32
34 Del K22 2 Del K32 19 Del K43
32. Participá del DEMOFEST
Los mejores proyectos de las células
Microsoft, los grupos de investigación de
estudiantes, son seleccionados para participar
en el espacio del DEMOFEST.
¡Conocélos!
32
33. Necesitamos tu Feedback!
Completá los FORM
de avaluación que
estarán en nuestra
WEB:
www.codecamp.com.ar
Necesitamos de tu
feedback para mejorar.
33