Bloqueo optimista versus pesimista en caché
La necesidad de bloqueo surge siempre que hay recursos compartidos en su entorno. Los recursos compartidos por más de un usuario pueden provocar inconsistencia en los datos. La mejor manera de solucionar problemas como estos es mediante el bloqueo. Al utilizar el mecanismo de bloqueo, el conjunto de datos críticos se vuelve tolerante a fallas, lo que brinda al usuario atomicidad, coherencia y aislamiento.
Note
Esta característica también está disponible en NCache Professional.
NCache le proporciona un mecanismo de bloqueo eficiente para la sincronización e integridad de los datos dentro del almacén de caché que actualizan diferentes clientes paralelos. NCache El bloqueo interno garantiza la coherencia de los datos en todo el clúster de caché para cada actualización de los mismos datos. Además, NCache le proporciona una API para bloquear datos de caché específicos, de modo que solo un hilo o aplicación pueda actualizarlos o leerlos.
Cuándo usar el bloqueo
Planteamiento del problema
Considere un escenario en el que hay una cuenta bancaria única utilizada por dos titulares de cuentas. La cuenta tiene un saldo de $5000. El usuario 1 quiere retirar $2000 de la cuenta y el usuario 2 quiere depositar $1000 en la cuenta. Teniendo en cuenta las condiciones dadas, el saldo de la cuenta después de realizar estas operaciones debe ser de $4000 (5000-2000 = 3000 y 3000+1000 = 4000).
Ahora consideremos que ambos usuarios quieren realizar esta operación en la cuenta al mismo tiempo y como no hay un manejo adecuado para el escenario, sucede lo siguiente:
El usuario 1 verifica el saldo de la cuenta y muestra $5000. Retira $2000 y el saldo total se convierte en $3000.
El usuario 2 verifica el saldo de la cuenta y muestra $5000. Deposita $1000 y el saldo total se convierte en $6000.
El siguiente diagrama muestra el escenario visualmente.
Solución
Para resolver este problema de recursos compartidos, puede utilizar dos enfoques.
El primer enfoque es bloquear la cuenta bancaria para realizar cualquier operación adicional cuando un usuario ya está realizando algún tipo de operación en ella.
El segundo enfoque consiste en utilizar un mecanismo en el que se abre una cuenta bancaria para que la utilicen ambos usuarios, pero la versión de la cuenta bancaria se actualiza con respecto a la hora actual de cada operación realizada. De esta manera la nueva versión estará disponible para las operaciones del usuario.
NCache proporciona ambos mecanismos de bloqueo conocidos como bloqueo pesimista y optimista. Se explican con más detalle en capítulos sucesivos.
Tipos: bloqueo optimista versus pesimista
Hay dos tipos de bloqueo disponibles con NCache:
Bloqueo pesimista (bloqueo exclusivo)
El bloqueo pesimista es un mecanismo en el que un elemento se bloquea exclusivamente mediante unLockHandle
por lo que el elemento permanece inaccesible para otros usuarios mientras está bloqueado.Bloqueo optimista (versiones de elementos de caché)
El bloqueo optimista es un mecanismo en el que se utiliza el control de versiones de un elemento para bloquearlo. Con este mecanismo, un elemento está abierto para que lo utilice otro usuario, pero en cada operación realizada en un elemento, la versión del elemento se actualiza sola.
Vea también
.NETO: Alachisoft.NCache.Runtime.Caching espacio de nombres
Java: com.alachisoft.ncache.runtime.caching espacio de nombres
Nodo.js: cache clase.
Pitón: ncache.runtime.caching clase.