Una caché distribuida es esencial para cualquier aplicación que exija un rendimiento rápido durante cargas de transacciones extremas. Una caché distribuida en memoria funciona mejor que una base de datos. Y puede proporcionar escalabilidad lineal en el manejo de mayores cargas de transacciones porque puede permitirle agregar fácilmente más servidores al clúster de caché que un servidor de base de datos no puede hacer.
A pesar de todos estos beneficios, todavía hay un problema. En la mayoría de los casos, una memoria caché distribuida se aloja en un conjunto de servidores de memoria caché dedicados en toda la red, por lo que su aplicación tiene que realizar viajes de red para obtener datos. Y esto no es tan rápido como acceder a los datos localmente y especialmente desde dentro del proceso de aplicación. Aquí es donde la memoria caché del cliente resulta útil.
In NCache, caché del cliente mantiene una conexión abierta con el clúster de caché distribuida y recibe notificaciones de eventos del clúster de caché siempre que los datos de la caché del cliente cambien allí. Un clúster de caché distribuida conoce la ubicación de los elementos de datos entre las cachés de los clientes, por lo que las notificaciones de eventos se envían solo a la caché del cliente relevante en lugar de transmitirlas a todas las cachés de los clientes.
NCache Detalles Caché de cliente Notificaciones de eventos en caché
¿Cómo funciona la caché del cliente?
Un caché de cliente no es más que un caché local en su servidor web/de aplicaciones, pero es consciente del caché distribuido además de estar conectado a él. Además, un caché de cliente puede estar en proceso (existe un caché de cliente dentro de su aplicación) o fuera de proceso. Esto permite que la memoria caché del cliente ofrezca un rendimiento de lectura mucho más rápido que incluso la memoria caché distribuida y, al mismo tiempo, garantiza que los datos de la memoria caché del cliente siempre se mantengan sincronizados con la memoria caché distribuida.
Sin embargo, una memoria caché distribuida notifica a la memoria caché del cliente de forma asincrónica después de actualizar correctamente los datos en el clúster de memoria caché distribuida. Técnicamente, esto significa que hay una pequeña ventana de tiempo (en milisegundos) durante la cual algunos de los datos en el caché del cliente son más antiguos que el caché distribuido. Ahora, en la mayoría de los casos, esto es perfectamente aceptable para las aplicaciones. Pero, en algunos casos, las aplicaciones exigen el 100 % de precisión de los datos.
Entonces, para manejar tales situaciones, NCache también proporciona un modelo de sincronización pesimista para la memoria caché del cliente. En este modelo, cada vez que la aplicación intenta obtener algo del caché del cliente, el caché del cliente primero verifica si el caché distribuido tiene una versión más nueva del mismo elemento almacenado en caché. Si es así, la memoria caché del cliente obtiene una versión más reciente de la memoria caché distribuida. Ahora bien, este viaje a la memoria caché distribuida tiene su costo, pero sigue siendo más rápido que obtener el elemento almacenado en la memoria caché por completo desde la memoria caché distribuida.
¿Cuándo usar una caché de cliente?
Después de leer este blog, la pregunta principal que me viene a la mente es cuándo usar un caché de cliente y cuándo no usarlo. Bueno, la respuesta es bastante sencilla. Si su(s) aplicación(es) realiza(n) más lecturas que escrituras, use un caché de cliente, especialmente si los mismos elementos se repiten una y otra vez.
Si su(s) aplicación(es) realiza(n) muchas actualizaciones (o al menos tantas como las lecturas), no use un caché de cliente porque las actualizaciones son más lentas con un caché de cliente. Esto sucede porque ahora está actualizando dos cachés diferentes, el caché del cliente y el caché distribuido.
Conclusión
¿Entonces NCache le permite aprovechar la memoria caché del cliente con una memoria caché distribuida. Descargue una versión de prueba de 60 días totalmente funcional de NCache Enterprise y pruébalo por ti mismo.
Tienes un blog realmente interesante, ¡sigue publicando publicaciones tan informativas!