Elección de Azure Event Grid

Completado

Muchas aplicaciones usan un modelo de suscripción y publicación para notificar a los componentes distribuidos que se produjo un problema o que se modificó algún objeto. Suponga que tiene una aplicación para compartir música con una API Web que se ejecuta en Azure. Cuando un usuario carga una canción nueva, usted tiene que notificar a todas las aplicaciones móviles instaladas en los dispositivos de los usuarios de todo el mundo que están interesados en ese género.

En esta arquitectura, el publicador del archivo de sonido no necesita saber nada sobre ninguno de los suscriptores interesados en la música compartida. Además, queremos tener una relación de uno a varios, con varios suscriptores que tengan la opción de decidir si están interesados en esta nueva canción. Azure Event Grid es una solución perfecta para este tipo de arquitectura.

¿Qué es Azure Event Grid?

Azure Event Grid es un servicio de enrutamiento de eventos totalmente administrado que se ejecuta sobre Azure Service Fabric. Event Grid distribuye eventos desde diferentes orígenes, como cuentas de Azure Blob Storage o Azure Media Services, a diferentes controladores, como Azure Functions o Webhooks. Event Grid se creó para facilitar la compilación de aplicaciones basadas en eventos y sin servidor en Azure.

Event Grid admite la mayoría de los servicios de Azure como publicador o suscriptor, y puede usarse con servicios de terceros. Proporciona un sistema de mensajería de bajo costo y escalable de forma dinámica que permite a los editores notificar a los suscriptores un cambio de estado. En la ilustración siguiente se muestra cómo recibe Azure Event Grid los mensajes desde varios orígenes y los distribuye a los controladores de eventos en función de la suscripción.

Hay varios conceptos de Azure Event Grid que conectan un origen con un suscriptor:

  • Eventos: qué ha ocurrido.
  • Orígenes de eventos: dónde tuvo lugar el evento.
  • Temas: el punto de conexión donde los publicadores envían los eventos.
  • Suscripciones a eventos: el punto de conexión o mecanismo integrado para enrutar eventos, a veces a varios controladores. Los controladores también usan las suscripciones para filtrar los eventos de entrada de forma inteligente.
  • Controladores de eventos: la aplicación o el servicio que reaccionan al evento.

En la siguiente ilustración se muestra Azure Event Grid colocado entre varios orígenes de eventos y varios controladores de eventos. Los orígenes de eventos envían los eventos a Event Grid y este reenvía los que sean pertinentes a los suscriptores. Event Grid usa temas para decidir qué eventos enviar a qué controladores. Los orígenes de eventos etiquetan cada evento con uno o varios temas, y los controladores de eventos se suscriben a los temas que les interesan.

Diagram of various event sources sending messages as topics to the Event Grid which in turn sends messages to subscribing event handlers.

¿Qué es un evento?

Eventos son los mensajes de datos que pasan a través de Event Grid y que describen lo que ha tenido lugar. Cada evento es independiente entre sí, puede tener hasta 64 KB y contiene distinta información basada en un esquema definido por Event Grid:

[
  {
    "topic": string,
    "subject": string,
    "id": string,
    "eventType": string,
    "eventTime": string,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string,
    "metadataVersion": string
  }
]
Campo Descripción
topic Ruta de acceso completa a los recursos del origen del evento. Event Grid proporciona este valor.
subject Ruta al asunto del evento definida por el anunciante.
id Identificador único del evento.
eventType Uno de los tipos de eventos registrados para este origen de eventos. Puede crear filtros con este valor, por ejemplo, CustomerCreated, BlobDeleted, HttpRequestReceived, etc.
eventTime Hora de generación del evento en función de la hora UTC del proveedor.
data Información específica que es pertinente para el tipo de evento. Por ejemplo, un evento sobre un nuevo archivo que se crea en Azure Storage contiene detalles sobre el archivo, como el valor lastTimeModified. O bien, un evento de Event Hubs tiene la dirección URL del archivo de captura. Este campo es opcional.
dataVersion Versión del esquema del objeto de datos. El publicador define la versión del esquema.
metadataVersion La versión del esquema de los metadatos del evento. Event Grid define el esquema de las propiedades de nivel superior. Event Grid proporciona este valor.

Sugerencia

