Compartir vía


Conceptos del espacio de nombres de Azure Event Grid

En este artículo se presentan los conceptos y funcionalidades principales asociados a los temas de espacio de nombres.

Eventos

Un evento es la cantidad mínima de información que describe completamente algo que se ha producido en un sistema. A menudo hacemos referencia a un evento como un evento discreto porque representa un hecho distintivo e independiente sobre un sistema que proporciona una conclusión que puede ser procesable. Todos los eventos tienen información común, como: source del evento, time en que el evento ha tenido lugar y un identificador único. Cada evento también tiene un type, que normalmente es un identificador único que describe el tipo de anuncio para el que se usa el 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. Un evento sobre un nuevo pedido en el microservicio Orders puede tener un atributo orderId y un atributo URL en la representación de estado del pedido. Algunos ejemplos más de tipos de eventos son: com.yourcompany.Orders.OrderCreated, org.yourorg.GeneralLedger.AccountChanged, io.solutionname.Auth.MaximumNumberOfUserLoginAttemptsReached.

Este es un evento de muestra:

{
    "specversion" : "1.0",
    "type" : "com.yourcompany.order.created",
    "source" : "/orders/account/123",
    "subject" : "O-28964",
    "id" : "A234-1234-1234",
    "time" : "2018-04-05T17:31:00Z",
    "comexampleextension1" : "value",
    "comexampleothervalue" : 5,
    "datacontenttype" : "application/json",
    "data" : {
       "orderId" : "O-28964",
       "URL" : "https://com.yourcompany/orders/O-28964"
    }
}

Otro tipo de evento

La comunidad de usuarios también se refiere como "eventos" a los mensajes que llevan un punto de datos, como una sola lectura de dispositivos o un clic en una página de aplicación web. Ese tipo de evento normalmente se analiza observando un período de tiempo para derivar información y realizar una acción. En la documentación de Event Grid, nos referimos a ese tipo de evento como un punto de datos, datos de streaming o simplemente telemetría. Entre otros tipos de mensajes, este tipo de eventos se usa con la característica de agente Transporte de telemetría de cola de mensajes (MQTT) de Event Grid.

Compatibilidad con CloudEvents

Los temas del espacio de nombres de Event Grid aceptan eventos que cumplen con la especificación de estándar abierto de Cloud Native Computing Foundation (CNCF) CloudEvents 1.0 mediante la especificación enlace de protocolo HTTP con formato JSON. CloudEvent es un tipo de mensaje que contiene tanto lo que se comunica, a lo que se denomina datos de eventos, como sus metadatos. Los datos de eventos en arquitecturas controladas por eventos normalmente llevan la información que anuncia un cambio de estado del sistema. Los metadatos de CloudEvents se componen de un conjunto de atributos que proporcionan información contextual sobre el mensaje como dónde se originó (el sistema de origen), su tipo, etc.

Para obtener más información, consulte Compatibilidad con el esquema de CloudEvents.

Publicadores

Un publicador es la aplicación que envía eventos a Event Grid. Puede ser la misma aplicación donde se originaron los eventos, el origen del evento. Puede publicar eventos desde su propia aplicación cuando use temas de espacio de nombres.

Orígenes de eventos

Un origen de evento es donde se produce el evento. Cada origen de eventos admite uno o varios tipos de eventos. Por ejemplo, la aplicación es el origen de evento de los eventos personalizados que define el sistema. Al usar temas de espacio de nombres, los orígenes de eventos admitidos son sus propias aplicaciones.

Espacios de nombres

Un espacio de nombres de Event Grid es un contenedor de administración para los siguientes recursos:

Resource Protocolo admitido
Temas de espacio de nombres HTTP
Espacios de temas MQTT
Clientes MQTT
Grupos de clientes MQTT
Certificados de CA MQTT
Enlaces de permisos MQTT

Con un espacio de nombres de Azure Event Grid, puede agrupar recursos relacionados y administrarlos como una sola unidad en la suscripción de Azure. Proporciona un nombre de dominio completo (FQDN) único.

Un espacio de nombres expone dos puntos de conexión:

  • Un punto de conexión HTTP para admitir requisitos generales de mensajería mediante temas de espacio de nombres.
  • Un punto de conexión MQTT para la mensajería o soluciones de IoT que usan MQTT.

