O que é o fluxo de eventos?

Céu azul e nuvens refletidos nas janelas de um prédio comercial moderno

O que é o fluxo de eventos?

O fluxo de eventos é a prática de capturar continuamente dados de aplicações, bancos de dados e dispositivos IoT e transportá-los para diversos destinos para processamento e armazenamento. Os registros de dados, conhecidos como eventos, podem ser processados imediatamente para apoiar a automação e decisões em tempo real ou retidos para análise posterior.

Uma função essencial do processamento de fluxos de eventos (ESP), o fluxo de eventos permite que as infraestruturas de TI processem grandes fluxos contínuos de eventos à medida que os eventos ou as alterações ocorrem. O fluxo de eventos é distinto do processamento de fluxo. O fluxo de eventos fornece a infraestrutura que migra e armazena eventos. O processamento de fluxo pode aplicar filtragem, agregação ou enriquecimento a esses eventos.

O fluxo de eventos frequentemente complementa o processamento em lote, que atua sobre grandes conjuntos de dados estáticos (ou "dados em repouso"). No entanto, em vez de processar dados em lotes, o fluxo de eventos pode lidar com dados não limitados à medida que chegam. Essa abordagem permite que o software dentro da arquitetura interprete e responda a fluxos de dados ("dados em movimento") em tempo real.

Serviços de fluxo de eventos de alto desempenho podem viabilizar uma variedade de tarefas, desde funções simples, como enviar notificações quando os preços de ações ou produtos mudam, até cargas de trabalho mais complexas. Eles também podem suportar inteligência artificial (IA) e modelos de aprendizado de máquina em tempo real que detectam atividades suspeitas do usuário.

Mesmo no caso do processamento em lote, o fluxo de eventos pode adicionar profundidade à análise de dados, conectando eventos com seus respectivos carimbos de data/hora. Ajuda também a identificar tendências históricas, fornecendo insights valiosos ao longo do tempo.

O que é um evento?

O fluxo de eventos gira em torno do fluxo contínuo e potencialmente ilimitado de registros de dados, chamados "eventos", estruturas de dados fundamentais que registram qualquer ocorrência no sistema ou ambiente. Um evento é um registro imutável de que algo aconteceu (como um pedido sendo feito ou um pagamento sendo autorizado). Um "fluxo" (também chamado de fluxo de dados ou dados em fluxo) é a entrega contínua desses eventos.

Cada evento geralmente compreende uma chave que identifica o evento ou a entidade a que se refere, juntamente com um valor que contém os dados reais do evento. Além disso, inclui um carimbo de data e hora indicando quando o evento ocorreu ou foi registrado e, às vezes, metadados sobre a fonte de dados, versão do esquema ou outros atributos.

Com a ajuda de mecanismos especializados de processamento de fluxos, os eventos podem passar por diferentes processos dentro de um fluxo. As "agregações" realizam cálculos de dados, como médias, somas e desvio padrão. A “ingestão” adiciona dados de streaming aos bancos de dados. O processamento analítico utiliza padrões nos fluxos de dados para prever eventos futuros, enquanto o processamento de enriquecimento combina pontos de dados com outras fontes de dados para fornecer contexto e gerar significado.

À medida que as organizações geram grandes volumes de dados de eventos, elas podem usar a análise em tempo real para identificar padrões, anomalias e tendências à medida que surgem. A IA aproveita esses insights em tempo real, detectando relações complexas em fluxos de eventos, gerando previsões e recomendando ações.

Essa capacidade está se tornando um pré-requisito para sistemas de IA: de acordo com a IDC, 80% dos casos de uso de IA agêntica exigem dados em tempo real, contextuais e amplamente acessíveis. Seja dando suporte a análises, IA ou fluxos de trabalho automatizados, esses sistemas dependem de um fluxo contínuo de eventos que representam atividades em toda a organização.

