Escenarios de aplicación de bloqueos distribuidos: Con el desarrollo de servicios, aplicaciones individuales se convierten en clústeres, los bloqueos distribuidos resuelven la operación de diferentes procesos (hilos) en el mismo recurso en situaciones concurrentes, y algunos servicios deben requerir un solo hilo para operar, por ejemplo: cambios en los importes de depósitos, cambios en el inventario de mercancías, etc.
Revisión:
En el artículo anterior "[Práctica]ASP.NET Núcleo basado en Redis Distributed Lock Flash Kill", cuando añadimos un bloqueo, también activamos un hilo en segundo plano para extender el tiempo del bloqueo, de modo que aseguramos que, al liberar el bloqueo, el bloqueo ocupado por otros hilos no se elimine por error.
Después de aprender Redis a usar scripts Lua, puedes usar scripts fácilmente para completar bloqueos de ocupación y liberar bloqueos.
Primero, echemos un vistazo a los renderizados de la siguiente manera:
Primero abrimos 1000 roscas paralelas para competir por el candado, y el candado expiró durante 5 segundos.Completamos 1000 hilos en 5 segundos, y solo 1 hilo consiguió el bloqueoTras esperar 6 segundos, el bloqueo se libera automáticamente, y puedes ver que la segunda tarea ha conseguido el bloqueo y lo ha liberado inmediatamente, y el código posterior lo ha conseguido con éxito.
El script lua para obtener el bloqueo es el siguiente:
El script lua para liberar el candado es el siguiente:
Código de la interfaz:
Descarga del código fuente:El inicio de sesión del hipervínculo es visible.
Modificar "[Practice] ASP.NET Core basado en Redis distributed lock flash sale" se implementa usando este artículo, y nuestra web lo simula10.000 artículos, y luego escribió una consola para simular el tiempo de la solicitud HTTPEl agotamiento se completa en 6 segundos, como se muestra en la figura siguiente:
Modificar el código de solicitud de simulación de prueba:
(Fin)
|