Un espacio de nombres también proporciona puntos de conexión de red integrados en DNS. También proporciona una variedad de características de control de acceso y administración de integración de red, como el filtrado de entrada de IP pública y vínculos privados. También es el contenedor de identidades administradas que se usan para los recursos contenidos en el espacio de nombres.

Estos son algunos aspectos más de los espacios de nombres:

  • El espacio de nombres es un recurso de seguimiento con propiedades tags y location y, una vez creado, se puede encontrar en resources.azure.com.
  • El nombre del espacio de nombres puede tener entre 3 y 50 caracteres. Puede incluir caracteres alfanuméricos y guiones (-) y no debe tener espacios.
  • El nombre debe ser único en cada región.

Unidades de procesamiento

Las unidades de procesamiento (UP) definen la capacidad de velocidad de eventos de entrada y salida en espacios de nombres. Para más información, consulte Cuotas y límites de Azure Event Grid.

Temas

Un tema contiene eventos que se han publicado en Event Grid. Normalmente, se usa un recurso de tema para una colección de eventos relacionados. A menudo se hace referencia a temas dentro de un espacio de nombres como temas de espacio de nombres.

Temas de espacio de nombres

Los temas de espacio de nombres son temas que se crean dentro de un espacio de nombres de Event Grid. La aplicación publica eventos en un punto de conexión de espacio de nombres HTTP que especifica un tema de espacio de nombres donde los eventos publicados están contenidos lógicamente. Cuando diseñe la aplicación, tiene que decidir cuántos temas se van a crear. Para soluciones relativamente grandes, cree un tema de espacio de nombres para cada categoría de eventos relacionados. Por ejemplo, considere una aplicación que administra cuentas de usuario y otra aplicación sobre pedidos de clientes. Es poco probable que todos los suscriptores de eventos quieran eventos de ambas aplicaciones. Para separar los problemas, cree dos temas de espacio de nombres: uno para cada aplicación. Permita que los consumidores de eventos se suscriban al tema según sus requisitos. Para soluciones pequeñas, puede que prefiera enviar todos los eventos a un solo tema.

Los temas de espacio de nombres admiten la entrega de extracción y la entrega de inserción. Consulte cuándo usar la entrega de extracción o inserción para ayudarle a decidir si la entrega de extracción es el enfoque adecuado según sus requisitos.

Suscripciones a eventos

Una suscripción a eventos es un recurso de configuración asociado a un único tema. Entre otras cosas, la suscripción a eventos se usa para establecer los criterios de selección de eventos que definen la colección de eventos disponible para un suscriptor del conjunto total de eventos disponibles en un tema. Se pueden filtrar eventos en función de los requisitos del suscriptor. Por ejemplo, se pueden filtrar eventos por su tipo de evento. También se pueden definir criterios de filtro en las propiedades de datos de eventos, siempre que se use un objeto JSON como valor de la propiedad data. Para obtener más información sobre las propiedades de los recursos, busque operaciones del plano de control en la API REST de Event Grid.

Diagrama que muestra un tema y las suscripciones a eventos asociadas.

Para obtener un ejemplo de creación de suscripciones para temas de espacio de nombres, consulte Publicación y consumo de mensajes mediante temas de espacio de nombres mediante la CLI.

Nota:

La característica de suscripciones a eventos de un tema de espacio de nombres presenta un modelo de recursos simplificado en comparación con el que se usa para los temas personalizados, de dominio, de asociado y del sistema (Event Grid Básico). Para más información, consulte Creación, visualización y administración de suscripciones a eventos.

Entrega de extracción

Con la entrega de extracción, la aplicación se conecta a Event Grid para leer mensajes mediante la semántica similar a la cola. A medida que las aplicaciones se conectan a Event Grid para consumir eventos, están en control de la tasa de consumo de eventos y su tiempo. Las aplicaciones de consumidor también pueden usar puntos de conexión privados al conectarse a Event Grid para leer eventos mediante el espacio IP privado.

La entrega de extracción admite las siguientes operaciones para leer mensajes y controlar el estado del mensaje: recepción, confirmación, liberación, rechazo y bloqueo de renovación. Para obtener más información, consulte Introducción a la entrega de extracción.

Forma de datos al recibir eventos mediante la entrega de extracción