Eventos estão ligados a operações de negócios ou processos de navegação do usuário e geralmente desencadeiam outra ação, processo ou série de eventos. Considere, por exemplo, o banco online. Quando um usuário clica em “transferir” para enviar dinheiro de uma conta bancária para outra, os fundos são retirados da conta do remetente e adicionados à conta do destinatário. Notificações por e-mail ou SMS são enviadas para uma ou ambas as partes e, se necessário, protocolos de segurança e prevenção de fraude são implementados.

Mixture of Experts | 12 de dezembro, episódio 85

Decodificando a IA: resumo semanal das notícias

Participe do nosso renomado painel de engenheiros, pesquisadores, líderes de produtos e outros enquanto filtram as informações sobre IA para trazerem a você as mais recentes notícias e insights sobre IA.

Principais elementos do fluxo de eventos

Os eventos são o componente central do fluxo de eventos. No entanto, um conjunto de outros componentes permite que os serviços de streaming processem eventos de forma tão rápida e eficaz quanto eles. Outros componentes vitais incluem:

Agentes

Os brokers recebem eventos dos produtores, organizam e armazenam esses eventos e os disponibilizam aos consumidores. Ao servir como intermediários, os brokers permitem que produtores e consumidores se comuniquem sem conexões diretas, possibilitando que cada um opere e escale de forma independente.

Em sistemas distribuídos de fluxo de eventos, os brokers garantem baixa latência e alta disponibilidade replicando eventos em múltiplos nós. Os brokers também podem formar clusters, conjuntos de brokers trabalhando juntos para facilitar o balanceamento de carga e a escalabilidade.

Tópicos

Os tópicos são categorizações ou nomes de feeds aos quais os eventos são publicados, oferecendo uma maneira de organizar e filtrar eventos dentro da plataforma. Eles funcionam como o "assunto" dos eventos, permitindo que os consumidores se inscrevam em tópicos e recebam apenas eventos relevantes.

Partições

Os tópicos podem ser subdivididos em partições, permitindo que múltiplos consumidores leiam de um tópico simultaneamente sem interromper a ordem de cada partição.

Compensações

Compensação é um identificador único para cada evento dentro de uma partição, marcando a posição de um evento na sequência. Os consumidores usam compensações para organizar os eventos que já processaram. Se, por exemplo, um consumidor se desconecta de um evento e posteriormente reconecta, ele pode retomar o processamento a partir da última compensação conhecida.

Como funciona o fluxo de eventos?

Dada a proliferação de dados e o aumento resultante do tráfego de dados, o fluxo de eventos é um componente essencial das arquiteturas de dados modernas. É valioso em ambientes que exigem recursos de tomada de decisão extremamente rápidos ou em organizações que visam automatizar a tomada de decisões.

Veja como os serviços de fluxo de eventos gerenciam os dados de eventos:

  1. Geração de eventos. O fluxo de eventos inicia quando os produtores (sistemas de backend de microsserviços, ecossistema de IoT ou APIs orientadas a eventos, por exemplo) enviam eventos para a plataforma de fluxo de eventos.

  2. Publicação de eventos. Utilizando bibliotecas de clientes, os produtores publicam o evento em um tópico específico dentro da plataforma, momento em que eles se tornam disponíveis para os consumidores (os aplicativos e serviços que se inscrevem nesse tópico).

  3. Armazenamento de eventos. A plataforma armazena os eventos por um período predeterminado, com brokers gerenciando os processos de armazenamento e recuperação dos eventos.

  4. Consumo do evento. Os consumidores processam dados de eventos para desencadear outros eventos. Dependendo de sua finalidade ou configuração, eles podem agir sobre os eventos imediatamente ao chegarem (processamento em tempo real), armazená-los para processamento posterior ou compilá-los para processamento em lote. Os consumidores também rastreiam sua posição no pipeline de dados usando compensação, permitindo retomar o processamento de onde pararam em caso de falha ou reinicialização.

  5. Entrega de eventos. O broker de eventos disponibiliza eventos para os consumidores. Ele pode garantir a entrega de eventos sob a semântica "pelo menos uma vez", o que garantiria que cada evento chegasse ao seu destino, mesmo que ocorressem duplicatas. O processo também pode incluir a entrega “exatamente uma vez”, garantindo que cada evento seja entregue uma única vez, ou outro tipo de semântica.

  6. Processamento de eventos. Depois que o evento inicial é consumido e entregue, os dados do evento são processados para diversas ações subsequentes, incluindo transformação dos dados, agregação e acionamento de fluxos de trabalho complexos de processamento de eventos (CEP). As organizações geralmente usam tecnologias de processamento de fluxo, como Apache Flink, Apache Spark Structured Streaming e Kafka Streams, para executar essas operações em tempo real em sistemas distribuídos baseados em eventos. Os fluxos de dados em tempo real resultantes também podem proporcionar o fluxo contínuo de dados que os sistemas de IA usam para apoiar a tomada de decisão em tempo real.

