La arquitectura impulsada por eventos (EDA) ha surgido como un patrón fundamental para construir sistemas modernos, sensibles y acoplados. Microsoft Azure ofrece una sólida gama de servicios para implementar EDA, con Azure Event Hub que sirve como una capa de ingestión de eventos de alta velocidad y funciones Azure que proporcionan un compute sin servidor para reaccionar a esos eventos en tiempo real.

Comprender la arquitectura desarrollada por el evento

En su núcleo, se construye una arquitectura impulsada por eventos alrededor de la producción, detección, consumo y reacción a eventos. Un evento es un cambio significativo en el estado, por ejemplo, una lectura de sensores, una transacción de pago o una actualización de perfil de usuario. En EDA, los componentes se comunican a través de eventos en lugar de llamadas sincronizadas directas, que reduce el acoplamiento y permite el escalado independiente de productores y consumidores.

Conceptos clave

  • Productor de emergencia: Cualquier componente que emita eventos al bus de eventos. Ejemplos incluyen dispositivos de IoT, microservicios o sistemas heredados que emiten eventos de captura de datos de cambio (CDC).
  • Evento Bus / Stream: Un oleoducto duradero y escalable que ingiere y persiste eventos. Azure Event Hub se ajusta perfectamente a este papel, ofreciendo secuencias de eventos divididas y ordenadas.
  • ]Consumidor de la cosecha: Un componente que se suscribe a los eventos y los procesa. Funciones de la azueza pueden actuar como consumidor, desencadenado automáticamente cuando llegan nuevos eventos.
  • Evento Sourcing y CQRS: Muchas implementaciones combinan EDA con la fuente de eventos (persistiendo el registro de eventos como fuente de verdad) y la segregación de responsabilidad de las consultas de comandos (CQRS) para separar modelos de lectura y escritura.

El desacoplamiento introducido por EDA permite a los equipos desarrollar, desplegar y escalar servicios de forma independiente. También facilita análisis en tiempo real, pistas de auditoría y la capacidad de repetir eventos históricos para depurar o reprocesar.

Águila: La capa de ingestión

Azure Event Hub es una plataforma de streaming de datos en tiempo real totalmente gestionada que puede ingerir millones de eventos por segundo. Su arquitectura está diseñada para alta rentabilidad, baja latencia y durabilidad. Event Hub captura eventos en particiones, cada uno siendo una secuencia ordenada de eventos. Los consumidores pueden leer desde un punto de control para reanudar el procesamiento.

Características clave del Hub de eventos

  • Partición: Los eventos se distribuyen a través de particiones para el procesamiento paralelo. Cada partición es independiente y puede ser consumida por una instancia separada de la Función Azure.
  • Captura: Persisten automáticamente las secuencias de eventos a Azure Blob Storage o Azure Data Lake Storage para el análisis de archivos y lotes.
  • Recuperación de disaster-Geo: El acoplamiento opcional de espacios de nombres en todas las regiones garantiza una alta disponibilidad.
  • AMQP, HTTPS y Kafka Protocol: Apoya varios protocolos, permitiendo a los productores que utilizan clientes de Apache Kafka enviar eventos directamente.
  • Teroughput Units (TUs) o Processing Units (PUs):] Determinar la capacidad de entrada y egreso. Para el nivel sin servidor (Basic y Standard), se utilizan TUs; para los UP Premium y Dedicados, proporcionan un rendimiento más predecible.

Pasos de configuración

  1. Crear un espacio de nombres de los centros de eventos: En el portal Azure, crea un nuevo espacio de nombres de los centros de eventos. Elige el nivel de fijación de precios (Standard se recomienda para la mayoría de las cargas de trabajo de producción).
  2. ]Crear un Hub de Evento: Dentro del espacio de nombres, crea un hub de evento. Especifica el número de particiones – una regla común de pulgar es 4-32 particiones para la mayoría de los casos de uso. Las particiones no pueden cambiarse más tarde sin recrear el hub, así que elige basado en la velocidad esperada.
  3. Configurar Políticas de Acceso Compartido: Crear una política para productores (por ejemplo, "Enviar solamente") y una para consumidores (por ejemplo, "Escuchar solo") para seguir el principio de mínimo privilegio. Las cadenas de conexión son utilizadas por aplicaciones y Funciones Azure.
  4. Capacidad de Activación (Opcional): Si necesita almacenar todos los eventos crudos para la retención a largo plazo, active Capture y señale un contenedor de almacenamiento de bloques de azufre o almacenamiento de lago de datos.