Event Grid envía un evento para indicar que algo ha sucedido o cambiado. Sin embargo, el objeto real que ha cambiado no forma parte de los datos del evento. En su lugar, a menudo se pasa una dirección URL o un identificador para hacer referencia al objeto modificado.

¿Qué es un origen de eventos?

Los orígenes de evento son responsables de enviar eventos a Event Grid. Cada origen de evento está relacionado con uno o más tipos de eventos. Por ejemplo, Azure Storage es el origen de evento de los eventos creados por blob. IoT Hub es el origen de evento de los eventos creados por dispositivo. La aplicación es el origen de evento de los eventos personalizados que defina. En un momento se verán más detalladamente los orígenes de eventos.

Azure Event Grid tiene el concepto de un publicador de eventos, que a menudo se confunde con el origen del evento. Un publicador de eventos es el usuario o la organización que decide enviar eventos a Event Grid. Por ejemplo, Microsoft publica eventos para varios servicios de Azure. Puede publicar eventos desde su propia aplicación. Las organizaciones que hospedan servicios fuera de Azure pueden publicar eventos a través de Event Grid. El origen del evento es el servicio específico que genera el evento para ese publicador. Aunque los dos términos son ligeramente diferentes, para los fines de esta unidad, se usarán "publicador" y "origen del evento" indistintamente para representar la entidad que envía el mensaje a Event Grid.

¿Qué es el tema de un evento?

Los temas de un evento clasifican los eventos en grupos. Los temas se representan mediante un punto de conexión público y son el lugar a donde el origen del evento envía los eventos. Cuando diseña la aplicación, puede decidir cuántos temas crear. Las soluciones más grandes crearán un tema personalizado para cada categoría de eventos relacionados, mientras que las soluciones más pequeñas podrían enviar todos los eventos a un solo tema. Por ejemplo, considere una aplicación que envía eventos relacionados con la modificación de las cuentas de usuario y el procesamiento de pedidos. Es poco probable que algún controlador de eventos quiera ambas categorías de eventos. Cree dos temas personalizados y deje que los controladores de eventos se suscriban a uno que les interese. Los suscriptores de eventos se pueden filtrar por los tipos de evento que desean de un tema específico.

Los temas se dividen en temas del sistema y temas personalizados.

Temas del sistema

Los temas del sistema son temas integrados que ofrecen los servicios de Azure. No ve los temas del sistema en la suscripción de Azure porque el publicador posee los temas, pero puede suscribirse a ellos. Para suscribirse, proporcione información sobre el recurso del que quiere recibir eventos. Siempre y cuando tenga acceso al recurso, puede suscribirse a sus eventos.

Temas personalizados

Los temas personalizados son temas de terceros y de aplicación. Cuando cree un tema personalizado, o se le asigne acceso al mismo, verá ese tema personalizado en su suscripción.

¿Qué es la suscripción a un evento?

Las suscripciones a eventos definen qué eventos de un tema desea recibir un controlador de eventos. Una suscripción también puede filtrar eventos por su tipo o asunto, para que pueda asegurarse de que un controlador de eventos solo reciba los eventos pertinentes.

¿Qué es un controlador de eventos?

Un controlador de eventos (conocido a veces como "suscriptor" de un evento) es cualquier componente (aplicación o recurso) que puede recibir eventos de Event Grid. Por ejemplo, Azure Functions puede ejecutar código en respuesta a la adición de la canción nueva a la cuenta de Blob Storage. Los suscriptores pueden decidir qué eventos quieren administrar y Event Grid notificará de forma eficaz a cada suscriptor interesado cuando haya un evento nuevo disponible: no se necesita ningún sondeo.

Tipos de orígenes de eventos

Los siguientes tipos de recursos de Azure pueden generar eventos:

Servicios de Azure que admiten temas del sistema