Como é implementado o fluxo de eventos?

O fluxo de eventos é tipicamente implementado como uma arquitetura distribuída projetada para capturar, armazenar, processar e distribuir fluxos contínuos de dados de eventos em múltiplos sistemas. Em vez de depender de conexões diretas ponto a ponto, as arquiteturas de fluxo de eventos usam uma infraestrutura compartilhada que separa produtores de dados dos consumidores, permitindo que as aplicações sejam escaladas de forma independente e troquem informações em tempo real. Vários componentes arquitetônicos principais tornam este framework possível:

Broker de eventos e log distribuído

Um componente fundamental da maioria das arquiteturas de fluxo de eventos é um broker de eventos, que atua como uma infraestrutura robusta e escalável para os dados de eventos. Os eventos são gravados em tópicos dentro de um log distribuído, onde são armazenados na ordem em que são recebidos e permanecem disponíveis para consumo posterior.

Essa arquitetura permite que várias aplicações acessem de forma independente o mesmo fluxo de eventos sem exigir integração direta com os sistemas que produziram os dados. Tecnologias como Apache Kafka, Amazon Kinesis e Apache Pulsar comumente oferecem esse recurso.

Tópicos, partições e replicação

Para dar suporte a cargas de trabalho em larga escala, os fluxos de eventos geralmente são organizados em tópicos e divididos em partições que podem ser distribuídas entre vários servidores. O particionamento permite o processamento paralelo e maior taxa de transferência, enquanto a replicação cria cópias de dados em diferentes nós para melhorar a tolerância a falhas e a disponibilidade quando componentes individuais falham.

Produtores e consumidores

As arquiteturas de fluxo de eventos separam os sistemas que geram dados dos sistemas que os utilizam. Os produtores publicam eventos em tópicos, enquanto os consumidores se inscrevem nesses tópicos e processam os eventos de forma independente. Esse design desacoplado permite que novas aplicações e serviços sejam adicionados sem modificar os sistemas que geram os dados.

Camada de processamento de fluxos

Muitas arquiteturas de fluxo de eventos incluem uma camada de processamento de fluxo que analisa e transforma os eventos à medida que eles migrar pelo sistema. Tecnologias comuns de processamento de fluxo incluem Apache Flink, Kafka Streams, ksqlDB e Apache Spark Structured Streaming. Essas tecnologias são compatíveis com operações como filtragem, enriquecimento, junções e agregações em dados que chegam de forma contínua.

Processamento com estado e janelas de tempo

Algumas cargas de trabalho de streaming exigem que as aplicações mantenham informações sobre eventos passados. Por exemplo, uma plataforma de e-commerce pode analisar todas as compras feitas durante a última hora para identificar produtos em tendência e atualizar recomendações quase em tempo real. O gerenciamento de estado permite que o sistema retenha e atualize essas informações ao longo do tempo, enquanto o agrupamento em janelas organiza fluxos contínuos de dados em intervalos baseados em tempo ou em eventos para análise.

Confiabilidade e tolerância a falhas