Para un ejemplo práctico, consulte la guía de arranque rápido oficial].

Funciones de Azure: El desencadenante de la computación

Azure Functions proporciona un entorno informático sin servidor donde escribe código que responde a eventos. El gatillo Event Hub permite que una función se invoque automáticamente cuando se publican nuevos eventos a un hub de evento. Las funciones pueden escalarse automáticamente, con cada instancia de función procesando eventos de una o más particiones.

Comportamiento del corredor del evento

  • Punto de comprobación: El tiempo de funcionamiento de la función gestiona el control para realizar un seguimiento del último evento procesado con éxito por partición. Esto asegura que si la función se reinicia, se reanude desde la posición correcta.
  • Procesamiento de lotes: Por defecto, el gatillo ofrece un lote de eventos. Puede controlar el tamaño de lote y el recuento prefetch para el ajuste de rendimiento.
  • Paralelismo: El número de instancias de función equivale al número de particiones con eventos no procesados. Para aumentar el paralelismo, aumentar el conteo de particiones (dentro de límites). Para mayor rendimiento, utilice el plan de alojamiento Premium o Dedicado en lugar del plan de Consumo, especialmente si el tiempo de procesamiento de la función es más de unos segundos.

Crear una función de azurra con el desencadenante del Hub de eventos

  1. Crear una aplicación de función en el portal Azure o a través de Azure CLI. Elige la pila de tiempo de ejecución (por ejemplo, .NET, Node.js, Python).
  2. Agregue un dispositivo de activación del Hub de Evento. La firma de funciones incluirá un parámetro para los datos del evento (por ejemplo, o ).
  3. Establecer el ajuste de cadena de conexión del Event Hub (de la configuración de la aplicación) y el nombre del hub de evento.
  4. Escribir lógica de procesamiento dentro de la función. Tareas comunes: deserializar JSON, actualizar una base de datos, llamar a una API, o enviar el evento a otro servicio como SignalR para tableros de datos en tiempo real.
  5. Configurar las uniones de salida según sea necesario, por ejemplo, una unión de salida de Cosmos DB para almacenar datos procesados.

El Funciones Azules Event Hub activa la documentación proporciona muestras de código detalladas para cada idioma.

Diseño de la Arquitectura Final a Final

Ahora combinamos las piezas. El flujo típico es: Producers] → Evento Hub Funciones de azulDownstream Services. Vamos a recibir un sistema de gestión de miles de vehículos GPS.

Paso 1: Defina el esquema del evento

La coherencia es crucial. Use un registro de esquemas (como el Registro de Azure Schema en Event Hubs) o simplemente ejecute un esquema JSON. Un ejemplo de pago de eventos:

{
 "vehicleId": "VH-12345",
 "latitude": 37.7749,
 "longitude": -122.4194,
 "speed": 65.2,
 "timestamp": "2025-03-21T10:30:00Z"
}

Utilizando Avro o Protobuf puede reducir el tamaño de la carga útil y proporcionar capacidades de evolución del esquema, pero JSON sigue siendo el más simple de depurar.

Paso 2: Configurar los productores

Los productores pueden ser dispositivos IoT usando Azure IoT Hub o aplicaciones personalizadas usando el Event Hubs SDK. Para escenarios de alto volumen, eventos de lotes juntos (por ejemplo, enviar 100 eventos por solicitud) para maximizar el rendimiento. Asegúrese de que el productor utiliza una política de reentrada con retroceso exponencial.

Paso 3: Establecer la clave de la partición

Event Hub particiones eventos basados en una clave de partición. Si necesita procesamiento ordenado por vehículo, utilice como la clave de partición. Esto asegura todos los eventos de la misma tierra del vehículo en la misma partición y son procesados secuencialmente por un solo consumidor.

Paso 4: Construir la función Azure

