La transmisión de eventos es la práctica de capturar continuamente datos de aplicaciones, bases de datos y dispositivos IoT y transportarlos a varios destinos para su procesamiento y almacenamiento. Los registros de los datos, conocidos como eventos, pueden procesarse inmediatamente para respaldar la automatización y las decisiones en tiempo real o conservarse para su posterior análisis.
Una función clave en el procesamiento de flujos de eventos (ESP) es que permite a las infraestructuras de TI manejar grandes flujos continuos de eventos mediante el procesamiento de datos cuando ocurre el evento o cambio. La transmisión de eventos es distinta del procesamiento de flujos. La transmisión de eventos proporciona la infraestructura que traslada y almacena eventos. El procesamiento de flujos puede aplicar filtrado, agregación o enriquecimiento a esos eventos.
La transmisión de eventos a menudo complementa el procesamiento por lotes, que actúa sobre grandes conjuntos de datos estáticos (o “datos en reposo”). Sin embargo, en lugar de procesar datos limitados en lotes, la transmisión de eventos puede manejar datos ilimitados a medida que llegan. Este enfoque permite que el software dentro de la arquitectura interprete y responda a flujos de datos (“datos en movimiento”) en tiempo real.
Los servicios de transmisión de eventos de alto rendimiento pueden impulsar una variedad de tareas, desde funciones simples como enviar notificaciones cuando cambian los precios de las acciones o los productos hasta cargas de trabajo más complejas. También pueden admitir modelos de inteligencia artificial (IA) y machine learning en tiempo real que detectan actividades sospechosas de los usuarios.
Incluso en el caso del procesamiento por lotes, la transmisión de eventos puede agregar profundidad a los analytics por conectar los eventos con sus respectivos horarios. También ayuda a identificar tendencias históricas, proporcionando información valiosa a lo largo del tiempo.
Manténgase al día sobre las tendencias más importantes e intrigantes de la industria sobre IA, automatización, datos y más con el boletín Think. Consulte la Declaración de privacidad de IBM.
La transmisión de eventos gira en torno al flujo continuo y potencialmente ilimitado de registros de datos, llamados “eventos”, estructuras de datos fundamentales que registran cualquier ocurrencia en el sistema o entorno. Un evento es un registro inmutable de que algo sucedió (como la realización de un pedido o la autorización de un pago). Un “flujo” (también llamado flujo de datos o transmisión de datos) es la entrega continua de esos eventos.
Cada evento generalmente comprende una clave que identifica el evento o la entidad a la que pertenece, junto con un valor que contiene los datos reales del evento. También incluye una marca de tiempo que indica cuándo ocurrió o se registró el evento y, a veces, metadatos sobre la fuente de datos, la versión del esquema u otros atributos.
Con la ayuda de motores especializados de procesamiento de transmisiones, los eventos pueden someterse a algunos procesos diferentes dentro de una transmisión. Las “agregaciones” realizan cálculos de datos, como medias, sumas y desviación estándar. La “ingesta” agrega datos de transmisión a las bases de datos. El procesamiento de analytics usa patrones en los datos de transmisión para predecir eventos futuros, y el procesamiento de enriquecimiento combina puntos de datos con otras fuentes para brindar contexto y crear significado.
A medida que las organizaciones generan grandes volúmenes de datos de eventos, pueden utilizar análisis en tiempo real para identificar patrones, anomalías y tendencias a medida que surgen. La IA se basa en estos insights en tiempo real detectando relaciones complejas en los flujos de eventos, generando predicciones y recomendando acciones.
Esta capacidad se está convirtiendo en un requisito previo para los sistemas de IA: según IDC, el 80 % de los casos de uso de IA agéntica requieren datos en tiempo real, contextuales y ampliamente accesibles. Ya sea que admitan analytics, IA o flujos de trabajo automatizados, estos sistemas se basan en un flujo continuo de eventos que representan la actividad en toda una organización.
Los eventos suelen estar vinculados a las operaciones empresariales o a los procesos de navegación del usuario y, por lo general, desencadenan otra acción, proceso o serie de eventos. Tomemos como ejemplo la banca en línea. Cuando un usuario hace clic en “transferir” para enviar dinero de una cuenta bancaria a otra, los fondos se retiran de la cuenta del remitente y se agregan a la cuenta bancaria del destinatario, se envían notificaciones por correo electrónico o SMS a una de las partes (o a ambas) y, si es necesario, se despliegan protocolos de seguridad y prevención de fraude.
Los eventos son el componente central de la transmisión de eventos. Sin embargo, hay otro conjunto de componentes que permite a los servicios de streaming procesar los eventos con la misma rapidez y eficacia con la que lo hacen. Otros componentes vitales incluyen:
Los intermediarios reciben los eventos de los productores, los organizan, los almacenan y los ponen a disposición de los consumidores. Al actuar como intermediarios, los intermediarios permiten que los productores y consumidores se comuniquen sin conexiones directas, para que cada uno opere y escale de forma independiente.
En los sistemas de transmisión de eventos distribuidos, los intermediarios garantizan baja latencia y alta disponibilidad replicando eventos en múltiples nodos. Los intermediarios también pueden formar clústeres, conjuntos de intermediarios que trabajan juntos para facilitar el equilibrio de carga y la escalabilidad.
Los temas son categorizaciones o nombres de feeds en los que se publican eventos, lo que proporciona una forma de organizar y filtrar eventos dentro de la plataforma. Actúan como el "tema" de los eventos, lo que permite a los consumidores suscribirse a los temas y recibir solo eventos relevantes.
Los temas se pueden dividir en partes, lo que permite que varios consumidores lean un tema simultáneamente sin alterar el orden de cada parte.
Un desplazamiento es un identificador único para cada evento dentro de una parte, que marca la posición de un evento dentro de la secuencia. Los consumidores emplean compensaciones para organizar los eventos que procesaron. Si, por ejemplo, un consumidor se desconecta de un evento y luego se vuelve a conectar, puede reanudar el procesamiento desde la última compensación conocida.
Dada la proliferación de datos y el aumento resultante del tráfico de datos, la transmisión de eventos es un componente esencial de las arquitecturas de datos modernas. Es valioso en entornos que requieren capacidades de toma de decisiones ultrarrápidas o en organizaciones que buscan automatizar las responsabilidades de toma de decisiones.
Así es como los servicios de streaming de eventos gestionan los datos de eventos:
La transmisión de eventos suele implementarse como una arquitectura distribuida diseñada para capturar, almacenar, procesar y distribuir flujos continuos de datos de eventos en múltiples sistemas. En lugar de depender de conexiones directas punto a punto, las arquitecturas de transmisión de eventos utilizan infraestructura compartida que desacopla a los productores de datos de los consumidores, permitiendo que las aplicaciones escalen de forma independiente e intercambien información en tiempo real. Varios componentes arquitectónicos fundamentales hacen posible este marco:
Un componente clave de la mayoría de las arquitecturas de transmisión de eventos es un intermediario de eventos, que actúa como una infraestructura duradera y escalable para los datos de eventos. Los eventos se escriben en temas dentro de un registro distribuido, donde se almacenan en el orden en que se reciben y permanecen disponibles para su consumo posterior.
Esta arquitectura permite que múltiples aplicaciones accedan de forma independiente al mismo flujo de eventos sin necesidad de integración directa con los sistemas que produjeron los datos. Las tecnologías como Apache Kafka, Amazon Kinesis y Apache Pulsar suelen proporcionar esta capacidad.
Para admitir cargas de trabajo a gran escala, los flujos de eventos suelen organizarse en temas y dividirse en particiones que se pueden distribuir en varios servidores. La partición permite el procesamiento paralelo y un mayor rendimiento, mientras que la replicación crea copias de datos entre diferentes nodos para mejorar la tolerancia a fallas y la disponibilidad cuando fallan componentes individuales.
Las arquitecturas de transmisión de eventos separan los sistemas que generan datos de los sistemas que los utilizan. Los productores publican eventos en temas, mientras que los consumidores se suscriben a esos temas y procesan eventos de forma independiente. Este diseño desacoplado permite agregar nuevas aplicaciones y servicios sin modificar los sistemas que generan los datos.
Muchas arquitecturas de transmisión de eventos incluyen una capa de procesamiento de transmisión que analiza y transforma los eventos a medida que se mueven por el sistema. Las tecnologías comunes de procesamiento de transmisión incluyen Apache Flink, Kafka Streams, ksqlDB y Apache Spark Structured Streaming. Estas tecnologías admiten operaciones como filtrado, enriquecimiento, uniones y agregaciones sobre datos que llegan continuamente.
Algunas cargas de trabajo de transmisión requieren que las aplicaciones mantengan información sobre eventos pasados. Por ejemplo, una plataforma de comercio electrónico podría analizar todas las compras realizadas durante la última hora para identificar productos de tendencia y actualizar recomendaciones casi en tiempo real. La gestión de estado permite que el sistema retenga y actualice esta información a lo largo del tiempo, mientras que las ventanas organizan flujos de datos continuos en intervalos basados en el tiempo o en eventos para su análisis.
Las arquitecturas de transmisión de eventos suelen incluir mecanismos que ayudan a prevenir la pérdida de datos y a apoyar la recuperación tras fallas. Dependiendo de los requisitos de la aplicación, los sistemas pueden proporcionar garantías de procesamiento como máximo una vez, al menos una vez o exactamente una vez. Los puntos de comprobación, la replicación y el seguimiento de la compensación del consumidor ayudan a mantener la consistencia de los datos durante las interrupciones o los reinicios del sistema.
Los eventos procesados suelen entregarse a destinos posteriores como bases de datos, almacenes de datos, data lakes, índices de búsqueda, sistemas de machine learning u otros flujos de eventos. Estas integraciones permiten que los datos de eventos admitan análisis en tiempo real, aplicaciones operativas, flujos de trabajo de automatización y aplicaciones de IA.
Además de la transmisión y procesamiento estándar, las plataformas de transmisión de eventos, como Amazon Kinesis, Google Cloud Pub/Sub, Azure Event Hubs e IBM Event Automation, facilitan una variedad de prácticas de transmisión que mejoran la funcionalidad. IBM® Event Automation, en particular, utiliza la potencia de procesamiento de la plataforma Apache Kafka de código abierto para optimizar los flujos de trabajo basados en eventos. Estas capacidades también ayudan a las organizaciones a ofrecer los pipelines de datos en tiempo real de los que dependen los sistemas de analytics e IA.
El procesamiento exactamente una vez significa que cada evento en una transmisión se procesa exactamente una vez, una característica esencial para evitar eventos de transmisión duplicados y perdidos. La mayoría de los sistemas de transmisión de eventos incluyen mecanismos para proporcionar una semántica exactamente una vez, independientemente de las fallas en otras partes del sistema.
Cuando los componentes posteriores no pueden seguir el ritmo de la tasa de eventos entrantes, la contrapresión evita que los flujos saturen el sistema. Con la contrapresión, un mecanismo de control del flujo de datos, los consumidores pueden indicar a los productores que limiten o detengan la producción de datos cuando están abrumados con el procesamiento de datos o no pueden seguir el ritmo de los eventos emergentes.
Este proceso permite que los sistemas manejen con habilidad las cargas de trabajo almacenando en búfer o descartando eventos entrantes, en lugar de interrumpir todo el sistema, para que el procesamiento de eventos permanezca estable a medida que fluctúan las cargas de trabajo.
Los consumidores de eventos a menudo trabajan como parte de un grupo de consumidores para acelerar el consumo de eventos. A cada consumidor en un grupo de consumidores se le asigna un subconjunto de particiones, lo que permite el consumo paralelo para una mayor eficiencia. Si un consumidor dentro del grupo falla o necesita ser agregado o eliminado, la plataforma puede reasignar dinámicamente las particiones para mantener el equilibrio y la tolerancia a fallas.
La transmisión de eventos a menudo significa procesar datos de manera urgente. Una marca de agua es la estimación del sistema de cuánto ha progresado el tiempo del evento. La marca de agua impone un umbral de integridad que indica cuándo el sistema puede considerar los datos del evento completamente procesados. La marca de agua también puede ser útil para garantizar la precisión en el procesamiento basado en el tiempo y para conciliar eventos fuera de orden.
La mayoría de las plataformas de event streaming ofrecen políticas de conservación de datos personalizables que permiten a los desarrolladores controlar cuánto tiempo están disponibles los eventos para su consumo. Sin embargo, la compactación de datos es un proceso que elimina los datos redundantes u obsoletos de los temas, manteniendo el footprint de almacenamiento mínima y preservando los datos esenciales.
Vale la pena señalar, nuevamente, que las arquitecturas de transmisión estándar suelen desacoplar a los productores de eventos, los intermediarios de eventos y los consumidores, de modo que los componentes se puedan escalar y mantener de forma independiente. Esta flexibilidad permite a las empresas admitir muchas aplicaciones posteriores, incluyendo análisis en tiempo real, toma de decisiones impulsada por IA y flujos de trabajo automatizados. Esta flexibilidad permite a las empresas admitir muchas aplicaciones posteriores, incluyendo análisis en tiempo real, toma de decisiones impulsada por IA y flujos de trabajo automatizados.
La diferencia entre la transmisión de eventos y el procesamiento por lotes es que la transmisión de eventos gestiona los datos de forma continua a medida que ocurren eventos, mientras que el procesamiento por lotes procesa los datos acumulados periódicamente o cuando se activan.
La transmisión de eventos y el procesamiento por lotes mueven y procesan datos, pero difieren principalmente en cuándo y cómo se manejan los datos. La transmisión de eventos captura y transporta continuamente eventos de fuentes como aplicaciones, bases de datos y dispositivos IoT a medida que ocurren esos eventos. En lugar de esperar un conjunto de datos completo, los sistemas manejan eventos individuales o pequeños grupos de eventos a medida que llegan, lo que admite análisis y respuestas de baja latencia.
Este enfoque es muy adecuado para casos de uso en los que el valor de los datos depende de su vigencia. Los ejemplos incluyen detección de fraude, monitoreo operativo, recomendaciones en tiempo real y sistemas de IA que se basan en información actual.
El procesamiento por lotes recopila datos durante un periodo definido y los procesa juntos como una carga de trabajo discreta. Debido a que no es necesario producir resultados de inmediato, el procesamiento por lotes es apropiado para tareas como generar informes diarios, conciliar cuentas o actualizar paneles de analytics.
Además, los dos enfoques son complementarios en lugar de mutuamente excluyentes: una organización podría usar transmisión de eventos para detectar y responder a la actividad a medida que ocurre, y luego usar el procesamiento por lotes para realizar un análisis histórico exhaustivo de los datos acumulados.
Punto de comparación | Transmisión de eventos | Procesamiento por lotes |
Flujo de datos | Procesa un flujo continuo y potencialmente ilimitado de eventos | Procesa una colección acotada de datos |
Tiempo de procesamiento | Gestiona los acontecimientos a medida que ocurren | Se ejecuta a intervalos programados o luego de acumular suficientes datos |
Latencia | Normalmente optimizado para resultados de baja latencia | Los retrasos entre la creación y el procesamiento de datos son comunes |
Consideraciones operativas | Debe tenerse en cuenta problemas como eventos tardíos o fuera de orden y un estado de mantenimiento continuo | Admite el procesamiento repetible de conjuntos de datos delimitados, aunque los trabajos fallidos pueden requerir un reprocesamiento parcial o completo |
Casos de uso | Situaciones que requieren acción inmediata o casi en tiempo real | Cargas de trabajo a gran escala que priorizan la integridad y la eficiencia del procesamiento sobre la inmediatez |
El event streaming es un concepto poderoso que permite a las organizaciones emplear los datos a medida que se generan, creando sistemas más receptivos e inteligentes. Con el auge de la toma de decisiones basada en datos, el event streaming es un componente cada vez más importante en las arquitecturas de software modernas.
Como tal, las tecnologías de streaming de eventos tienen una variedad de casos de uso en todos los sectores empresariales, que incluyen:
Las instituciones financieras pueden usar servicios de transmisión de eventos para procesar datos de mercado y transacciones financieras en tiempo real. Este enfoque permite a los sistemas de trading algorítmico tomar decisiones en fracciones de segundo basadas en las condiciones actuales del mercado y responder rápidamente a los cambios en las operaciones bursátiles. Las capacidades de monitoreo en tiempo real de transmisión de eventos también respaldan la detección de fraudes, lo que ayuda a las instituciones a identificar y abordar rápidamente los riesgos de fraude y seguridad.
La transmisión de eventos puede facilitar la optimización de la cadena de suministro al permitir que los fabricantes realicen un seguimiento de los materiales y productos a medida que avanzan por la cadena de suministro para identificar cuellos de botella e ineficiencias en los procesos. Además, los gerentes pueden transmitir datos de sensores IoT/IIoT en maquinaria y usar modelos de IA para predecir cuándo y por qué el equipamiento podría fallar. Luego, pueden realizar mantenimiento preventivo o predictivo para evitar tiempos de inactividad no planificados.
Las plataformas de juegos en línea pueden emplear los servicios de streaming de eventos para realizar un seguimiento de las acciones de los jugadores y los cambios en el estado del juego, lo que puede emplearse para ejecutar un análisis del juego, aplicar políticas anti trampas y aumentar la participación de los jugadores. Las plataformas de streaming pueden aprovechar los datos de los eventos para ofrecer recomendaciones de contenidos personalizadas a los usuarios y crear una experiencia de cliente a la medida.
Los datos de ubicación y estado del vehículo en tiempo real transmitidos a través de sistemas basados en eventos permiten que los modelos de IA predigan retrasos y recomienden ajustes operativos a medida que cambian las condiciones. Las empresas de logística también pueden utilizar datos de eventos de dispositivos de escaneo y rastreadores GPS para proporcionar a los clientes actualizaciones en tiempo real sobre el estado de sus entregas de comercio electrónico.
Más allá de industrias específicas, la transmisión de eventos también puede ser útil cuando se implementa en conjunto con otras tecnologías y arquitecturas. Por ejemplo, la transmisión de eventos a veces se asocia con patrones como el abastecimiento de eventos y la segregación de responsabilidad de consulta de comandos (CQRS).
El abastecimiento de eventos es un patrón arquitectónico en el que los cambios en el estado de la aplicación se almacenan como una secuencia de eventos. Utilizado junto con la transmisión de eventos, el abastecimiento de eventos permite que el sistema de transmisión reproduzca eventos. Esta capacidad puede reconstruir el estado de una entidad en cualquier momento o impulsar otros componentes del sistema.
En un patrón arquitectónico CQRS, el sistema se divide en dos modelos diferentes: uno que maneja comandos (escritura) y otro que maneja consultas (lectura). El event streaming se puede emplear en CQRS para propagar cambios del modelo de escritura al modelo de lectura en tiempo real, lo que permite la integración asíncrona entre los dos.
La transmisión de eventos también es una tecnología fundamental para crear arquitecturas basadas en eventos. Una arquitectura basada en eventos permite que los componentes acoplados libremente se comuniquen a través de eventos. En lugar de publicar flujos de eventos a un intermediario, publica un evento de propósito único que otra aplicación o servicio puede usar para realizar acciones a su vez.
La potencia de procesamiento in-stream proporcionada por las arquitecturas basadas en eventos empleada junto con las capacidades de transmisión de eventos puede permitir a las empresas responder a los datos en movimiento y tomar decisiones rápidas basadas en los datos actuales e históricos. Esta capacidad de respuesta en tiempo real también admite aplicaciones de analytics e IA que dependen de datos actualizados continuamente.
En los últimos años, los proveedores de la nube han comenzado a ofrecer los principios de transmisión de eventos como servicios. Esta facilita a las empresas la adopción de la transmisión de eventos sin gestionar toda la infraestructura subyacente, ampliando aún más los casos de uso de la transmisión de eventos.
IBM® Event Automation es una solución acoplable que ayuda a acelerar los esfuerzos de las empresas basados en eventos, con capacidades de distribución, detección y procesamiento de eventos.
Automatización impulsada por IA: redefinición de la productividad, fortalecimiento de la resiliencia y aceleración del crecimiento.
Capacite a su organización para que prospere en la era de la IA agéntica con todo el valor de la nube híbrida.