Cargador de caché y actualización en NCache

NCache es un caché distribuido en memoria extremadamente rápido y escalable para .NET y almacena en caché los datos de la aplicación para reducir los costosos viajes a la base de datos. Usar NCache para eliminar los cuellos de botella de rendimiento relacionados con el almacenamiento de datos y la base de datos.

A medida que crece el tamaño de su caché y almacena cada vez más datos de referencia/búsqueda en caché, se enfrenta al problema de tener que llenar un caché vacío al iniciar. Luego está el problema de mantener actualizados estos datos almacenados en caché y también agregar más datos de manera regular para mantener conjuntos de datos completos en el caché. Y, para hacer todo esto, no solo debe desarrollar una aplicación personalizada, sino también alojarla en algún lugar y asegurarse de que siempre se ejecute al iniciar el caché y también en intervalos programados.

Esta es una gran cantidad de gestión adicional y dolor de cabeza que NCache toma el control por usted a través de su poderosa función Cache Loader / Refresher. NCache le permite desarrollar un código personalizado del lado del servidor y registrarlo para Cache Loader and Refresher.

NCache le proporciona lo siguiente:

  1. Cargador de caché (distribuido y paralelo): puede desarrollar un cargador de caché como código del lado del servidor que se implementa y ejecuta en todos los servidores de caché del clúster. Luego, cuando se inicia el caché, NCache llama a este Cache Loader en cada servidor de caché en paralelo para ir y leer su parte de los datos (llamados conjuntos de datos) de su base de datos/fuente de datos y cargarlos en el caché. Cache Loader se ejecuta en paralelo en todos los servidores de caché para distribuir el trabajo de carga de datos en múltiples conjuntos de datos paralelos.
  2. Actualizador de caché (distribuido y paralelo): puede desarrollar una actualización de caché como código del lado del servidor que se implementa y se ejecuta en todos los servidores de caché en el clúster. Después, NCache llama a su Cache Refresher regularmente (programado) para ir y obtener actualizaciones o datos nuevos de su base de datos/fuente de datos y ponerlos en el caché. También puede llamar a Cache Refresher a pedido. Cache Refresher se ejecuta en paralelo en todos los servidores de caché para distribuir el trabajo de carga de datos en múltiples conjuntos de datos paralelos.
Cargador de caché y actualización en NCache

Beneficios de Cache Loader / Refresher

Estos son algunos de los beneficios de usar la capacidad Cache Loader / Refresher en NCache.

  1. Carga / actualización paralela de conjuntos de datos: si su caché es grande, cargarlo o actualizarlo puede llevar algún tiempo. Y, si usted mismo escribe el código para este propósito, lo más probable es que lo ejecute desde una sola computadora y, por lo tanto, cargará todos los datos secuencialmente. Pero, NCache distribuye y ejecuta Cache Loader / Refresher en todos los servidores de caché. Como resultado, la carga de datos es paralela y mucho más rápida.
  2. Alta disponibilidad del cargador/actualizador de caché: NCache implementa Cache Loader / Refresher en todos los servidores de caché. Esto significa que si algún servidor de caché deja de funcionar, la carga/actualización no se detiene porque se está ejecutando en otros servidores de caché. Y, a medida que agrega un nuevo servidor de caché al clúster, NCache hace que Cache Loader / Refresher también esté disponible en él, lo que aumenta la alta disponibilidad. Esto es algo que no puede lograr si escribió este código y lo ejecutó usted mismo.
  3. NCache Lo aloja para usted: si tuviera que desarrollar y ejecutar este código usted mismo, debería asegurarse de que siempre se ejecute incluso si el servidor en el que está ejecutando ese código deja de funcionar. Esto se debe a que su caché depende de este código para mantenerse actualizado y completo. Y esto es mucho trabajo para gestionar algo así en producción. Afortunadamente, NCache asume esta responsabilidad por usted y aloja Cache Loader / Refresher por usted en todos los servidores de caché. NCache también se asegura de que este código se ejecute en varios servidores para lograr una alta disponibilidad, como se explicó anteriormente.
  4. Loader / Refresher se ejecuta muy cerca de la memoria caché: como sabes, NCache implementa y ejecuta Cache Loader / Refresher en todos los servidores de caché en el clúster. Esto significa que su código de actualización/cargador de caché se está ejecutando muy cerca del propio caché. Y esto también acelera la carga/actualización de datos en caso de grandes conjuntos de datos.