La función recibe lotes de eventos, procesos cada uno en orden, y luego puede escribir la última ubicación a un caché (por ejemplo, Azure Redis Cache) para consultas en tiempo real. También puede geofence eventos – cuando un vehículo entra en una determinada zona, la función puede enviar una alerta a través de Azure Logic Apps o Twilio.

Paso 5: Manejar fallas y registros

Si el procesamiento falla para un lote, el gatillo Event Hub volverá a entrar según la política de reingreso de la función (por defecto es retroceso exponencial hasta 5 veces). Para eventos de veneno (por ejemplo, JSON malformado), inicie sesión en una cola de eliminación (Azure Storage Queue o un Event Hub dedicado). La función debe capturar excepciones específicas y mover eventos problemáticos fuera del conducto de procesamiento normal.

Paso 6: Monitor y Escala

  • Utilice Azure Monitor para rastrear las métricas del Event Hub: mensajes entrantes, solicitudes aceleradas, tamaño de atraso (diferencia entre el último offset enqueued y el último punto de control).
  • Para escalar Funciones Azure, el plan Consumo escalará automáticamente, pero puede tener retrasos de inicio frío. El plan Premium ofrece la integración de la red virtual y pre-energamiento de instancia.
  • Establecer alertas para el atraso alto, lo que indica que la función no puede mantenerse al día – considerar aumentar las particiones o actualizar el plan de alojamiento.

Patrones avanzados y mejores prácticas

Repetición del evento y capturar

Una ventaja significativa del Event Hub es que los eventos se mantienen durante un período configurable (hasta 90 días en Standard). Esto permite a los consumidores repetir los eventos desde un punto específico en el tiempo – útil para rellenar una nueva base de datos o reprocesamiento después de arreglar un error. Para habilitar la repetición, puede crear un nuevo grupo de consumidores y comenzar la función de un offset personalizado.

Múltiples grupos de consumidores

Event Hub admite hasta 20 grupos de consumidores por cada centro de eventos. Utilice grupos de consumidores separados para diferentes oleoductos de procesamiento: uno para análisis en tiempo real, otro para archivar y un tercero para los modelos de aprendizaje automático de entrenamiento. Cada grupo de consumidores obtiene su propia tienda de control, permitiendo un progreso independiente.

Procesamiento de la demanda

Como los eventos pueden ser entregados al menos una vez, la función debe ser idempotente. Por ejemplo, al insertar en una base de datos, utilice operaciones de confirmación en lugar de insertar. O verifique si un ID de evento ya existe en una tienda de deduplicación (por ejemplo, Redis con TTL). Esto evita que el procesamiento duplicado cause inconsistencia de datos.

Integración con las funciones de azuzar

En lugar de escribir código manual para enviar datos en otro lugar, utilice las uniones de salida. En el cuadro siguiente se resumen las uniones comunes para escenarios impulsados por eventos:

  • Cosmos DB:] Documentos de mayor resistencia automática de la salida de la función.
  • SeñalR Service: Broadcast processed events to connected clients (e.g., real-time dashboard).
  • Almacenamiento de bloques: Escribe periódicamente las salidas de lotes (evitar escribir por evento para reducir los costos).
  • Evento Hubs (Output): Enviar eventos a otro Event Hub para encadenar.

Consideraciones de seguridad

  • Use Identificación Gestionada para la Función Azure para conectarse al Hub de Evento en lugar de almacenar cadenas de conexión en texto claro.
  • Permite la integración de firewall y red virtual para el espacio de nombres de Event Hub restringir el acceso a la red.
  • Usar Azure Key Vault para almacenar secretos como cadenas de conexión de Event Hub y claves de acceso.
  • Cifra eventos en reposo y tránsito (Event Hub utiliza TLS por defecto).

Casos de uso y escenarios del mundo real

Procesamiento de Telemetría IoT

Como se describe anteriormente, el escenario de gestión de flotas es un ajuste clásico. Azure IoT Hub puede ingerir mensajes de dispositivo y enrutarlos al Event Hub para el procesamiento de aguas abajo. Las funciones de azufre pueden calcular la velocidad promedio por ruta, detectar anomalías o desencadenar alertas de mantenimiento.

Clickstream Analytics

