Elija entre los servicios de mensajería de Azure: Event Grid, Event Hubs y Service Bus

Azure ofrece tres servicios que le ayudan en la entrega de eventos o mensajes en una solución. Estos servicios son: Azure Event Grid, Azure Event Hubs, Azure Service Bus.

Aunque son similares, cada servicio se designa para escenarios determinados. Este artículo describe las diferencias entre estos servicios y le ayuda a entender cuál elegir para su aplicación. En muchos casos, los servicios de mensajería son complementarios y se pueden usar conjuntamente.

Eventos y mensajes

Hay una diferencia importante entre los servicios que entregan un evento y los que entregan un mensaje.

Evento

Un evento es una notificación ligera de una condición o un cambio de estado. El publicador del evento no tiene ninguna expectativa sobre cómo se trata el evento. El consumidor del evento decide qué hacer con la notificación. Los eventos pueden ser unidades discretas o parte de una serie.

Los eventos discretos notifican el cambio en un estado y son accionables. Para realizar el paso siguiente, el consumidor solo necesita saber que algo ha pasado. Los datos de evento tienen información acerca de lo que ha ocurrido, pero no tienen los datos que desencadenaron el evento. Por ejemplo, un evento notifica a los consumidores que se ha creado un archivo. Puede tener información general acerca del archivo, pero no contiene el propio archivo. Los eventos discretos funcionan muy bien con soluciones sin servidor que necesitan escalarse.

Una serie de eventos notifican una condición y se pueden analizar. Los eventos están ordenados en el tiempo e interrelacionados. El consumidor necesita la serie de eventos ordenada para analizar lo que ha pasado.

Message

Un mensaje son datos sin procesar producidos por un servicio que se consumen o almacenan en otro lugar. El mensaje contiene los datos que desencadenó la canalización del mensaje. El publicador del mensaje tiene una expectativa sobre la forma en que el consumidor trata el mensaje. Existe un contrato entre ambas partes. Por ejemplo, el publicador envía un mensaje con los datos sin procesar, espera que el consumidor cree un archivo a partir de esos datos y envía una respuesta cuando el trabajo finaliza.

Ahora revisemos rápidamente qué son Azure Event Grid, Azure Event Hubs y Azure Service Bus.

Azure Event Grid

Azure Event Grid es un servicio de distribución de mensajes de publicación y suscripción altamente escalable y totalmente administrado que ofrece patrones flexibles de consumo de mensajes mediante los protocolos Transporte de telemetría de cola de mensajes (MQTT) y HTTP. Con Azure Event Grid, puede crear canalizaciones de datos con datos de dispositivo, integrar aplicaciones y crear arquitecturas sin servidor controladas por eventos.

El servicio proporciona una red troncal de eventos que permite la programación reactiva y controlada por eventos. Utiliza el modelo de publicación-suscripción. Los publicadores emiten eventos, pero no tienen expectativas de cómo se administran los eventos. Los suscriptores deciden qué eventos quieren administrar.

Event Grid está totalmente integrado con otros servicios de Azure y puede integrarse con servicios de terceros. Simplifica el consumo de eventos y reduce los costos mediante la eliminación de la necesidad de un sondeo constante. Event Grid enruta de forma eficiente y fiable eventos desde recursos de Azure y que no son de Azure. Distribuye los eventos a los puntos de conexión del suscriptor registrado. El mensaje de evento tiene la información que necesita para reaccionar a los cambios en los servicios y aplicaciones. Event Grid no es una canalización de datos y no entrega el objeto real que se ha actualizado.

Tiene las características siguientes:

  • Dinámicamente escalable
  • Bajo costo
  • Sin servidor
  • Al menos una entrega de un evento

Event Grid se ofrece en dos ediciones: Azure Event Grid, un servicio PaaS totalmente administrado en Azure, y Event Grid en Kubernetes con Azure Arc, que permite usar Event Grid en un clúster de Kubernetes dondequiera que esté implementado, en el entorno local o en la nube. Para más información, consulte Introducción sobre Azure Event Grid e Introducción a Event Grid en Kubernetes con Azure Arc.

