Upload
mariano-omar-rodriguez
View
982
Download
6
Tags:
Embed Size (px)
DESCRIPTION
CodeCamp 2010 presentation of Windows Server AppFabric Caching in Argentina
Citation preview
1
2
Usando “Windows Server AppFabric Caching” en escenarios de alta disponibilidad
Mariano Omar RodriguezArquitectoTellago Inc.
3
Arquitectura típica
Aplicación/ Capa Web
Usuarios
Base de Datos
Capa de Datos
Aplicación
ASP.NET App Carrito en Session en memoria
Load BalancerSticky Routing
Catálogos en la Base de Datos
Aplicación Aplicación
Web sites lentos
Donde esta el carrito
Servidores comienzan a
fallar
Base de Datos
sobrecargada
4
Objetivos de la sesión
El problemaCacheando con Windows Server AppFabricOverviewDesarrollo
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.
6
¿Que es AppFabric Caching?
Vista unificada del cache
Los clientes del cache acceden a través del cliente
Los clientes acceden al cache
como si fuera único
La capa de cache distribuye los
datos a través de diferentes nodos
7
¿En que capa va?
… Capa Web(ASP.NET)
Usuarios
Database CloudCapa de
Datos
Aplicación Aplicación AplicaciónCapa de acceso al
CacheCapa de acceso al
CacheCapa de acceso al
Cache
Cach
ing
Serv
ice
Cach
ing
Serv
ice
Cach
ing
Serv
ice
Capa de Cache
8
¿Por que usarlo?
Comparte datos a través de diferentes aplicaciones.
No hay necesidad de ruteo “Pegajoso”.PerformanceEscalabilidad horizontal (Scale-out)Disponibilidad
9
Deployment
Cach
ing
Ser
vice
Cache Tier
Configuración(Base de datos, file system share, etc.)Almacena políticas del cacheAlmacena información de particionamiento
Cach
ing
Serv
ice
Cach
ing
Ser
vice
Habilitar el rol de servidor de
cache
Copiar assemblies cliente y agregar
app.config
…
Usuarios
Web Tier
Aplicación
Caching Access Layer
Aplicatión Aplicatión
<hosts> <host name="BL1CDB8083714“ cachePort="22233" cacheHostName="DistributedCacheService"/> ….. </hosts> <localCache isEnabled=“true" ../><security … />
Caching Access Layer Caching Access Layer
10
Seguridad
Seguridad basada en el dominioBasada en cuentas locales o de dominioSolo servidores autorizados pueden unirse al clusterSolo clientes autorizados pueden conectarse al cluster
grant-cacheallowedclientaccount domain\machine$grant-cacheallowedclientaccount domain\username
Seguridad a nivel transporteFirma y encriptación de mensajes
11
Administración y monitoreo
Administración centralizada a través de PowerShellPerfmon para monitorear el cacheLogging
Soporta EWT
12
Caching APIvar 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”);
13
Caching API – Jerarquia lógica1.Server2.Cache host3.Cache4.Region,5. Items6. Instancias
HostDirección fisica de la instancia
Caches (nombre)Pueden residir en varios servidores.Definidos en la configuración.
ItemClave, Contenido, Tags, TTL, Timestamp y Version
RegionesContenedor de itemsCreados implicita o explicitamente
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 clientvar objects = cache.GetAnyMatchingTag(“Region“,
tag);
Demo
Caching API
16
Patrón – Cache Aside
if (data == null){
data = ReadFromDB();cache.Put(“Data1”, data);
}
Application
Cach
ing
Serv
ice
Database
Caching Access Layer
var data = cache.Get(“Data-1”) as Data;
Distribución de datosCache particionado
Escalar en memoria: mas máquinas, mas memoria para el cache.Escalar en throughput: mas máquinas, claves mas distribuidas, mejor throughput.
Usando las ‘Features’
Clasificar los datosReferenciaActividadRecursos
Examinar requerimientosPerformance (Latencia y Throughput)ConsistenciaRemoción (¿Son los datos eliminables?)SeguridadDisponibilidad
Tipos de dato
ReferenciaNo se actualizan frecuentementeCompartidos
ActividadLectura y escrituraNo compartidosEj: Shopping Cart
RecursosLectura y EscrituraCompartidos
Datos de Referencia - performaceEl catálogo no cambia o cambia rara
vezEl costo de acceder a diferentes máquinas es inecesarioSolucion: Cache local
ApplicationApplication
AppFabric Caching Client
Put(K2, v3)
Routing Table
Cache2Cache1
Primary for K2,V2
K2, V2
Primary for K1,V1
K1, V1
Cache3
Primary for K3,V3
K3, V3
AppFabric Caching ClientLocal Cache
Routing TableK2, V2
Get(K2)Get(K2)
K2, V3
Datos de Actividad - Disponibilidad
ApplicationApplication
(K2, V2)
Cache2Cache1 Cache3
Primary for
Get(K2)
Primary for Primary for
K3, V3
AppFabric Caching ClientRouting Table
K2, V2
PUT
Secondary for
K2, V2
K1, V1
Secondary for
K3, V3
Secondary for
K1, V1
AppFabric Caching Client
Routing Table
K2, V2
Replication Agent
Datos de RecursoBloqueo optimista
Usando GetCacheItem se obtiene la versionCada actulización incrementa la versionCuando se llama a Put/Remove se debe suministrar la versión.
Datos de Recurso Bloqueo pesimista
K1
Cliente1: GetAndLock ("k1")
Cliente2: GetAndLock ("k1")
Cliente3: Get ("k1")
Get común
GetAndLock obtiene bloqueo
GetAndLock en el mismo item falla
Demo
Bloqueo OptimistaBloqueo Pesimista
Notificación de datos
NotificacionesRegistran 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);
Notificación de datos
Application
Cache2Cache1
Primary for
K2, V2
Primary for
K1, V1
Cache3
Primary for
K3, V3
AppFabric Caching Client
Routing Table
Registra Notificación
para Key “K3"
Mapea Keys a Particion (ej:
P2)
Poll Required
Nodes
Nodes Return List of Changes
LSN Order
Partition: P2
Last LSN: 19
llama DelegateStore Last LSN
Change LogPartition P11 Add K22 Del
K32
Change Log
(Partition
P2)
18Del K32
19Del K43
Change Log33 Add K134 Del
K22
Demo
Notifications
Integración con ASP.NET
Integración con output-cacheIntegración con Session
Demo
Configurar ASP.NET Session
30
Recursos adicionales
Home AppFabrichttp://msdn.microsoft.com/appfabric
ASP.NET 4 Providers for AppFabric Caching
http://aspnet.codeplex.com/releases/view/46576?ProjectName=aspnet
AppFabric Caching Featureshttp://msdn.microsoft.com/en-us/library/ff383731.aspx
Admin Toolhttp://mdcadmintool.codeplex.com/
31
Preguntas
32
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!
Participá del DEMOFEST
33
Necesitamos tu Feedback!
Completá los FORM de avaluación que estarán en nuestra WEB:www.codecamp.com.arNecesitamos de tu feedback para mejorar.
34
© 2008 Microsoft Corporation. Todos los derechos reservados. Microsoft, Windows, Windows Vista y otros nombres de producto son y pueden ser marcas registradas y registros en Estados
Unidos y en otros países.La información contenida en el presente es sólo para fines informativos y representa la visión actual de Microsoft Corporation a la fecha de esta presentación. Debido a que Microsoft debe
responder a las cambiantes condiciones del mercado, no se debe interpretar como un compromiso por parte de Microsoft, y Microsoft no puede garantizar la precisión de ninguna
información provista después de la fecha de esta presentación. MICROSOFT NO OFRECE GARANTÍA ALGUNA, EXPRESA, IMPLÍCITA O DE LEY, RESPECTO A LA INFORMACIÓN EN ESTA
PRESENTACIÓN.