Descripción general del almacenamiento en caché de escritura directa y escritura detrás
NCache admite el almacenamiento en caché de escritura a través, que permite las operaciones de escritura directamente en la fuente de datos a través del caché. De esta manera, puede sincronizar su caché y la fuente de datos. En el almacenamiento en caché de escritura simultánea, NCache primero actualiza el almacén de caché y luego aplica esa operación a la fuente de datos. Por ejemplo, si una aplicación cliente actualiza una entrada en el caché, entonces NCache también actualizará la fuente de datos (si Write-Through está habilitado).
Note
Esta función solo está disponible en NCache Enterprise Edición.
Para usar el almacenamiento en caché de escritura simultánea en su aplicación, primero debe implementar el IWriteThruProvider
de la interfaz del. NCache utilizará internamente este proveedor personalizado para realizar operaciones de escritura en la fuente de datos. NCache llamará a su proveedor detrás de las operaciones de escritura (Agregar, Insertar, Eliminar/Eliminar) Llamadas API con escritura simultánea.
En la actualidad NCache proporciona dos modos para el almacenamiento en caché de escritura simultánea que se indican a continuación:
- Write-Through (actualiza la fuente de datos sincrónicamente)
- Write-Behind (actualiza la fuente de datos de forma asíncrona)
Note
NCache proporciona un contador de rendimiento Write-thru/sec
para operaciones de escritura simultánea.
Escriba por medio de
En el almacenamiento en caché de escritura simultánea, primero se aplica una operación en el almacenamiento de caché y luego se actualiza de forma síncrona en la fuente de datos configurada. Usando Write-Through, las operaciones se completarán después de NCache aplica esa operación en la fuente de datos. Puede usar el almacenamiento en caché de escritura simultánea si las actualizaciones inmediatas de la fuente de datos son críticas y necesita actualizar la fuente de datos tan pronto como se actualice la caché.
Escritura posterior
En Write-Through, debido a las operaciones síncronas en la fuente de datos, la tasa de operaciones será la misma que la tasa de operaciones del usuario en la memoria caché. Para las aplicaciones con un alto tráfico de usuarios, la tasa de operaciones de los usuarios en la memoria caché puede ser muy alta, lo que puede saturar su fuente de datos. Además, las operaciones de fuentes de datos síncronas pueden afectar el tiempo de respuesta de una operación de usuario.
Para superar estos problemas, se puede utilizar Write-Behind en lugar de Write-Through. En Write-Behind, las operaciones de origen de datos se realizan de forma asíncrona después de NCache realiza operaciones en el almacén de caché. Después de actualizar el almacenamiento en caché, estas operaciones se ponen en cola y luego se aplican a las fuentes de datos configuradas de forma asíncrona. Por lo tanto, el uso de Write-Behind mejorará el tiempo de respuesta de las operaciones de caché.
NCache proporciona diferentes ajustes de configuración en Write-Behind para controlar el flujo de operaciones en la fuente de datos. Por ejemplo, puede especificar la tasa a la que NCache aplicará operaciones de Escritura diferida en el origen de datos a través de Throttling.
Estrangulamiento
Indica el número de operaciones aplicadas en la fuente de datos por segundo. El valor predeterminado para la limitación es de 500 operaciones/seg. Puede cambiar este valor a través de la configuración de la fuente de respaldo en el NCache Manager .
Note
NCache proporciona un contador de rendimiento Write-behind/sec
para operaciones de escritura diferida.
Modos de escritura diferida
NCache le permite aplicar operaciones de Escritura diferida de forma individual o por lotes. Se mantiene una cola de Escritura diferida para las operaciones de Escritura diferida. Todas las operaciones de Escritura diferida se pondrán en cola en esta cola y luego se aplicarán a la fuente de datos de acuerdo con el modo por lotes o sin lotes configurado que se explica a continuación.
Modo no por lotes
De forma predeterminada, el modo no por lotes se configurará para las operaciones de escritura diferida. En este modo, las operaciones en la cola Write-Behind se aplicarán una por una en la fuente de datos de acuerdo con la tasa de regulación configurada. Por ejemplo, si la tasa de limitación es de 500 operaciones por segundo, NCache aplicará las operaciones de escritura diferida de una en una a la fuente de datos y no superará las 500 operaciones por segundo.
Por lotes
En el modo por lotes, se selecciona un lote/bulto de operaciones de acuerdo con su operation delay
. Puedes configurar operation delay
para operaciones de escritura diferida, que indica el tiempo en milisegundos que cada operación debe esperar en la cola de escritura diferida antes de aplicarse en el origen de datos. Por defecto, su valor es cero.
El intervalo de lote es el intervalo configurable según el cual NCache comprueba periódicamente si se ha agotado el tiempo de espera de la operación en la cola Write-Behind. Por ejemplo, si el retraso de la operación está configurado en 1000 ms y el intervalo de lote en 5 s, NCache comprueba las operaciones en la cola de escritura diferida cada 5 segundos y selecciona todas las operaciones que tienen retrasos de operación vencidos (todas las operaciones que están en cola durante los últimos 1000 milisegundos).
Después de la selección de operaciones en masa, se aplican a la fuente de datos de acuerdo con la tasa de limitación configurada. Digamos que se selecciona una gran cantidad de 1000 operaciones de la cola Write-Behind, que luego se aplican a la fuente de datos en un lote de 500 operaciones (si la tasa de limitación es de 500 operaciones/seg) como la operación máxima aplicada a la fuente de datos por segundo no puede exceder el valor de regulación configurado.
Puede especificar un tiempo de retraso de la operación que va desde segundos hasta días y meses. De esta forma, puede pausar sus operaciones en la fuente de datos en un período de tiempo configurable. NCache también proporciona contadores de rendimiento para la cola de escritura diferida, el recuento de operaciones y el recuento de operaciones por lotes actuales. Para Write-Behind, si el procesamiento por lotes está habilitado, las operaciones que están listas para ejecutarse en el origen de datos se retiran de la cola Write-Behind.
Note
El número de operaciones en cola en el intervalo de lote actual será mostrado por el contador de conteo de operaciones por lotes actual.
Soporte de aplicación en caliente para la configuración de escritura posterior
NCache admite la configuración de escritura diferida aplicable en caliente que le permite cambiar las configuraciones de escritura diferida en tiempo de ejecución, sin detener la memoria caché. Puede cambiar los atributos configurables de Write-Behind a través del NCache gerente y NCache incorporará esos cambios dinámicamente.
En el soporte de aplicación en caliente, puede cambiar el modo de escritura posterior de lote a no lote y viceversa. Por ejemplo, si ha cambiado el modo por lotes a no por lotes, entonces NCache ignorará el valor de retraso de la operación y comenzará a ejecutar operaciones individualmente. Además, puede cambiar la tasa de limitación en el tiempo de ejecución de acuerdo con sus necesidades de manera similar, el retraso de la operación, el intervalo de lote, el límite de la cola de operaciones fallidas y la proporción de desalojo de operaciones fallidas también pueden cambiar en el tiempo de ejecución.
advertencia
Solo puede aumentar el valor del límite de cola de operaciones fallidas; de lo contrario, NCache utilizará su valor predeterminado para otras operaciones.
Escritura diferida en entorno agrupado
Dado que se mantiene una cola de escritura diferida para las operaciones de escritura diferida, un monitor de subprocesos independiente dedicado ejecuta su operación. Los detalles del nivel de topología para Write-Behind se mencionan a continuación:
Topología replicada: La cola de escritura en segundo plano se mantiene en todos los nodos, pero el procesador asincrónico de escritura en segundo plano está presente solo en el nodo coordinador. Significa que todas las operaciones de escritura diferida se realizan a través de este nodo y se replican en otras colas de nodos en todo el clúster. De esta forma, si un nodo está inactivo, el siguiente nodo coordinador realiza todas las operaciones de escritura diferida restantes.
Topología Particionada-Replicada: La cola de escritura diferida se mantiene en cada nodo activo y también se replica en sus réplicas correspondientes. Cada nodo es responsable de su operación Write-Behind en la fuente de datos.
Topología duplicada: La cola de escritura diferida se mantiene tanto en los nodos activos como en los pasivos, pero solo el nodo activo es responsable de realizar las operaciones de escritura diferida. De manera similar, si el nodo activo está inactivo, el nodo pasivo se vuelve activo y realiza las operaciones de escritura diferida restantes.
Topología particionada: La cola de escritura diferida se mantiene en cada partición y cada nodo es responsable de sus operaciones de escritura diferida en el origen de datos.
Resultado de la operación de almacenamiento en caché
NCache le brinda la flexibilidad de sincronizar las operaciones de escritura simultánea en caché en función del resultado de su operación. Después de aplicar una operación (Agregar/Insertar) en la fuente de datos, puede especificar el estado de la operación sobre la base de la cual NCache sincronizará el almacén de caché. Por ejemplo, en caso de que falle la operación de la fuente de datos, puede decidir eliminar esos datos de la memoria caché o conservarlos. También puede volver a intentar esa operación en la fuente de datos. Para ello, debe especificar Success
/Failure
/FailureRetry
/FailureDontRemove
as
OperationResult.Status
of OperationResult
. Esto se proporciona tanto en el almacenamiento en caché Write-Through como Write-Behind.
Estado de operación de la fuente de datos y sus acciones correspondientes por NCache se describen a continuación:
éxito: Esto significa que la operación de la fuente de datos se realizó correctamente y el elemento se agregó a la fuente de datos, por lo que NCache lo mantendrá en el caché también.
Fracaso: Esto significa que la operación de la fuente de datos falló y el elemento no se pudo agregar a la fuente de datos, por lo que NCache también lo eliminará del caché.
FracasoDontRemove: Esto significa que la operación de la fuente de datos falló y el elemento no se pudo agregar a la fuente de datos, pero NCache lo guardará en el caché.
ErrorReintentar: Esto significa que la operación de la fuente de datos falló y el elemento no se pudo agregar a la fuente de datos, por lo que NCache mantendrá el elemento en caché y volverá a intentarlo. Los reintentos se realizarán como operaciones de escritura diferida.
Reintentar operaciones fallidas
NCache le permite volver a intentar las operaciones en Write-Through/Write-Behind en caso de que fallen en la fuente de datos. Para este propósito, si habilita el reintento de la operación, entonces NCache volverá a intentar esa operación en la fuente de datos. En caso de escritura simultánea o escritura diferida, todas las operaciones de reintento se volverán a poner en la cola de escritura diferida, lo que significa que una operación de reintento de escritura simultánea se volverá a intentar de forma asíncrona como una operación de escritura diferida.
Note
NCache también proporciona un contador de rendimiento para Datasource failed operations/sec
. Operaciones de escritura realizadas en la fuente de datos que regresa Failure
/FailureRetry
/FailureDontRemove
as OperationResult.Status
of
OperationResult
se cuentan por segundo por este contador.
NCache le permite limitar el número de operaciones fallidas que se volverán a intentar. En tal situación, mencionará el límite de la cola de operación fallida a través del
NCache Manager y si se excede ese límite, puede desalojar operaciones fallidas a través de una tasa de desalojo configurable. Aquí, NCache expulsará la mayoría de las operaciones reintentadas cuando la cola de reintentos esté llena. Cada operación tiene un RetryCount
propiedad asociada con él, que se incrementa en cada operación reintentada en la fuente de datos.
Para esto, NCache proporciona un contador de rendimiento para
Write-behind failure retry count
y Write-behind evictions/sec
. Write-behind failure retry count
muestra el número de operaciones en cola para reintento. Operaciones de escritura de origen de datos que regresan FailureRetry
as Status
in OperationResult
se volverá a poner en cola para volver a intentarlo. Mientras que, Write-behind evictions/sec
El contador muestra el número de operaciones de reintento desalojadas por segundo.
Actualización de caché después de la operación de fuente de datos
Como se indicó anteriormente, en el almacenamiento en caché de escritura simultánea, la operación se realiza primero en el almacenamiento en caché y luego en la fuente de datos. Pueden existir escenarios en los que después de realizar operaciones en la fuente de datos, los datos se modifican, por ejemplo, en el caso de las columnas de identidad, su valor puede verse modificado por la operación de la fuente de datos. En tal situación, los datos pueden volverse inconsistentes en caché y fuente de datos. Para manejar esto, NCache le permite especificar si actualizar los datos en caché después de las operaciones de origen de datos o no. Puedes habilitar UpdateInNCache
marca para realizar la operación (Agregar/Insertar) nuevamente en el almacenamiento de caché para sincronizarlo con la fuente de datos, por lo tanto, actualizar las operaciones en el almacenamiento de caché de forma sincrónica a través de Write-Through o asincrónicamente a través del almacenamiento en caché de Write-Behind.
Note
NCache también proporciona un contador de rendimiento Datasource updates/sec
que muestra el número de operaciones de actualización por segundo en la memoria caché después de las operaciones de escritura de la fuente de datos.
En esta sección
Configurar proveedor de escritura simultánea
Explica la interfaz del proveedor de escritura simultánea y proporciona una implementación de muestra para la interfaz.
Write-Thru con operaciones de caché
Proporciona ejemplos para usar Write-Through con operaciones básicas en NCache.
Escritura diferida con operaciones de caché
Proporciona ejemplos para usar Write-Behind con operaciones básicas en NCache.
Supervisión de contadores de escritura simultánea
Describe los contadores de rendimiento proporcionados por NCache para supervisar el almacenamiento en caché de escritura simultánea.