Azure Event Hubs

Azure Event Hubs es una plataforma de streaming de macrodatos y un servicio de ingesta de eventos. Puede recibir y procesar millones de eventos por segundo. Facilita la captura, la retención y la reproducción de los datos de streaming de eventos y telemetría. Los datos pueden proceder de distintos orígenes simultáneos. Event Hubs permite que los datos de telemetría y eventos estén disponibles para varios servicios de análisis e infraestructuras de procesamiento de streaming. Está disponible como flujos de datos o lotes de eventos agrupados. Este servicio proporciona una solución única que permite una recuperación de datos rápida para el procesamiento en tiempo real y una reproducción repetida de los datos sin procesar almacenados. Puede capturar los datos de streaming en un archivo para su procesamiento y análisis.

Tiene las características siguientes:

  • Baja latencia.
  • Puede recibir y procesar millones de eventos por segundo.
  • Al menos una entrega de un evento

Para obtener más información, consulte Información general sobre Event Hubs.

Azure Service Bus

Service Bus es un agente de mensajes empresarial totalmente administrado que incluye colas de mensajes y temas que se pueden publicar y a los que es posible suscribirse. El servicio está dirigido a aplicaciones empresariales tradicionales que requieren transacciones, ordenación, detección de duplicados y coherencia inmediata. Service Bus permite que las aplicaciones en la nube nativas proporcionen una administración de transición de estado de confianza para los procesos empresariales. Cuando administre mensajes de gran valor que no se pueden perder ni duplicar, use Azure Service Bus. Este servicio también facilita la comunicación de alta seguridad en soluciones híbridas en la nube y pueden conectar sistemas locales existentes a soluciones en la nube.

Service Bus es un sistema de mensajería asincrónica. Almacena los mensajes en un "agente" (por ejemplo, una cola) hasta que la parte consumidora esté preparada para recibirlos. Tiene las características siguientes:

  • Entrega de mensajes asincrónica confiable (mensajería empresarial como servicio) que requiere sondeo. Si usa Service Bus y necesita recibir mensajes sin tener que sondear la cola, puede lograrlo mediante un sondeo largo de operación de recepción mediante los protocolos basados en TCP compatibles con Service Bus.
  • Características de mensajería avanzada, como primero en entrar, primero en salir (FIFO), procesamiento por lotes o sesiones, transacciones, colas de mensajes fallidos, control temporal, enrutamiento y filtrado, así como detección de duplicados
  • Al menos una entrega de un mensaje
  • Entrega ordenada opcional de mensajes

Para más información, consulte la información general de Service Bus.

Comparación de servicios

En la tabla siguiente, se comparan los tres servicios: Event Grid, Event Hubs y Service Bus.

Service Propósito Tipo Cuándo se deben usar
Event Grid Programación reactiva Distribución de eventos (eventos discretos) Reacción ante los cambios de estado
Event Hubs Canalización de macrodatos Streaming de eventos (serie) Streaming de datos distribuidos y telemetría
Azure Service Bus Mensajería empresarial de gran valor Message Procesamiento de pedidos y transacciones financieras

Uso conjunto de servicios

En algunos casos, puede utilizar servicios en paralelo para cumplir con distintos roles. Por ejemplo, un sitio de comercio electrónico puede utilizar Service Bus para procesar el pedido, Event Hubs para capturar la telemetría del sitio y Event Grid para responder a eventos, como un artículo enviado.

En otros casos, puede vincular estas soluciones para formar una canalización de datos y eventos. Use Event Grid para responder a los eventos en los demás servicios. Para ver un ejemplo de uso de Event Grid con Event Hubs para migrar datos a Azure Synapse Analytics, consulte Transmisión de macrodatos a Azure Synapse Analytics. En la siguiente imagen se muestra el flujo de trabajo para el streaming de datos.

Diagrama que muestra cómo Event Hubs, Service Bus y Event Grid se pueden conectar entre sí.

Vea los artículos siguientes: