Los microservicios promueven la modularidad al dividir las aplicaciones en servicios pequeños y poco acoplados, cada uno de los cuales es responsable de una función particular. La transición de aplicaciones monolíticas a la arquitectura de microservicios ha transformado la forma en que desarrollamos software. Este cambio ha mejorado escalabilidad, resiliencia y alta disponibilidad, ya que cada servicio se puede desarrollar, implementar y gestionar de forma independiente.
Un agente de mensajes desempeña un papel fundamental a la hora de permitir la comunicación asincrónica entre microservicios. Garantiza interacciones desacopladas y basadas en eventos, lo que permite que los servicios se comuniquen de forma eficaz, independientemente de los tiempos de respuesta. Una solución popular para estas comunicaciones asincrónicas entre microservicios es Modelo de mensajería de publicación/suscripción (Pub/Sub).
NCache, un caché distribuido en memoria para .NET 8 y ASP.NET Core, ofertas mejoradas Funciones de mensajería de Pub/Sub. Garantiza Tolerancia a fallos, persistencia del mensaje y escalabilidad al tiempo que facilita un alto rendimiento y evento conducido interacción de microservicios.
Clave Conclusiones:
Latencia de submilisegundos: Al trasladar la capa de mensajería del disco al almacenamiento en memoria, NCache Elimina la sobrecarga de E/S típica de las bases de datos tradicionales, lo que garantiza una distribución de eventos de alta velocidad.
Escalabilidad desacoplada: Utilizando NCache Como bus de eventos, permite que los microservicios se comuniquen de forma asíncrona, lo que posibilita que los servicios individuales escalen de forma independiente sin causar cuellos de botella en todo el sistema.
Crecimiento lineal del rendimiento: La arquitectura distribuida de la NCache El modelo Pub/Sub garantiza que la capacidad de procesamiento de mensajes aumente linealmente a medida que se agregan nuevos nodos al clúster.
Distribución confiable de eventos: Funcionalidades como las suscripciones duraderas y la caducidad de los mensajes garantizan que, incluso en entornos de alto tráfico, la entrega de eventos siga siendo coherente y manejable.
Cómo escalar microservicios .NET con NCache Publicación/suscripción en memoria
NCache permite la mensajería en tiempo real entre microservicios definiendo temas para publicar y suscribirse a eventos. editor El microservicio envía eventos al NCache agente de mensajes, mientras abonado Los microservicios manejan eventos de forma asincrónica.

Figura 1: Comunicación de microservicios desacoplados mediante NCache como autobús conmemorativo.
El actualizado Mensajería Pub/Sub en NCache Se alinea con la arquitectura de microservicios de .NET 8 y ASP.NET Core, integrándose a la perfección con los marcos de trabajo más recientes. A continuación se muestra una representación lógica de NCache como bus de eventos para microservicios:
Poner en marcha NCache como un bus de eventos de alto rendimiento en .NET 8
En los microservicios de .NET 8 y ASP.NET Core, NCache actúa como un bus de eventos para enviar mensajes a múltiples suscriptores. Los desarrolladores pueden utilizar el NCache API de publicación y suscripción para una mensajería rápida y con bajos retrasos, evitando la necesidad de intermediarios de mensajes externos como RabbitMQ o Kafka.