As arquiteturas de fluxo de eventos normalmente incluem mecanismos que ajudam a evitar a perda de dados e oferecem suporte à recuperação de falhas. Dependendo dos requisitos da aplicação, os sistemas podem fornecer garantias de processamento de no máximo uma vez, pelo menos uma vez ou exatamente uma vez. O uso de pontos de verificação, a replicação e o rastreamento dos offsets dos consumidores ajudam a manter a consistência dos dados durante interrupções ou reinicializações do sistema.

Sistemas e integrações subsequentes

Os eventos processados são geralmente entregues a destinos subsequentes, como bancos de dados, data warehouses, data lakes, índices de pesquisa, sistemas de aprendizado de máquina ou outros fluxos de eventos. Essas integrações permitem que os dados de eventos ofereçam suporte à análise em tempo real, aplicações operacionais, fluxos de trabalho de automação e aplicações de IA.

Funcionalidades do fluxo de eventos

Além do fluxo e processamento padrão, as plataformas de fluxo de eventos, como Amazon Kinesis, Google Cloud Pub/Sub, Azure Event Hubs e IBM® Event Automation, facilitam uma variedade de práticas de fluxo que aprimoram a funcionalidade. O IBM Event Automation, em particular, usa o poder de processamento da plataforma de código aberto Apache Kafka para otimizar fluxos de trabalho orientados a eventos. Esses recursos também ajudam as organizações a fornecer os pipelines de dados em tempo real dos quais a análise de dados e os sistemas de IA dependem.

Processamento único garantido

O processamento "exatamente uma vez" significa que cada evento em um fluxo é processado exatamente uma vez, uma funcionalidade essencial para evitar duplicação e perda de eventos. A maioria dos sistemas de fluxo de eventos inclui mecanismos para fornecer semântica de "exatamente uma vez", independentemente de falhas em outras partes do sistema.

Contrapressão

Quando os componentes subsequentes não conseguem acompanhar a taxa de chegada de eventos, a contrapressão impede que os fluxos sobrecarreguem o sistema. Com a contrapressão, um mecanismo de controle do fluxo de dados, os consumidores podem sinalizar aos produtores para reduzirem o ritmo ou interromperem a produção de dados quando estiverem sobrecarregados com o processamento ou não conseguirem acompanhar a chegada dos eventos.

Esse processo permite que os sistemas lidem com cargas de trabalho de forma controlada, armazenando temporariamente ou descartando os eventos recebidos, em vez de interromper todo o sistema, para manter a estabilidade do processamento de eventos à medida que as cargas de trabalho variam.

Grupos de consumidores

Consumidores de eventos geralmente trabalham como parte de um grupo de consumidores para acelerar a ingestão de eventos. Cada consumidor em um grupo de consumidores é atribuído a um subconjunto de partições, permitindo o consumo paralelo para maior eficiência. Se um consumidor dentro do grupo falhar ou precisar ser adicionado ou removido, a plataforma pode realocar dinamicamente as partições para manter o equilíbrio e a tolerância a falhas.

Marca d'água

O fluxo de eventos frequentemente implica processar dados de forma sensível ao tempo. Um watermark é a estimativa do sistema de quanto o tempo do evento progrediu. O watermark define um limiar de completude que indica quando o sistema pode considerar que os dados do evento foram completamente processados. O watermark também pode ser útil para garantir precisão no processamento baseado em tempo e para reconciliar eventos fora de ordem.

Retenção e compactação de dados

A maioria das plataformas de fluxo de eventos oferece políticas de retenção de dados personalizáveis, permitindo que os desenvolvedores controlem por quanto tempo os eventos ficam disponíveis para consumo. Entretanto, a compactação de dados consiste em remover informações redundantes ou desatualizadas dos tópicos, minimizando a pegada de carbono do armazenamento sem perder dados importantes.

Vale a pena notar, novamente, que as arquiteturas de streaming padrão normalmente desacoplam produtores de eventos, brokers de eventos e consumidores, para que os componentes possam ser dimensionados e mantidos de forma independente. Essa flexibilidade permite que as empresas ofereçam suporte a muitas aplicações subsequentes, incluindo análise em tempo real, tomada de decisão impulsionada por IA e fluxos de trabalho automatizados. Essa flexibilidade permite que as empresas ofereçam suporte a muitas aplicações subsequentes, incluindo análise em tempo real, tomada de decisão impulsionada por IA e fluxos de trabalho automatizados.

