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: 57382|Respuesta: 3

[ASP.NET] ASP.NET Core (cinco) se basa en transacciones distribuidas CAP

[Copiar enlace]
Publicado el 17-3-2021 18:12:50 | | | |
Principios de la PAC

El principio CAP, también conocido como el teorema CAP, se refiere a la consistencia, disponibilidad y tolerancia a particiones en un sistema distribuido. El principio de la PAC establece que estos tres elementos solo pueden alcanzar dos puntos a la vez.Es imposible tomar los tres a la vez

2% y 3% de transacciones distribuidas
https://www.itsvse.com/thread-9591-1-1.html

La esencia del principio de la PAC es AP, CP o AC, pero no existe CAP. Si no hay copia de los datos en un sistema distribuido, entonces el sistema debe cumplir la condición de consistencia fuerte, porque solo hay un dato único, no habrá inconsistencia de datos; en ese momento están presentes los dos elementos C y P, pero si el sistema tiene una condición de partición de red o tiempo de inactividad, inevitablemente hará que algunos datos sean inaccesibles y la condición de disponibilidad no pueda cumplirse, es decir, en este caso se obtiene el sistema CP, peroEl PAC no puede satisfacerse al mismo tiempo

Revisión:

ASP.NET Validación unificada de modelos de modelo del filtro Core(4)
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Crear dinámicamente instancias usando ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Núcleo (2) Reiniciar la aplicación por código
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) utiliza caché Redis
https://www.itsvse.com/thread-9393-1-1.html


DotNetCore.CAP

CAP es un bus de eventos e implementación en un sistema distribuido (SOA, MicroService).Consistencia final(Distributed Transactions) es una biblioteca de código abierto en C# que es ligera, de alto rendimiento y fácil de usar.

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

Dotnet CAP tiene todas las funciones de Event Bus, y CAP ofrece una forma más ágil de gestionar la publicación/suscripción en EventBus.

MediatR es un marco de suscripción y publicación de mensajes en proceso que proporciona el método Send para publicar en un solo manejador y el método Publish para publicar en múltiples manejadores, que es muy cómodo de usar. Actualmente, .NET Framework 4.5, . NET Stardand1.3、. NET Stardand 2.0 y otras versiones, que pueden usarse en diversas plataformas.

ASP.NET Core utiliza el modelo intermedio MediatR
https://www.itsvse.com/thread-9272-1-1.html

Vista previa de arquitectura



CAP soporta colas de mensajes como Kafka, RabbitMQ, AzureServiceBus, AmazonSQS, etc., y CAP proporciona extensiones para Sql Server, MySql, PostgreSQL y MongoDB como almacenamiento de bases de datos.

Este artículo utiliza RabbitMQ y SQL Server como colas de mensajes y almacenamiento.

Instalar RabbitMQ

Para tutoriales específicos de instalación, por favor consulta:

【Combate práctico】Tutorial de instalación de RabbitMQ en Windows
https://www.itsvse.com/thread-4630-1-1.html

【Practice】RabbitMQ instala el plugin de gestión web
https://www.itsvse.com/thread-4631-1-1.html
También se omite añadir una cuenta, por favor consulte:

【Practica】rabbitMQ para añadir información de cuenta
https://www.itsvse.com/thread-4655-1-1.html
Yo mismo añadí la cuenta de prueba y limité los Anfitriones Virtuales, como se muestra a continuación:



De lo contrario, el error será el siguiente:

ACCESS_REFUSED - Se denegó el inicio de sesión usando el mecanismo de autenticación PLAIN. Para más detalles, consulta el archivo de registro del corredor.

Ninguno de los puntos finales especificados era accesible

.NET Core integra CAP

Primero, crea un nuevo proyecto ASP.NET Core que sea tanto el emisor como el receptor. Usa el comando nuget para instalar el paquete así:

Al iniciar, configura el método de servicio ConfigureServices de la siguiente manera:

Puedes visitar la dirección web /cap para ver el panel de control que se muestra a continuación:



Persistencia de datos: CapCreación automática"Publicado" y "Recibido" son dos tablas de bases de datos locales