Los sitios web de comercio electrónico generan datos masivos de flujo de clics. Event Hub puede agregar vistas de página, acciones de carrito de compras y búsquedas. Las funciones pueden enriquecer los eventos con datos de perfil de usuario, actualizar contadores de sesión, y empujar a Azure Data Explorer para paneles casi en tiempo real. Azure reference architecture for clickstream proporciona un plan completo.

Cambio de la captura de datos (CDC)

Cuando usted necesita sincronizar datos de una base de datos relacional a un índice de búsqueda o caché, CDC usando Event Hub es un enfoque común. Por ejemplo, usando Debezium (Kafka Connect) para transmitir cambios de base en Event Hub, entonces una función Azure transforma y escribe a Elasticsearch. Este patrón mantiene el índice de búsqueda siempre actualizado sin lógica de votación personalizada.

Proceso de transacción financiera

En finanzas, la arquitectura impulsada por eventos permite la detección de fraude, la puntuación de riesgos en tiempo real y el acuerdo comercial. La baja latencia y alta rentabilidad del Event Hub lo hacen adecuado para manejar miles de comercios por segundo. Las funciones de Azure pueden ejecutar modelos de detección de fraude, transacciones sospechosas de bandera, y enviar alertas mientras mantiene las pistas de auditoría.

Optimización y supervisión de costos

Mientras que el servidor reduce los costos de ocio, usted debe seguir el uso.

  • Unidades de rendimiento del Hub de emergencia: Cada UT permite 1 MB/s de entrada y 2 MB/s de egreso (o 1000 eventos por segundo). Para cargas de trabajo impredecibles, permite el autoinflado.
  • Cantidad de datos ingeridos: Propuesto por millón de eventos (Tijera estándar). Usar batidor para reducir el recuento de eventos.
  • Tiempo de ejecución de funciones de azul: El plan de consumo cobra por segundo de ejecución. Asegúrese de que su función es eficiente – evitar bloquear llamadas y utilizar el asinc I/O.
  • Fuerza utilizada para los puntos de captura y verificación: Los costos de almacenamiento de bloques son mínimos pero consideran políticas de retención.

Establecer alertas presupuestarias en la gestión de costos de Azure. Use Insights para rastrear los tiempos de ejecución de funciones y llamadas de dependencia. La página Azure Event-driven architecture pattern incluye guía sobre monitoreo.

Comparación con las tecnologías alternativas

  • Autobús de servicio de azul: Mejor para cargas de trabajo impulsadas por comandos que requieren un orden estricto, procesamiento transaccional y eliminación de pérdidas. Event Hub está optimizado para la transmisión de eventos de alta velocidad, no para la mensajería de punto a punto.
  • Apache Kafka en HDInsight o Confluente: Más control sobre configuraciones pero requiere una sobrecarga operacional. Event Hub proporciona compatibilidad con protocolo Kafka con un servicio gestionado.
  • Evento Grid:] Adecuado para la programación reactiva y la routa de eventos entre los servicios de Azure. No está diseñado para la transmisión de alta volumen – Event Hub maneja millones de eventos por segundo.
  • Azure Stream Analytics: Un motor de procesamiento de serie SQL gestionado para análisis de series temporales. Puede funcionar en la parte superior del Event Hub, pero para la lógica de negocio compleja, Azure Functions ofrece más flexibilidad.

Lista de verificación operacional

  1. Definir tiempo de retención para eventos (por defecto 1 día, max 7 días en Standard).
  2. Establecer información de la aplicación para la función Azure para registrar el recuento de eventos procesados y errores.
  3. Activar alertas de Azure Monitor para el acelerador del Centro de Evento (ver métrica ).
  4. Use la política de Azure para hacer cumplir la versión TLS y el tipo de autenticación.
  5. Prueba de los escenarios de falla: detenga la función, permita que los eventos se acumulan, luego reinicie para verificar la recuperación de los puntos de control.
  6. Realizar pruebas de carga con un productor simulado para asegurar que la arquitectura maneja el volumen máximo.

Conclusión

Construir una arquitectura impulsada por eventos con Azure Event Hub y Azure Functions equipa a organizaciones con un sistema escalable, rentable y receptivo para el procesamiento de datos en tiempo real. La combinación de secuencias de eventos duraderos y compute sin servidor permite a los desarrolladores centrarse en la lógica empresarial mientras Azure maneja la división, escalar y la gestión de puntos de control.