Al entregar eventos mediante la entrega de extracción, Event Grid incluye una matriz de objetos que, a su vez, incluyen los objetos event y brokerProperties. El valor de la propiedad de evento es el CloudEvent entregado en modo de contenido estructurado. El objeto brokerProperties contiene el token de bloqueo asociado al CloudEvent entregado. El siguiente objeto json es una respuesta de ejemplo de una operación de recepción que devuelve dos eventos:

{
    "value": [
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDXYS23Z+5Hq754VqQjxywE",
                "deliveryCount": 2
            },
            "event": {
                "specversion": "1.0",
                "id": "A234-1234-1235",
                "source": "/mycontext",
                "time": "2018-04-05T17:31:00Z",
                "type": "com.example.someeventtype",
                "data": "some data"
            }
        },
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDLeaL+nRJLNq3/5NXd/T0b",
                "deliveryCount": 1
            },
            "event": {
                "specversion": "1.0",
                "id": "B688-1234-1235",
                "source": "/mycontext",
                "type": "com.example.someeventtype",
                "time": "2018-04-05T17:31:00Z",
                "data": {
                    "somekey" : "value",
                    "someOtherKey" : 9
                }
            }
        }
    ]
}

Entrega de inserción

Con la entrega de inserción, Event Grid envía eventos a un destino configurado en una suscripción de eventos de (modo de entrega en)inserción. Proporciona una lógica de reintento sólida en caso de que el destino no pueda recibir eventos.

Importante

La entrega de inserción de espacios de nombres de Event Grid admite actualmente Azure Event Hubs como destino. En el futuro, los espacios de nombres de Event Grid admitirán más destinos, incluidos todos los que admite la versión básica de Event Grid.

Entrega de eventos de Event Hubs

Event Grid usa el SDK de Event Hubs para enviar eventos a Event Hubs mediante AMQP. Los eventos se envían como una matriz de bytes con cada elemento de la matriz que contiene un CloudEvent.

Entrega de inserción y extracción

Con HTTP, Event Grid admite la entrega de eventos de inserción y extracción. Con la entrega de inserción, se define un destino en una suscripción de eventos, un webhook o un servicio de Azure a los que Event Grid envía eventos. Con la entrega de extracción, las aplicaciones del suscriptor se conectan a Event Grid para consumir eventos. La entrega de extracción es compatible con los temas de un espacio de nombres de Event Grid.

Importante

Event Hubs es compatible como destino para las suscripciones a temas de espacio de nombres. En las próximas versiones, los espacios de nombres de Event Grid admitirán todos los destinos disponibles actualmente en Event Grid Basic junto con destinos adicionales.

Diagrama de alto nivel que muestra la entrega de inserción y la entrega de extracción con el tipo de recursos implicados.

Casos en los que se debe usar la entrega de inserción frente a la entrega de extracción

A continuación, se muestran directrices generales que le ayudarán a decidir cuándo usar la entrega de extracción o inserción.

Entrega de extracción

  • Necesita un control absoluto sobre cuándo recibir eventos. Por ejemplo, es posible que la aplicación no esté en funcionamiento todo el tiempo, no sea lo suficientemente estable, o que no procese los datos en determinados momentos.
  • Necesita un control absoluto sobre el consumo de eventos. Por ejemplo, un servicio o una capa de nivel inferior de la aplicación de consumidor tiene un problema que impide que procese eventos. En ese caso, la API de entrega de extracción permite que la aplicación de consumidor libere un evento de lectura ya leído al agente para que se pueda entregar más adelante.
  • Quiere usar vínculos privados al recibir eventos, lo que solo es posible con la entrega de extracción, no con la entrega de inserción.
  • No tiene la capacidad de exponer un punto de conexión y usar la entrega de inserción, pero puede conectarse a Event Grid para consumir eventos.

Entrega de inserción

  • Quiere evitar sondeos constantes para determinar que se ha producido un cambio de estado del sistema. Prefiere usar Event Grid para enviar eventos en el momento en que se producen cambios de estado.
  • Tiene una aplicación que no puede realizar llamadas salientes. Por ejemplo, puede que a su organización le preocupe la filtración de datos. Sin embargo, la aplicación puede recibir eventos a través de un punto de conexión público.