Publicado: 30 de abril de 2024
Colaboradores: Chrystal R. China, Michael Goodwin
El event streaming es la práctica de capturar datos en tiempo real de aplicaciones, bases de datos y dispositivos IoT y transportarlos a varios destinos para su procesamiento y almacenamiento inmediatos, o para análisis e informes de analytics en tiempo real.
Una función clave en el procesamiento de Event Streams (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.
El event streaming a menudo sirve como complemento al procesamiento por lotes, que actúa sobre grandes conjuntos de datos estáticos (o “datos en reposo”). Sin embargo, en lugar de procesar datos en lotes, el event streaming procesa puntos de datos individuales a medida que emergen para que el software dentro de la arquitectura pueda interpretar y responder a flujos de datos (“datos en movimiento”) en tiempo real.
Los servicios de event streaming de alto rendimiento pueden impulsar una variedad de tareas simples y complejas, desde enviar notificaciones cuando cambian los precios de las acciones o los productos hasta crear modelos de machine learning en tiempo real que detectan actividades sospechosas de los usuarios. Incluso en el caso del procesamiento por lotes, el event streaming puede agregar profundidad al analytics de datos al conectar eventos con sus respectivas marcas de tiempo e identificar tendencias históricas.
El event streaming gira en torno al flujo ilimitado, secuencial y en tiempo real de registros de datos, llamados "eventos", estructuras de datos fundacionales que registran cualquier ocurrencia en el sistema o entorno. Es un término que se refiere esencialmente a cada punto de datos en el sistema. Por lo tanto, un "flujo" (también llamado flujo de datos o transmisión de datos) es la entrega continua de esos eventos.
Cada evento generalmente incluye una clave que identifica el evento o la entidad a la que pertenece, un valor que contiene los datos reales del evento, 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 otro atributo.
Con la ayuda de motores especializados de procesamiento de transmisiones, los eventos pueden someter 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 "ingestión" agrega datos de transmisión a las bases de datos. El procesamiento de analytics emplea patrones en la transmisión de datos para predecir eventos futuros, y el procesamiento de enriquecimiento combina puntos de datos con otras fuentes para brindar contexto y crear significado.
Los eventos suelen estar vinculados a las operaciones comerciales 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, por supuesto, el componente central del event streaming; sin embargo, una serie de otros componentes permiten que los servicios de transmisión procesen eventos de manera tan rápida y efectiva como lo hacen. Otros componentes vitales incluyen:
Los intermediarios, o intermediarios de mensajes, son los servidores que ejecutan plataformas de event streaming. Los intermediarios de mensajes permiten que las aplicaciones, los sistemas y los servicios se comuniquen entre sí e intercambien información convirtiendo mensajes entre protocolos de mensajería formales. Esto permite que los servicios interdependientes "hablen" entre sí directamente, incluso si están escritos en diferentes lenguajes (como Java o Python) o implementados en diferentes plataformas. Además, facilita el desacoplamiento de procesos y servicios dentro de los sistemas.
Los intermediarios pueden validar, almacenar, enrutar y entregar mensajes a los destinos apropiados. En los sistemas de event streaming distribuidos, los intermediarios garantizan baja latencia y alta disponibilidad al replicar eventos en múltiples nodos. Los intermediarios también pueden formar clústeres, que son 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 consiguiente aumento del tráfico de datos, el event streaming es un componente esencial de las arquitecturas de datos modernas, especialmente en entornos que requieren capacidades de toma de decisiones ultra rá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:
Además de la transmisión y el procesamiento estándar, las plataformas de event streaming (como Amazon Kinesis, Google Pub/Sub, Azure Event Hubs e IBM Event Automation, que emplea la potencia de procesamiento de la plataforma Apache Kafka de código abierto) facilitan una variedad de prácticas de transmisión que aumentan la funcionalidad.
La semántica de entrega exacta garantiza que cada evento de una transmisión se procese exactamente una vez, una característica esencial para evitar eventos de transmisión duplicados y perdidos. La mayoría de los sistemas de event streaming 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 descarten 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 de un grupo de consumidores se le asigna un subconjunto de partes a procesar, lo que empareja el consumo para una mayor eficiencia. Si un consumidor dentro del grupo falla o necesita ser agregado o eliminado, la plataforma puede reasignar particiones dinámicamente para mantener el equilibrio y la tolerancia a las fallas.
El event streaming a menudo significa procesar datos de manera urgente. La marca de agua permite el seguimiento del progreso (mediante el tiempo del evento) en los sistemas de procesamiento de flujo; impone un umbral de integridad que indica cuándo el sistema puede considerar que los datos de eventos se procesaron por completo. 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.
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 emplear servicios de event streaming para procesar datos del mercado en tiempo real, lo que permite que los sistemas de comercio algorítmico tomen decisiones en fracciones de segundo según las condiciones del mercado actualizadas. Las capacidades de monitoreo en tiempo real del event streaming también ayudan a las instituciones a identificar y abordar rápidamente el fraude y los riesgos de seguridad.
El event streaming 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, al transmitir datos de sensores IoT/IIoT en maquinaria, los gerentes pueden predecir cuándo y por qué el equipo podría fallar y realizar mantenimiento preventivo o predictivo para evitar tiempos de inactividad no planeados.
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.
El event streaming se puede emplear para rastrear la ubicación y el estado del vehículo, lo que permite enrutar en tiempo real en función de las condiciones del tráfico, los horarios de entrega y el rendimiento del vehículo. Las compañías de logística pueden emplear de manera similar los 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, el event streaming también puede ser útil cuando se implementa en conjunto con otras tecnologías y arquitecturas. Por ejemplo, el event streaming 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 event streams, el abastecimiento de eventos permite que el sistema de transmisión reproduzca estos eventos para reconstruir el estado de una entidad en cualquier momento o para 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.
El event streaming también es una tecnología fundamental para crear arquitecturas basadas en eventos.
Una arquitectura basada en eventos permite que los componentes débilmente acoplados se comuniquen a través de eventos, pero en lugar de publicar flujos de eventos a un corredor, publica un evento de un solo propósito 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 streaming de eventos, puede permitir a las compañías responder a los datos en movimiento y tomar decisiones rápidas basadas en todos los datos actuales e históricos.
En los últimos años, los proveedores de la nube (incluido IBM Cloud) comenzaron a ofrecer los principios del streaming de eventos como servicios. El event streaming como servicio facilita a las compañías la adopción del event streaming sin gestionar toda la infraestructura subyacente, lo que amplía aún más los casos de uso del event streaming.
IBM Event Automation es una solución totalmente componible que permite a las empresas acelerar sus esfuerzos impulsados por eventos, dondequiera que se encuentren en su viaje. Las capacidades de distribución, gestión de endpoints y procesamiento de eventos ayudan a sentar las bases de una arquitectura basada en eventos para desbloquear el valor de los eventos.
IBM Cloud Pak for Integration utiliza la plataforma de streaming de eventos de código abierto creada por Apache Kafka de <a IBM Event Streams de IBM para ayudarle a crear aplicaciones inteligentes que pueden reaccionar a los eventos a medida que ocurren. Gestione las cargas de trabajo de misión crítica mediante una conectividad de sistemas mejorada, implementación y operaciones enriquecidas y una experiencia en arquitectura que se basa en eventos.
Orqueste acciones de seguimiento para reaccionar inmediatamente a nuevas eventualidades. App Connect admite arquitecturas impulsadas por eventos y puede aprovechar los mecanismos de sondeo para trabajar con aquellos que no lo hacen. Configure flujos para automatizar tareas y aplicar lógica condicional para agilizar las decisiones, y responder a los requisitos cambiantes de los clientes.