Fluxo de eventos versus processamento em lote

A diferença entre o fluxo de eventos e o processamento em lote é que o fluxo de eventos manipula os dados continuamente à medida que os eventos ocorrem, enquanto o processamento em lote processa os dados acumulados periodicamente ou quando acionado.

O fluxo de eventos e o processamento em lote migram e processam dados, mas diferem principalmente em quando e como os dados são tratados. O fluxo de eventos captura e transporta continuamente eventos de fontes como aplicações, bancos de dados e dispositivos de IoT à medida que esses eventos ocorrem. Em vez de esperar por um conjunto de dados completo, os sistemas processam eventos individuais ou pequenos grupos de eventos à medida que chegam, permitindo análises e respostas de baixa latência.

Essa abordagem é adequada para casos de uso em que o valor dos dados depende de sua atualização. Os exemplos incluem detecção de fraude, monitoramento operacional, recomendações em tempo real e sistemas de IA que dependem de informações atuais.

O processamento em lote coleta dados durante um período definido e os processa em conjunto, como uma carga de trabalho discreta. Como os resultados não precisam ser produzidos imediatamente, o processamento em lote é apropriado para tarefas como gerar relatórios diários, conciliar contas ou atualizar dashboards de análise de dados.

Além disso, as duas abordagens são complementares em vez de mutuamente exclusivas: uma organização pode usar o fluxo de eventos para detectar e responder às atividades à medida que elas acontecem e, em seguida, usar o processamento em lote para realizar uma análise histórica abrangente dos dados acumulados.

Ponto de comparação

Fluxo de eventos

Processamento em lote

Fluxo de dados

Processa um fluxo contínuo e potencialmente ilimitado de eventos

Processa uma coleção limitada de dados

Tempo de processamento

Lida com eventos à medida que eles ocorrem

É executado em intervalos programados ou após o acúmulo de dados suficientes

Latência

Normalmente otimizado para resultados de baixa latência

Atrasos entre a criação e o processamento de dados são comuns

Considerações operacionais

Deve considerar problemas como eventos atrasados ou fora de ordem e um estado mantido continuamente

Suporta o processamento repetível de conjuntos de dados limitados, embora trabalhos com falha possam exigir reprocessamento parcial ou completo

Casos de uso

Situações que exigem ação imediata ou quase em tempo real

Cargas de trabalho de grande escala que priorizam a integridade e a eficiência do processamento em detrimento do imediatismo

Casos de uso de fluxo de eventos

O fluxo de eventos é um conceito poderoso que permite às organizações utilizarem os dados à medida que são gerados, criando sistemas mais responsivos e inteligentes. Com o avanço da tomada de decisão orientada por dados, o fluxo de eventos torna-se um componente cada vez mais importante nas arquiteturas de software modernas.

Dessa forma, as tecnologias de fluxo de eventos têm uma variedade de casos de uso em diferentes segmentos de negócios, como:

Serviços bancários e financeiros

Instituições financeiras podem utilizar serviços de fluxo de eventos para processar dados de mercado e transações financeiras em tempo real. Essa abordagem permite que sistemas de negociação algorítmica tomem decisões em frações de segundo com base nas condições mais recentes do mercado e respondam com rapidez a mudanças nas negociações de ações. Os recursos de monitoramento em tempo real do fluxo de eventos também apoiam a detecção de fraudes, ajudando as instituições a identificar e a lidar com fraudes e riscos de segurança de forma rápida.

Manufatura

O fluxo de eventos pode ajudar na otimização da cadeia de suprimentos, permitindo que fabricantes rastreiem materiais e produtos ao longo do processo para identificar gargalos e ineficiências. Além disso, os gestores podem transmitir dados de sensores de IoT/IIoT de máquinas e usar modelos de IA para prever quando e por que um equipamento pode falhar. Eles podem então realizar manutenções preventivas ou preditivas para evitar downtime.