Estos son algunos servicios de Azure que admiten temas del sistema. Para obtener la lista completa de los servicios de Azure que admiten temas del sistema, consulte Temas del sistema en Azure Event Grid.

  • Suscripciones a Azure y grupos de recursos: las suscripciones y los grupos de recursos generan eventos relacionados con las operaciones de administración en Azure. Por ejemplo, cuando un usuario crea una máquina virtual, este origen genera un evento.
  • Container Registry: el servicio Azure Container Registry genera eventos cuando se agregan, quitan o cambian imágenes en el registro.
  • Event Hubs: Event Hubs puede usarse para procesar y almacenar eventos de diversos orígenes de datos, normalmente relacionados con registros o telemetría. Event Hubs puede generar eventos para Event Grid cuando se capturan los archivos.
  • Service Bus: Service Bus puede generar eventos para Event Grid cuando hay mensajes activos sin ningún cliente de escucha activo.
  • Cuentas de almacenamiento: las cuentas de almacenamiento pueden generar eventos cuando los usuarios agregan blobs, archivos, entradas de tabla o mensajes de cola. Puede usar tanto cuentas de blob como cuentas de uso general V2 como orígenes de eventos.
  • Media Services: Media Services hospeda archivos multimedia de vídeo y audio, y proporciona características de administración avanzadas para los archivos multimedia. Media Services puede generar eventos cuando un trabajo de codificación se inicia o se completa en un archivo de vídeo.
  • Azure IoT Hub: IoT Hub se comunica con los dispositivos IoT y recopila telemetría de ellos. Puede generar eventos siempre que lleguen estas comunicaciones.

Para más información, consulte Temas del sistema en Azure Event Grid.

Temas personalizados

Se pueden generar eventos personalizados mediante la API REST o con el SDK de Azure en Java, GO, .NET, Node, Python y Ruby. Por ejemplo, podría crear un evento personalizado en la característica Web Apps de Azure App Service. Esto puede ocurrir en el rol de trabajo, cuando toma un mensaje de una cola de almacenamiento.

Esta integración profunda con diversos orígenes de eventos dentro de Azure garantiza que Event Grid pueda distribuir eventos relacionados con casi cualquier recurso de Azure.

Controladores de eventos

Los siguientes tipos de objetos en Azure pueden recibir y controlar eventos desde Event Grid:

  • Azure Functions: código personalizado que se ejecuta en Azure, sin necesidad de configurar de forma explícita un contenedor o servidor virtual de hosts. Use una función de Azure como un controlador de eventos cuando quiera codificar una respuesta personalizada para el evento.
  • Azure Logic Apps: use Logic Apps para implementar procesos empresariales para procesar eventos de Event Grid. En este ejemplo no se crea un webhook explícitamente. El webhook se crea automáticamente cuando se configura la aplicación lógica para que controle los eventos de Event Grid.
  • Webhooks: un webhook es la API web que implementa una arquitectura de inserción. También puede procesar eventos mediante el uso de runbooks de Azure Automation. El procesamiento de eventos mediante runbooks automatizados se admite a través de webhooks. Cree un webhook para el runbook y luego use el controlador de webhook.
  • Event Hubs: use Event Hubs cuando la solución obtiene eventos de Event Grid más rápidamente de lo que puede procesar los eventos. Una vez que los eventos se encuentren en un centro de eventos, la aplicación puede procesar los eventos del centro de eventos en su propia programación.
  • Service Bus: puede usar un tema o una cola de servicio como controlador para eventos de Event Grid.
  • Colas de almacenamiento: use Queue Storage para recibir eventos que deben extraerse. Puede usar Queue Storage cuando tenga un proceso de ejecución prolongada que tarde demasiado tiempo en responder. Al enviar eventos a Queue Storage, la aplicación puede extraer y procesar eventos siguiendo su propia programación.
  • Microsoft Power Automate: Power Automate también hospeda flujos de trabajo, pero es más fácil de usar para el personal no técnico.

Para obtener más información, vea Controladores de eventos.

¿Debe usar Event Grid?

Use Event Grid cuando necesite estas características:

  • Simplicidad: en Event Grid es muy fácil conectar los orígenes a los suscriptores.
  • Filtro avanzado: las suscripciones tienen un control detallado sobre los eventos que reciben de un tema.
  • Distribución unificada: puede suscribir un número ilimitado de puntos de conexión a los mismos eventos y temas.
  • Confiabilidad: Event Grid reintenta la entrega de eventos hasta 24 horas para cada suscripción.
  • Pago por evento: pague solo por el número de eventos que transmita.

Event Grid es un sistema de distribución de eventos sencillo pero versátil. Se puede usar para entregar eventos discretos a los suscriptores, que los recibirán de manera rápida y confiable. Tenemos un modelo de mensajería más para examinar: ¿y si se quiere ofrecer una gran secuencia de eventos? En este escenario, Event Grid no es una buena solución, porque está diseñado para la entrega de un evento por vez. En su lugar, es necesario recurrir a otro servicio de Azure: Event Hubs.