O fluxo de eventos é a prática de capturar dados em tempo real de aplicações, bancos de dados e dispositivos IoT, transportando-os para diversos destinos para processamento e armazenamento imediato, ou para análise em tempo real e geração de relatórios analíticos.
Sendo uma função chave no processamento de fluxo de eventos (ESP), o fluxo de eventos permite que infraestruturas de TI lidem com grandes fluxos contínuos de eventos, processando os dados no momento em que o evento ou mudança ocorre.
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 lida com pontos de dados únicos à medida que eles surgem. 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 executar uma série de tarefas simples e complexas, desde o envio de notificações quando os preços de ações ou produtos mudam até a criação de 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 fluxo de eventos gira em torno do fluxo ilimitado, sequencial e em tempo real de registros de dados, chamados "eventos", estruturas de dados fundamentais que registram qualquer ocorrência no sistema ou ambiente. É um termo que essencialmente se refere a cada ponto de dados no sistema. Portanto, um "fluxo" (também chamado de fluxo de dados ou dados em fluxo) é a entrega contínua desses eventos.
Cada evento normalmente compreende uma chave que identifica o evento ou a entidade à qual ele pertence, juntamente com um valor que contém os dados reais do evento. Além disso, inclui um registro 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 em fluxo a bancos de dados. O processamento analítico usa padrões em dados de fluxo para prever eventos futuros, e o processamento de enriquecimento combina pontos de dados com outras fontes para fornecer contexto e gerar significado.
Eventos estão frequentemente 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. Por exemplo, considere o internet banking.
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 bancária do destinatário. As notificações por e-mail ou SMS são enviadas para uma das partes (ou ambas) e, se necessário, protocolos de segurança e prevenção de fraudes são implementados.
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:
Os agentes, ou agentes de mensagens, são os servidores que executam as plataformas de fluxo de eventos. Os intermediadores de mensagens permitem que aplicações, sistemas e serviços se comuniquem entre si e troquem informações. Eles alcançam essa funcionalidade convertendo mensagens entre protocolos de mensagens formais. Isso permite que serviços interdependentes "conversem" diretamente, mesmo que estejam escritos em diferentes linguagens (como Java ou Python) ou implementados em plataformas distintas. Além disso, facilita o desacoplamento de processos e serviços dentro dos sistemas.
Os agentes podem validar, armazenar, rotear e entregar mensagens aos destinos apropriados. Em sistemas distribuídos de fluxo de eventos, os agentes garantem baixa latência e alta disponibilidade ao replicar eventos em múltiplos nós. Os agentes também podem formar clusters conjuntos de agentes trabalhando juntos para facilitar o balanceamento de carga e a escalabilidade.
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.
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çã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.
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:
Além do streaming e processamento padrão, plataformas de fluxo de eventos — como Amazon Kinesis, Google Pub/Sub, Azure Event Hubs e IBM® Event Automation— facilitam uma variedade de práticas de streaming que aprimoram a funcionalidade. O IBM Event Automation, em particular, usa o poder de processamento da plataforma código aberto Apache Kafka para otimizar fluxo de trabalho orientados a eventos.
A semântica de entrega única garante que cada evento em um fluxo seja processado apenas uma vez, um recurso essencial para evitar duplicação e perda de eventos. A maioria dos sistemas de fluxo de eventos inclui mecanismos para oferecer semântica de processamento único, independentemente de falhas em outras partes do sistema.
Quando os componentes a jusante não conseguem acompanhar a taxa de eventos recebidos, a contrapressão impede que os fluxos sobrecarreguem o sistema. Com a contrapressão, um mecanismo de controle de fluxo de dados, os consumidores podem informar aos produtores para reduzir ou pausar o processamento de dados quando estiverem sobrecarregados ou incapazes de acompanhar os eventos recebidos.
Esse processo permite que os sistemas lidem de forma eficiente com as cargas de trabalho, ao bufferizar ou descartar eventos recebidos, em vez de interromper todo o sistema, mantendo assim o processamento de eventos estável enquanto as cargas de trabalho variam.
Consumidores de eventos geralmente operam como parte de um grupo de consumidores para acelerar a ingestão de eventos. Cada consumidor dentro de um grupo recebe um subconjunto de partições para processar, paralelizando a consumação para aumentar a eficiência. Se um consumidor do grupo falhar ou precisar ser adicionado ou removido, a plataforma pode realocar as partições de forma dinâmica para manter o equilíbrio e a tolerância a falhas.
O fluxo de eventos frequentemente implica processar dados de forma sensível ao tempo. A marca d'água permite o acompanhamento do progresso (usando o tempo do evento) em sistemas de processamento de fluxo. Ele impõe um limite de integridade que indica quando o sistema pode considerar os dados de eventos totalmente processados. A marca d'água também é útil para garantir precisão no processamento baseado em tempo e para reconciliar eventos fora de ordem.
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, agentes de eventos e consumidores, para que os componentes possam ser dimensionados e mantidos de forma independente.
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:
Instituições financeiras podem utilizar serviços de fluxo de eventos para processar dados do mercado em tempo real, permitindo que sistemas de negociação algorítmica tomem decisões em frações de segundo com base nas condições mais recentes do mercado. Os recursos de monitoramento em tempo real do fluxo de eventos também auxiliam as instituições a identificar e enfrentar rapidamente fraudes e riscos de segurança.
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, ao transmitir dados de sensores de IoT /IIoT em máquinas, os gestores podem prever quando e por que equipamentos podem falhar e realizar manutenções preventivas ou preditivas para evitar downtime não planejado.
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.
O fluxo de eventos pode ser aplicado para rastrear a localização e o status de veículos, permitindo roteamento em tempo real com base no tráfego, cronogramas de entrega e desempenho do veículo. Empresas de logística podem igualmente utilizar 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.
Além de setores específicos, o fluxo de eventos de eventos também pode ser útil quando implementado junto com outras tecnologias e arquiteturas. Por exemplo, o fluxo de eventos é às vezes associado a padrões como evento de sourcing e segregação de responsabilidade de comando e consulta (CQRS).
O evento sourcing é um modelo de arquitetura onde mudanças no estado da aplicação são registradas como uma série de eventos. Usado em conjunto com fluxo de eventos, o fornecimento de eventos permite que o sistema de streaming reproduza esses eventos para reconstruir o estado de uma entidade a qualquer momento ou para conduzir 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 construir arquiteturas orientadas a eventos.
Uma arquitetura baseada em eventos permite que componentes fracamente acoplados se comuniquem por meio de eventos. Em vez de publicar fluxos de eventos para um broker, ele publica um evento de finalidade única que outro aplicativo ou serviço pode usar para executar ações. O poder de processamento em fluxo fornecido pelas arquiteturas orientadas por eventos,quando usado com recursos de fluxo de eventos,pode permitir que empresas respondam a dados em movimento e tomem decisões rápidas com base em dados atuais e históricos.
Nos últimos anos, provedores de nuvem (incluindo a IBM Cloud) começaram a oferecer os princípios do 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.
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 eventos.
Vá além da automação de tarefas simples para lidar com processos estratégicos voltados para o cliente e geradores de receita, com adoção integrada e escalabilidade.
Descubra como a IA para operações de TI oferece os insights necessários para ajudar a impulsionar um desempenho excepcional nos negócios.