Conceptos del espacio de nombres de Azure Event Grid

En este artículo se describen los conceptos y funcionalidades principales asociados a 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, un evento se denomina evento discreto porque representa un hecho independiente y independiente sobre un sistema que proporciona información 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 hace referencia a mensajes que llevan un punto de datos, como una sola lectura de dispositivos o un clic en una página de aplicación web, como "eventos". Normalmente, se analiza este tipo de evento en un período de tiempo para derivar información y realizar una acción. En la documentación de Event Grid, este tipo de evento se denomina punto de datos, datos de streaming o simplemente telemetría. La característica del intermediario MQTT de Event Grid utiliza este tipo de evento, entre otros tipos de mensajes.

Compatibilidad con CloudEvents

Los temas de espacio de nombres de Event Grid aceptan eventos que cumplen la especificación del estándar abierto de la Cloud Native Computing Foundation (CNCF) CloudEvents 1.0 mediante la vinculación 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 constan de un conjunto de atributos que proporcionan información contextual sobre el mensaje, como dónde se originó (el sistema de origen) y su tipo.

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 al usar temas de un 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:

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

Al usar un espacio de nombres de Azure Event Grid, puedes agrupar recursos relacionados y gestionarlos como una sola unidad en tu 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 necesidades generales de mensajería mediante el uso de temas del 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.

Aquí tienes algunos puntos más sobre los espacios de nombres:

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

Unidades de rendimiento

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.

Escalabilidad automática

Autoscale ajusta automáticamente el número de unidades de rendimiento asignadas a un espacio de nombres de la Cuadrícula de Eventos en función del tráfico en tiempo real y la utilización de recursos. Monitoriza continuamente los indicadores clave de rendimiento y escala la capacidad dentro de los límites mínimos y máximos que configures. Este comportamiento ayuda a mantener un rendimiento constante durante picos de carga de trabajo y reduce costes en periodos de baja actividad sin necesidad de intervención manual.

Para usar el escalado automático, habilítalo en el espacio de nombres y especifica:

  • Unidades de rendimiento mínimo: El mínimo de capacidad. El espacio de nombres no escala por debajo de este valor.
  • Unidades de máximo rendimiento: El techo de capacidad. El espacio de nombres no puede escalarse más allá de este valor.

Event Grid evalúa la utilización en función de la entrada de eventos, la salida de eventos, las tasas de publicación de entrada y salida de MQTT y el número de clientes registrados en MQTT. Cuando una categoría supera el umbral de escalado, se aprovisionan más TUs. Cuando todas las categorías quedan por debajo del umbral de reducción de escala, se liberan las TU. Los periodos de enfriamiento entre operaciones de escalado evitan oscilaciones rápidas.

El escalado automático es útil para cargas de trabajo de MQTT, en las que la distribución de mensajes y el crecimiento de las suscripciones pueden cambiar rápidamente a medida que los dispositivos se conectan y desconectan. También es útil para cargas de trabajo de intermediarios de eventos con patrones de tráfico en ráfagas.

Para detalles de configuración y límites de capacidad por TU, consulte la visión general y la guíade instrucciones de Autoscale.

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. Los temas dentro de un espacio de nombres a menudo se denominan temas de espacio de nombres.

Temas de espacio de nombres

Los temas del 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. Al diseñar la aplicación, decida 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, utiliza una suscripción de evento para establecer los criterios de selección de eventos que definan la colección de eventos disponible para un suscriptor a partir 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 puedes definir criterios de filtro sobre las propiedades de los datos del evento si usas un objeto JSON como valor para la propiedad de los datos . Para más información sobre las propiedades de los recursos, consulte la documentación de 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:

Las suscripciones a eventos bajo un tema de espacio de nombres presentan un modelo de recursos simplificado en comparación con el modelo utilizado para temas personalizados, de dominio, socios y de sistema (Event Grid Basic). 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, controlan la velocidad y el tiempo de consumo de eventos. 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 mediante extracción admite las siguientes operaciones para leer mensajes y controlar el estado del mensaje: recibir, confirmar, liberar, rechazar y renovar el bloqueo. Para obtener más información, consulte información general sobre la entrega de tipo pull.

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

Cuando se entregan eventos mediante extracción, Event Grid contiene una matriz de objetos que, a su vez, contiene los objetos event y brokerProperties. El valor de la propiedad event es el CloudEvent enviado en modo de contenido estructurado. El objeto brokerProperties contiene el token de bloqueo asociado a 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

Event Grid admite la entrega de eventos de tipo push y pull mediante HTTP. Con la entrega de tipo push, se define un destino en una suscripción de eventos, un webhook o un servicio de Azure, al 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 push y la entrega pull con los tipos 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 su aplicación no esté en funcionamiento todo el tiempo, no sea lo suficientemente estable o solo procese 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 puede exponer un punto de conexión ni usar la entrega push, pero puede conectarse a Event Grid para consumir eventos.

Entrega de inserción

  • Desea evitar sondeos constantes para detectar que se ha producido un cambio en el estado del sistema. Es preferible usar Event Grid para que le envíe eventos cuando se produzcan 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.