Practicas de diseño de Caching distribuido en Azure

Imagen relacionada

Para las aplicaciones distribuidas de gran escala, el acceso a datos de aplicaciones stateful es crítico. El rendimiento global de la aplicación y la latencia están limitados normalmente por la rapidez con la que se pueden recuperar, compartir y actualizar los datos y los contextos necesarios. Los servicios distribuidos de almacenamiento en caché, como Caching de Azure y memcached, han evolucionado en respuesta a esta necesidad. Las aplicaciones deben utilizar una plataforma de memoria caché distribuida.

Tener en cuenta las siguientes directrices para el diseño de Caching distribuido:

1. Utilice una plataforma de almacenamiento en memoria caché distribuida como Worker Role dentro del servicio hospedado en Azure. Esta gran proximidad a los clientes de la memoria caché reduce las barreras de latencia y rendimiento producidas por el recorrido del equilibrador de carga.

2. Use la plataforma de almacenamiento en memoria caché distribuida como repositorio principal para tener acceso a los datos y objetos comunes de la aplicación (por ejemplo, el perfil de usuario y el estado de la sesión), respaldado por la Base de datos SQL u otro almacén duradero en el enfoque de lectura completa o de cache-aside.

Resultado de imagen para diseño distribuido cache azure

3. Los objetos de la memoria caché tienen un período de vida que afecta al tiempo que están activos en la memoria caché distribuida. Las aplicaciones establecen explícitamente el período de vida en los objetos almacenados en memoria caché o configuran un período de vida predeterminado para el contenedor de la memoria caché. Equilibre la opción de período de vida entre la disponibilidad (aciertos de caché) y la presión en la memoria y la obsolescencia de los datos.

4. Las memorias caché muestran una semántica de clave-byte>[]; tenga en cuenta el potencial de que las operaciones de escritura superpuestas creen datos inconsistentes en la memoria caché. Las memorias caché distribuidas no proporcionan normalmente una API para las actualizaciones atómicas en los datos almacenados, ya que no son conscientes de la estructura de los datos almacenados.

5. Para las aplicaciones que requieren una coherencia estricta de las operaciones de escritura simultáneas, use una distribución de plataforma de almacenamiento en caché que proporcione un mecanismo de bloqueo para actualizar las entidades. En el caso del almacenamiento en memoria caché de Azure, esto se puede implementar mediante GetAndLock o PutAndUnlock. Nota: esto tendrá un efecto negativo en el rendimiento.

6. El rendimiento de la memoria caché está limitado en la capa de aplicación por el tiempo necesario para serializar y deserializar objetos. Para optimizar este proceso, utilice un serializador binario relativamente simétrico (que requiera el mismo tiempo para codificar y descodificar datos) y muy eficaz, por ejemplo, protobuf.

7. Para usar la serialización personalizada correctamente, diseñe objetos de transferencia de datos (DTO) para la serialización en memoria caché, use la anotación adecuada para la serialización, impida las dependencias cíclicas y utilice pruebas unitarias para el seguimiento de la serialización eficaz.


Recomendación:

En mi experiencia en manejo y administración de cache, en encontrado el servicio de Azure Redis Cache como una herramienta poderosa que te ayuda enormemente a administrar el cache de tu aplicación de manera sencilla y totalmente escalable.

Resultado de imagen para azure redis cache


Características de Azure Redis Cache:

Comparto en enlace con toda la información de Redis: https://azure.microsoft.com/es-mx/services/cache/


Ejemplo de uso de Redis:

Vemos en la siguiente arquitectura un cluster de servidores de Redis dentro de una subnet, habilitando el acceso a cache a aplicaciones dentro de una Virtual Network y la comunicación se resuelve dentro de los mismos segmentos de la red.

image


Diseño común de aplicaciones con cache habilitando alta disponibilidad al utilizar un Worker role para operaciones de escritura en BD y lectura desde cache:

image

Diseño de aplicaciones distribuidas usando cache bajo Azure Traffic Manager:

Resultado de imagen para azure redis cache


Azure nos ofrece varias opciones para crear y administrar cache distribuido para nuestras aplicaciones, esta comunicación se puede establecer de manera eficiente y segura a través de los servicios de Azure.

Para crear servicios de cache, les dijo los siguientes enlaces donde explica paso a paso como lograr crear y comunicar nuestras aplicaciones con cache de Azure:

UPDATE:


Saludos!

Popular posts from this blog

Integrar Web API de .NET en proyecto de Xamarin.Forms utilizando Visual Studio y Azure API App

Ejecutar pruebas de volumen con Visual Studio y Team Service

How to implement OAuth 2.0 server with Redis

Como crear una aplicación .NET Core y almacenarla en un contenedor de Docker usando Visual Studio

Arquitectura para el monitoreo de huertos con IoT y Azure (Parte I - Envío de mensajes a Event Hub)