Figura 2: Comunicación de backend escalable entre microservicios en contenedores a través de un NCache agente en memoria.
Implementando Pub/Sub con NCache en .NET 8
El siguiente ejemplo demuestra cómo NCache Permite la mensajería Pub/Sub en un escenario del mundo real, utilizando la aplicación de muestra eShopOnContainers.
Publicación de un evento (ejemplo de pago en carrito de compras)
El siguiente fragmento de código del microservicio Basket.API muestra la publicación de un evento de pago de usuario en el NCache Broker de mensajes Pub/Sub.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[Route("checkout")] [HttpPost] public async Task CheckoutAsync([FromBody] BasketCheckout basketCheckout, [FromHeader(Name = "x-requestid")] string requestId) { var userId = GetUserIdentity(); basketCheckout.RequestId = GetRequestID(); var basket = await GetBasketAsync(userId); var userName = User.FindFirst(x => x.Type == "unique_name").Value; var eventMessage = new UserCheckoutAcceptedIntegrationEvent(userId, userName, basketCheckout.Address, basketCheckout.CardNumber, basketCheckout.RequestId, basket); // Publish message to NCache Pub/Sub store eventBus.Publish(eventMessage); } |
Suscripción a un evento (ejemplo de procesamiento de pedidos)
El microservicio Ordering.API se suscribe a UserCheckoutAcceptedEvent y procesa el pedido cuando un usuario completa el pago.
|
1 2 |
var eventBus = app.ApplicationServices.GetRequiredService(); eventBus.Subscribe<UserCheckoutAcceptedEvent, IIntegrationEventHandler>(); |
Comparación técnica: mensajería basada en disco vs. NCache Publicación/suscripción en memoria
La siguiente tabla resume las principales diferencias de rendimiento y arquitectura entre la mensajería tradicional basada en disco y NCacheModelo Pub/Sub en memoria.
| Elemento | Mensajería basada en disco (por ejemplo, RabbitMQ, SQL) | NCache Publicación/suscripción en memoria |
|---|---|---|
| Ruta de E/S principal | Persistencia vinculada al disco (fsync) | Limitada a la memoria (DRAM) |
| Perfil de latencia | Milisegundos (variable debido a la entrada/salida del disco) | Submilisegundo (Predecible) |
| Administración del Estado | Duradero (los mensajes se conservan incluso después de un reinicio completo). | Volátil/Replicado (Optimizado para velocidad) |
| Modelo de escala | Particionado verticalmente o en clúster | Horizontal lineal (membresía dinámica) |
| cuello de botella de rendimiento | Contención de disco y registros de transacciones | Ancho de banda de red / CPU |
| Pedido de mensajes | Estricto (a menudo provoca bloqueo de cabecera de cola) | Alta concurrencia (distribución paralela) |
Lo nuevo en NCache ¿Mensajería Pub/Sub para .NET 8?
A continuación se muestran algunas características NCache establece lo siguiente:
- Suscripciones duraderas para una entrega de mensajes confiable
Los microservicios pueden unirse o salir dinámicamente y las fallas de la red pueden interrumpir la entrega de mensajes. NCache garantiza la durabilidad del mensaje con dos modos de suscripción:
- Suscripciones duraderas compartidas: Múltiples suscriptores reciben mensajes mediante una distribución rotatoria, lo que garantiza la tolerancia a fallas.
- Suscripciones duraderas exclusivas: Un único suscriptor activo procesa el mensaje evitando el manejo duplicado.
- Mayor resiliencia con reintentos de conexión
NCache Mantiene una conexión persistente entre los microservicios y el agente de mensajes, incluso en caso de fallos temporales de la red. Implementa:
- Mecanismos de reconexión automática para restablecer conexiones.
- Mantener viva señales para evitar caídas de conexión inesperadas.
¿Por qué elegir a NCache ¿para mensajería de microservicios?
A medida que las organizaciones realizan el cambio, NCache Proporciona un agente de mensajes distribuido y robusto, optimizado para aplicaciones .NET 8 y ASP.NET Core. He aquí por qué. NCache es una opción ideal:
- Mensajería en memoria de alta velocidad
A diferencia de los intermediarios de mensajes tradicionales, NCache Se ejecuta completamente en memoria, lo que ofrece una latencia de menos de un milisegundo para la mensajería Pub/Sub. Esto garantiza el procesamiento de eventos en tiempo real, incluso con cargas elevadas.
- Procesamiento de mensajes escalable linealmente
NCache apoya escalamiento dinámicoA medida que se agregan más microservicios, el clúster de Message Broker se expande dinámicamente para manejar mayores volúmenes de mensajes de manera eficiente.
- Tolerante a fallos y de alta disponibilidad
NCache Proporciona las siguientes características de confiabilidad:
- Agrupamiento entre pares elimina puntos únicos de fallo.
- La replicación automática garantiza que los mensajes persistan en todos los nodos.
- Adiciones y eliminaciones de servidores sin inconvenientes y sin interrumpir el servicio.
- Compatibilidad nativa con .NET 8 y ASP.NET Core.
NCache ofrece las siguientes características para garantizar una integración perfecta:
- Totalmente compatible con los modernos arquitecturas nativas de la nube.
- Funciona con comunicación basada en gRPC en microservicios.
- soportes entornos en contenedores (Docker, Kubernetes, Azure).
Conclusión
La comunicación eficaz entre servicios es esencial a medida que las arquitecturas de microservicios cambian constantemente. NCache, Mensajes de publicación/suscripción Se simplifica, se eliminan los cuellos de botella de rendimiento y se proporciona una base de mensajería robusta y de alta velocidad para los microservicios de .NET 8 y ASP.NET Core.
Para explorar más, consulte nuestro blog en Escalamiento del rendimiento de los microservicios con almacenamiento en caché distribuido!
Preguntas frecuentes
Q: como hace NCache ¿Garantizar la entrega de mensajes si un microservicio suscriptor se desconecta?
A: NCache Utiliza suscripciones duraderas para mantener la integridad de los mensajes durante las interrupciones del servicio. A diferencia de las suscripciones estándar, una suscripción duradera persiste en el lado del servidor; si un microservicio se desconecta, NCache Conserva los mensajes correspondientes a esa suscripción específica y los entrega una vez que se restablece la conexión del servicio, siempre que el mensaje no haya caducado.
Q: ¿Puede NCache ¿El sistema Pub/Sub gestiona la comunicación entre diferentes lenguajes de programación?
R: Sí. NCache Admite mensajería multiplataforma, lo que permite que los microservicios escritos en diferentes lenguajes (como una combinación de .NET y Java) se comuniquen a través del mismo tema. Mediante el uso de JSON para la serialización de mensajes, los servicios pueden compartir datos sin problemas entre diferentes entornos de ejecución.
P: ¿Cuál es la ventaja de una suscripción duradera compartida en un entorno en clúster?
A: Una suscripción duradera compartida permite que varias instancias de un microservicio compartan la carga de una única suscripción. NCache Distribuye los mensajes entre estas instancias mediante un algoritmo de rotación. Esto garantiza que, incluso si una instancia falla, las demás instancias activas continúen procesando los mensajes, lo que proporciona tolerancia a fallos y equilibrio de carga integrados.
Q: como hace NCache ¿Cómo evitar que el intermediario de mensajes se convierta en un cuello de botella para la escalabilidad?
A: NCache evita cuellos de botella a través de su arquitectura distribuida peer-to-peer. A diferencia de los intermediarios centralizados que pueden tener un único punto de fallo, NCache Distribuye los temas de los mensajes y la carga de procesamiento entre todos los nodos del clúster. A medida que aumenta el volumen de mensajes, puede agregar más servidores al clúster para lograr incrementos lineales en el rendimiento y la capacidad.






