Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 34174|Respuesta: 5

[.NET Core] .NET Core implementa análisis de principios de bloqueo distribuido basado en Redis

[Copiar enlace]
Publicado en 22/9/2020 9:17:22 | | | |
En escenarios empresariales, no se permiten operaciones simultáneas de contenido, como inventario de mercancías, el mismo archivo, etc., y la aplicación del programa se despliega en varios servidores.
[Combate real] ASP.NET Core está basado en la venta flash de candados distribuidos de Redis
https://www.itsvse.com/thread-9397-1-1.html

El bloqueo distribuido basado en zk previamente escrito es el siguiente:

Implementación de bloqueo distribuido de .net/c# Zookeeper [Código fuente]
https://www.itsvse.com/thread-4651-1-1.html

Lo que también necesitas saber para leer este artículo:

Volátil vs. Interlock vs. bloqueo
https://www.itsvse.com/thread-5023-1-1.html

Cómputo paralelo en C# Paralelo.Para&Paralelo.Para
https://www.itsvse.com/thread-3671-1-1.html

.NET Core implementa bloqueos distribuidos basados en RedisEl principio es llamar al comando SETNX de redis, si la clave ya existe, el comando SETNX no hace nada. El comando devuelve 1 cuando la configuración tiene éxito y 0 cuando falla.

El inicio de sesión del hipervínculo es visible.

Crea un nuevo proyecto de consola .NET Core 3.1, añade una referencia a StackExchange.Redis y utiliza el comando nuget de la siguiente manera:

Llamamos al método StringSet de la biblioteca, a través del código fuente StackExchange.Redis, podemos ver que el método StringSet llamará al método privado GetStringSetMessage para ejecutar diferentes comandos de conjunto mediante el valor de enumeración de cuando, el código es el siguiente:

Ejecutamos el comando SETNX 2000 veces mediante una llamada de prueba paralela al programa, que se ejecuta en 2 entregas, en las que la validez de la caché de la clave es de 5 segundos, es decir, la clave se liberará automáticamente tras 5 segundos, es decir, el bloqueo se liberará.

El código es el siguiente:


Como puedes ver, un total de 2 inserciones exitosas y 1998 intentos fallidos son exactamente lo que esperábamos, y los renders son los siguientes:


Por el momento, la cerradura aún no ha sido liberada.
(Fin)









Anterior:No he encontrado una solución para parte del camino "\bin\roslyn\csc.exe"
Próximo:EF Core Series 2 encapsula OnModelCreating, crea índices usando reflexiones y más
 Propietario| Publicado en 26/9/2020 15:37:52 |
test123
Publicado en 20/11/2020 11:18:31 |
Si existe un entorno multihilo y uno multiinstancia al desplegar contenedores, ¿hay algún problema con este manejo?
 Propietario| Publicado en 20/11/2020 11:29:44 |
qiuyueming Publicado el 20-11-2020 11:18
Si existe un entorno multihilo y uno multiinstancia al desplegar contenedores, ¿hay algún problema con este manejo? ...

Multiinstancia significa multihilo, y en el código fuente, multihilo llama a redis, y solo un hilo recibe un bloqueo
Publicado en 22/3/2022 14:32:40 |
Apoyo, apoyo
Publicado en 23/3/2022 11:15:30 |
Aprende que esto es bueno @
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com