CREAR TABLA [cap]. [Publicado] (
        [Id] [bigint] NO NULO,
        [Versión] [nvarchar] (20) NO NULO,
        [Nombre] [nvarchar] (200) NO NULO,
        [Contenido] [nvarchar] (max) NULO,
        [Intenta] [int] NO NULO,
        [Añadido] [cita2] (7) NO NULO,
        [Expira] [cita2] (7) NULO,
        [NombreDeEstado] [nvarchar] (50) NO NULO,
LIMITACIÓN [PK_cap. [PUBLICADO EN CLAVES PRIMARIAS AGRUPADAS
(
        [Id] ASC
CON (PAD_INDEX = APAGADO, STATISTICS_NORECOMPUTE = APAGADO, IGNORE_DUP_KEY = APAGADO, ALLOW_ROW_LOCKS = ENCENDIDO, ALLOW_PAGE_LOCKS = ENCENDIDO) ENCENDIDO [PRIMARIO]
) EN [PRIMARIA] TEXTIMAGE_ON [PRIMARIA]
VETE
CREAR TABLA [cap]. [Recibido] (
        [Id] [bigint] NO NULO,
        [Versión] [nvarchar] (20) NO NULO,
        [Nombre] [nvarchar] (200) NO NULO,
        [Grupo] [nvarchar] (200) NULL,
        [Contenido] [nvarchar] (max) NULO,
        [Intenta] [int] NO NULO,
        [Añadido] [cita2] (7) NO NULO,
        [Expira] [cita2] (7) NULO,
        [NombreDeEstado] [nvarchar] (50) NO NULO,
LIMITACIÓN [PK_cap. [Recibido] CLAVES PRIMARIAS AGRUPADAS
(
        [Id] ASC
CON (PAD_INDEX = APAGADO, STATISTICS_NORECOMPUTE = APAGADO, IGNORE_DUP_KEY = APAGADO, ALLOW_ROW_LOCKS = ENCENDIDO, ALLOW_PAGE_LOCKS = ENCENDIDO) ENCENDIDO [PRIMARIO]
) EN [PRIMARIA] TEXTIMAGE_ON [PRIMARIA]
VETE


El método de controlador de HomeController es el siguiente:

Cuando el usuario se registra con éxito, se envían 3 mensajes con diferentes temas, y luego el suscriptor los consume.

Cuando inicie la CAP, creará un grupo de consumidores predeterminado si varios consumidores del mismo grupo consumen el mismo mensaje temático,Solo se ejecutará a un consumidor。 Al contrarioSi los consumidores pertenecen a diferentes grupos de consumidores, todos los consumidores son ejecutados

Crear un nuevo proyecto de consola .NET Core, como suscriptor (consumidor), o referenciar el paquete, puede ignorarse el panel de control.

Si está en el Controlador, añade [CapSubscribe("")] directamente para suscribirse a los mensajes correspondientes.

Si tu método no está en el Controlador, entonces la clase a la que te suscribes debe heredar ICapSubscribe y luego añadir la etiqueta [CapSubscribe("")].

El código es el siguiente:

Abre el cliente de suscripción e intenta acceder a http://localhost:28116/Home/UserRegister para enviar mensajes, el efecto es el siguiente:



Tanto la consola como el receptor del mando se activan, como se muestra en la figura siguiente:



Intenta lanzar una excepción manualmente en el método de mensaje receptor, el código es el siguiente:

CAP volverá a intentar el método automáticamente,El número de intentos tras el fallo es 50 por defecto, y el intervalo de intento tras fallar es de 60 segundos por defecto, como se muestra en la figura siguiente:



El framework no puede estar 100% seguro de que el mensaje se ejecute solo una vezPor lo tanto, en algunos escenarios clave, el lado del mensaje presta atención a la deduplicación empresarial en el proceso de implementación del método.

Problemas de idempotencia de la interfaz
https://www.itsvse.com/thread-6010-1-1.html

Finalmente, adjunta el código fuente:

Turistas, si queréis ver el contenido oculto de esta publicación, por favorRespuesta






Anterior:Conversión en línea en CSV de la sintaxis Markdown
Próximo:HttpClient POST directamente para enviar solicitudes de compresión por byte byte (gzip)
Publicado el 18-3-2021 18:11:20 |
Ven a echar un vistazo, gracias por compartirlo
Publicado el 2021-9-22 20:42:18 |
Aprende a aprender...
Publicado el 31-12-2021 15:08:21 |
Aprendizaje
Muy bien, muy bien
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