Jogos e entretenimento

As plataformas de jogos online podem utilizar serviços de fluxo de eventos para monitorar ações dos jogadores e mudanças na situação do jogo, permitindo análises, aplicação de políticas anti-trapaça e aumento do engajamento dos jogadores. As plataformas de streaming podem utilizar dados de eventos para oferecer recomendações de conteúdo personalizadas e criar uma experiência do cliente adaptada.

Transporte e logística

Dados de localização e status de veículos em tempo real transmitidos através de sistemas baseados em eventos permitem que modelos de IA prevejam atrasos e recomendem ajustes operacionais à medida que as condições mudam. Empresas de logística também podem usar dados de eventos de dispositivos de escaneamento e rastreadores GPS para fornecer aos clientes atualizações em tempo real sobre o status de suas entregas de e-commerce.

Aplicação em arquiteturas baseadas em eventos e demais modelos

Além de setores específicos, o fluxo de eventos também pode ser útil quando implementado em conjunto com outras tecnologias e arquiteturas. Por exemplo, o fluxo de eventos às vezes está associado a padrões como event sourcing e segregação de responsabilidades entre comandos e consultas (CQRS).

O event sourcing é um padrão arquitetural no qual as mudanças no estado do app são registradas como uma sequência de eventos. Usado em conjunto com fluxo de eventos, o event sourcing permite que o sistema de streaming repita eventos. Esse recurso pode reconstruir o estado de uma entidade em qualquer ponto no tempo ou controlar outros componentes do sistema.

No padrão arquitetural CQRS, o sistema é dividido em dois modelos distintos: um que gerencia comandos (escrita) e outro que trata consultas (leitura). O fluxo de eventos pode ser utilizado no CQRS para propagar mudanças do modelo de escrita para o de leitura em tempo real, permitindo integração assíncrona entre ambos.

O fluxo de eventos também é uma tecnologia fundamental para a criação de arquiteturas orientadas a eventos. Uma arquitetura orientada a eventos permite que componentes pouco acoplados se comuniquem por meio de eventos. Em vez de publicar fluxos de eventos em um broker, ela publica um evento com uma finalidade específica, que outro app ou serviço pode utilizar para executar ações em seguida.

O poder de processamento em fluxo fornecido pelas arquiteturas orientadas por eventos usado junto com os recursos de fluxo de eventos pode permitir que as empresas respondam a dados em movimento e tomem decisões rápidas com base em dados atuais e históricos. Essa resposta em tempo real também oferece suporte à aplicações de análise e IA que dependem de dados continuamente atualizados.

Nos últimos anos, os provedores de serviços em nuvem passaram a oferecer recursos de fluxo de eventos como serviços. O fluxo de eventos como serviço facilita a adoção dessa tecnologia pelas empresas sem a necessidade de gerenciar toda a infraestrutura subjacente, ampliando ainda mais os casos de uso.

Autores

Chrystal R. China

Staff Writer, Automation & ITOps

IBM Think

Judith Aquino

Staff Writer

IBM Think

Soluções relacionadas
IBM Event Automation

O IBM Event Automation é uma solução combinável para ajudar a acelerar os esforços das empresas baseados em eventos com recursos de distribuição, descoberta e processamento de recursos.

Explore o IBM Event Automation
Soluções de automação de TI

Automação impulsionada por IA – redefinindo a produtividade, fortalecendo a resiliência e acelerando o crescimento.

Explore as soluções de automação de TI
Soluções de nuvem

Capacite sua organização a prosperar na era da IA agêntica com todo o valor da nuvem híbrida.

Explore as soluções de nuvem
Dê o próximo passo

Acelere a tomada de decisão e as operações, identificando novas tendências, ameaças e oportunidades.

  1. Explore o IBM Event Automation
  2. Explore as soluções de automação de TI