Características más importantes

Estos son algunos aspectos destacados de la capacidad de lectura simultánea, escritura simultánea y escritura diferida en NCache.

  1. Código del lado del servidor (.NET): desarrollas tu Cache Loader / Refresher en .NET. Hay una interfaz para Loader and Refresher que usted desarrolla y luego implementa su código en todos los servidores de caché del clúster. NCache luego puede llamarlos en Cache Startup o más tarde para Refresher. Su código está desarrollado en .NET y lo llama de forma nativa NCache ya que también está desarrollado en .NET.
  2. El cargador/actualización se ejecuta en un proceso separado: NCache ejecuta su Cache Loader / Refresher en un proceso separado en cada servidor de caché que el proceso que tiene los datos de caché. Esto significa que su caché no se ve afectada por ningún error o falla en su código de actualización/cargador de caché, ya que su proceso puede reiniciarse fácilmente NCache Servicio de gestión en el mismo servidor de caché.
  3. Conjuntos de datos con varios nombres: puede definir varios conjuntos de datos con nombre para desglosar la carga/actualización de sus datos en fragmentos de datos paralelos. Al nombrar el conjunto de datos en la configuración, su cargador de caché/código de actualización responsable de cargar/actualizar cualquier conjunto de datos con nombre sabe qué conjunto de datos es y luego puede usar el código apropiado para obtener solo esos datos.
  4. Conjuntos de datos distribuidos a servidores de caché en tiempo de ejecución: NCache utiliza un algoritmo de turno rotativo para distribuir conjuntos de datos a todos los servidores de caché en el clúster para cargar/actualizar en paralelo. Esto acelera bastante la carga/actualización, ya que siempre tiene al menos 2 servidores de caché en el clúster y lo más probable es que tenga más de 2.
  5. Programación de nivel de conjunto de datos (mensual, semanal, hora diaria, intervalo diario): NCache le permite definir el cronograma de carga/actualización a nivel de conjunto de datos para que cada conjunto de datos pueda tener su propio cronograma. La programación puede ser Mensual, Semanal, Hora diaria e Intervalo diario. Hora diaria significa una hora específica del día todos los días, mientras que Intervalo diario significa ejecutar varias veces en un día todos los días, pero después de esperar un intervalo específico desde la última ejecución.
  6. Actualización de conjuntos de datos bajo demanda: además de proporcionar programación a nivel de conjunto de datos, NCache también proporciona un cmdlet de PowerShell que le permite invocar una actualización de conjunto de datos específica a pedido. De esta manera, si cree que algún dato del conjunto de datos ha cambiado pero no ha llegado su hora programada, puede llamar NCache para refrescarlo. Puede integrar esta llamada en cualquiera de sus aplicaciones donde tenga una mejor comprensión sobre el estado de sus datos en su base de datos/fuente de datos. Su aplicación puede hacer la llamada de si actualizar a pedido o no.

Interfaz de actualización/cargador de caché

Es bastante simple desarrollar el código Cache Loader / Refresher. A continuación se muestra un ejemplo de interfaz para ello.

Interfaz de actualización/cargador de caché

public interface ICacheLoader : IDisposable {
	void Init(IDictionary<string, string> parameters, string cacheName);
	object LoadDatasetOnStartup(string dataset);
	object RefreshDataset(string dataset, object userContext);
	IDictionary<string, RefreshPreference> 
GetDatasetsToRefresh(IDictionary<string, object> userContexts);
}
© Copyright Alachisoft 2002 - Todos los derechos reservados. NCache es una marca registrada de Diyatech Corp.