Propiedades y descripción general del cargador de caché y del actualizador
NCache proporciona un cargador de caché de inicio para precargar el caché con datos esenciales al inicio. Este mecanismo es vital en escenarios donde una aplicación requiere conjuntos de datos específicos inmediatamente después de comenzar la ejecución.
Por ejemplo, imagine un sitio de transmisión de videos con cientos de videos que deben estar disponibles para el usuario en el momento en que accede al sitio. Aquí, el caché se puede precargar con videos existentes al iniciar el caché en lugar de agregar los datos manualmente.
Note
En ocasiones, es posible que Cache Loader no pueda cargar datos correctamente debido a un problema de conectividad con la fuente de datos principal o un error al ejecutar la implementación personalizada de Cache Loader. Para identificar dicho error/excepción, consulte los registros del Servicio de ejecución.
Cargar su caché con datos al inicio puede ser muy útil. Al hacerlo, puede evitar problemas de rendimiento en el inicio del caché debido a un caché vacío, lo que genera solicitudes de datos frecuentes a la base de datos (que es lenta). los NCache La función Cache Startup Loader lo ayudará a precargar su caché con los datos que elija en el momento del inicio.
A pesar de las ventajas de precargar los datos, esto hace que los datos cargados en el caché se vuelvan obsoletos. El usuario carga los datos relevantes al inicio de la caché y cualquier cambio que ocurra en la fuente de datos la desactualiza. Para evitar esta invalidación, NCache proporciona otra característica llamada Actualización de caché. Cache Refresher es responsable de sincronizar los datos cargados en el caché con los datos actualizados en la fuente de datos.
Propiedades de actualización y cargador de caché
La NCache Cache Loader y Refresher son funciones esenciales para mejorar el rendimiento general de la aplicación, especialmente al iniciar la caché. Como todas las funciones, estas funciones también tienen sus propias propiedades respectivas. Te explicamos estas propiedades a continuación:
NCache Servicio de ejecución
en el anterior NCache En estas versiones, el caché y el cargador de caché solían ejecutarse en el mismo proceso, lo que sobrecargaba el proceso de caché, particularmente en el momento de la carga. Este estrés resultó en una degradación temporal del rendimiento de la caché general.
Entonces, para topologías OutProc, NCache tiene un dedicado NCache Servicio de ejecución (anteriormente conocido como Servicio de carga) para administrar tareas y cargar datos desde la fuente de datos en cachés al iniciar la caché. Este servicio cumple diferentes responsabilidades en las ediciones .NET y Java. En .NET Edition, gestiona Cache Loader y Refresher. Mientras que, en Java Edition, el servicio es responsable de administrar el cargador de caché, el actualizador, los proveedores de fuentes de datos y la publicación de contadores JMX.
Alternativamente, en una topología en clúster, cada nodo tiene un servicio dedicado responsable de cargar datos en su caché. Sin embargo, dentro de la topología InProc, la tarea aún se ejecuta en el mismo proceso.
Conjuntos de datos
Para las topologías en clúster, si los datos cargados en un solo nodo requieren una cantidad considerable de tiempo, NCache Permite la distribución de la carga de datos entre los nodos del cluster. Los datos se distribuyen en función de conjuntos de datos proporcionados por el usuario para cada nodo. Cada nodo tiene NCache Servicio de ejecución asignado para cargar los datos según los conjuntos de datos. Básicamente, un conjunto de datos es una forma de agrupar datos similares para cargarlos juntos.
Asignación de conjuntos de datos a servidores de caché en tiempo de ejecución
Note
NCache asigna internamente los conjuntos de datos a los nodos, lo que garantiza que no haya dos nodos que terminen cargando los mismos datos en la memoria caché. Esta asignación también permite cargar un gran volumen de datos en menos tiempo.
El nodo coordinador distribuye conjuntos de datos entre los nodos del clúster en forma rotativa. Por lo tanto, a cada uno de los servidores se le asigna un conjunto de datos de la lista. Cuando uno de los nodos termina de cargar datos en su conjunto de datos, recibe el siguiente conjunto de datos para cargar. Esencialmente, si el número de conjuntos de datos de distribución es mayor que el número de nodos, NCache asignará un conjunto de datos a cada nodo y, cuando no haya más nodos disponibles, asignará el siguiente conjunto de datos al primer nodo disponible (que haya terminado de cargar datos).
Digamos que el usuario desea cargar datos específicos de la base de datos Northwind en un caché agrupado de 3 nodos al inicio, luego el rendimiento del cargador de caché se ve afectado por la cantidad de conjuntos de datos asignados. Analizamos este comportamiento a continuación:
5 conjuntos de datos para cargar: El usuario asigna 5 conjuntos de datos (Local , Ordenar, Productos, Empleadosy Proveedores) al cargador. Luego, el nodo coordinador asigna los conjuntos de datos a los nodos en forma circular: Local al nodo1, Mis Pedidos al nodo2, y Productos al nodo3. Tan pronto como un nodo termina de cargar datos, el coordinador asigna el siguiente conjunto de datos, es decir, Empleados y eventualmente Proveedores al siguiente nodo disponible.
3 conjuntos de datos para cargar: El usuario asigna 3 conjuntos de datos (Clientes, Productosy Mis Pedidos) al cargador, lo que significa que cada nodo es responsable del conjunto de datos que se le ha asignado, por lo que cargará los datos de acuerdo con el conjunto de datos y garantizará una distribución equitativa.
2 conjuntos de datos para cargar: El usuario asigna 2 conjuntos de datos (Clientes y Productos) al cargador. Dado que el clúster consta de tres nodos, el tercer nodo estará inactivo durante el proceso de carga. Es por eso que prefiere que la cantidad de conjuntos de datos sea igual o mayor que la cantidad de nodos, asegurando así la máxima utilización.
Programación de conjuntos de datos
Los conjuntos de datos necesitan programación para actualizarse. Por lo tanto, NCache proporciona una opción de programación que decide el intervalo de tiempo después del cual actualiza los datos de la caché. En este momento, el intervalo de actualización comprueba si hay conjuntos de datos que se van a actualizar, actualizando así los datos consiguientes en la memoria caché. Las cuatro opciones de programación diferentes proporcionadas con Cache Refresher funcionan de la siguiente manera:
Intervalo diario: El intervalo diario garantiza que un conjunto de datos se actualice en un intervalo establecido después de que se inicia el caché. El valor del intervalo está en minutos. Por ejemplo, 20 minutos significa que el conjunto de datos se actualiza cada 20 minutos.
Hora diaria: La opción de hora diaria garantiza que un conjunto de datos se actualice todos los días a una hora específica proporcionada por el usuario. A diferencia de los intervalos diarios con un intervalo de 60 minutos como máximo, generalmente tienen un intervalo de 24 horas y no dependen del inicio de la caché para comenzar. Generalmente se emplea cuando los conjuntos de datos no se actualizan con tanta frecuencia como los que tienen intervalos diarios.
Semanal: La opción semanal garantiza que un conjunto de datos se actualice en días específicos cada semana a la hora especificada por el usuario. Por ejemplo, si desea que sus conjuntos de datos cargados se actualicen todos los lunes, jueves y sábados exactamente a la medianoche, debe configurar una programación semanal de conjuntos de datos.
Mensuales: La opción mensual garantiza que un conjunto de datos se actualice en uno o varios días específicos cada mes y uno o varios días laborables por semana. Por ejemplo, puede especificar la actualización del conjunto de datos para que el servicio lo actualice todos los lunes de la primera y última semana del mes.
La expresión de horario tiene el formato week:days:hours:minutes
para especificar la expresión de programación.
- Las semanas pueden ser 1-4, siendo 1 la primera semana del mes.
- Los días pueden ser 1-7 mostrando los días de la semana. Las horas y minutos pueden ser de acuerdo a la hora del día para la programación. Puede especificar más de un día de la semana agregando los días separados por una coma.
- Los usuarios pueden seleccionar varias semanas de un mes para la programación.
Tomemos algunos ejemplos para entender cómo funciona la expresión de programación:
La expresion
1,2:2:00:00
para programación se refiere a las actualizaciones del conjunto de datos el segundo día de la primera y segunda semana del mes a medianoche.La expresion
1:1,2,7:15:30
para la programación muestra que los conjuntos de datos se actualizan el primer, segundo y séptimo día de la primera semana del mes (lunes, martes y domingo) a las 3:30 p.m.
Mecanismo de carga
El usuario especifica la implementación de qué objetos se cargan desde la fuente de datos maestros. Cada dato individual existe como un todo. CacheItem
- añadido a la memoria caché al iniciar la memoria caché.
Reintentos del cargador de caché
Si una operación falla mientras se carga el caché, NCache lo realiza antes de pasar al siguiente. Por defecto, NCache no vuelve a intentar la operación fallida. Sin embargo, puede habilitar esto a través de la NCache Centro de gestion.
Intervalo de reintento del cargador de caché
Si el usuario opta por habilitar los reintentos para operaciones fallidas, también puede especificar el intervalo de tiempo de espera (en segundos) antes de volver a intentar la operación fallida. El intervalo es 0 por defecto. Sin embargo, es configurable por el usuario a través del NCache Centro de gestion.
Intervalo de actualización
Para comprobar qué conjuntos de datos necesitan actualizarse o actualizarse, se ejecuta un subproceso después de un tiempo específico, conocido como intervalo de actualización. De forma predeterminada, el intervalo de actualización es de 900 segundos. El valor mínimo para este intervalo es 1 segundo y el máximo es 3600 segundos. Los usuarios pueden configurar el intervalo de actualización a través del NCache Centro de gestion.
Actualización de conjuntos de datos a pedido
El usuario también tiene la opción de actualizar sus conjuntos de datos manualmente a través del Invocar-RefresherDataset cmdlet. A través de este cmdlet, el usuario puede actualizar sus conjuntos de datos inmediatamente o dentro de las próximas 24 horas usando el RefreshPreference
opción de este cmdlet. Esta opción identifica cuándo se producirá esta actualización bajo demanda en función de si el proceso resultará en degradación o no. De lo contrario, el conjunto de datos RefreshNow
. Si es así, el conjunto de datos se actualizará en la próxima hora programada a través de la RefreshOnNextTimeOfDay
.
Vea también
Componentes de Cache Startup Loader and Refresher
Proveedores de fuentes de datos (fuente de respaldo)
Actualizar NCache Source-Connect