Início
topics
Fluxos de eventos
Publicado em 30 de abril de 2024
Colaboradores: Chrystal R. China, Michael Goodwin
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 processa pontos de dados individuais à medida que surgem, permitindo 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 ao conectar eventos com seus respectivos carimbos de tempo e identificar tendências históricas.
Saiba como o IBM Event Automation pode ajudar você a aproveitar eventos, permitindo que usuários de negócios e TI detectem situações, atuem em tempo real, automatizem decisões e maximizem o potencial de receita.
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 inclui uma chave que identifica o evento ou a entidade a que se refere, um valor que contém os dados reais do evento, um timestamp que indica quando o evento ocorreu ou foi registrado e, às vezes, metadados sobre a fonte de dados, versão do esquema ou outro atributo.
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 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.
Os eventos são, obviamente, o componente central do fluxo de eventos; entretanto, uma série de outros elementos permite que os serviços de fluxo processem eventos de forma tão rápida e eficaz. Outros componentes vitais incluem:
Os agentes, ou agentes de mensagens, são os servidores que executam as plataformas de fluxo de eventos. Os agentes de mensagens permitem que aplicações, sistemas e serviços se comuniquem entre si e troquem informações, convertendo mensagens entre protocolos formais de comunicação. 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.
Com o crescimento exponencial de dados e o aumento no tráfego de informações, o fluxo de eventos é fundamental nas arquiteturas de dados atuais, sobretudo em ambientes que requerem recursos de decisões instantâneas ou em empresas que desejam automatizar a tomada de decisões.
Veja como os serviços de fluxo de eventos gerenciam os dados de eventos:
Além do fluxo e processamento padrão, as plataformas de fluxo de eventos (como Amazon Kinesis, Google Pub/Sub, Azure Event Hubs e IBM Event Automation, que utiliza o poder de processamento da plataforma de código aberto Apache Kafka) facilitam diversas práticas de fluxo que aprimoram a funcionalidade.
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 possibilita o rastreamento do progresso (com base no tempo do evento) em sistemas de processamento em fluxo; isso define um limiar de completude indicando quando o sistema pode considerar que os dados foram completamente 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 paradas não planejadas.
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 adaptada ao cliente.
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.
A arquitetura orientada por eventos possibilita a comunicação entre componentes independentes via eventos, mas ao invés de enviar fluxos de eventos para um agente, ela publica um evento específico que outro app ou serviço pode utilizar 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 totalmente componível que permite às empresas acelerar suas iniciativas orientadas a eventos, independentemente de onde estejam em sua jornada. Os recursos de fluxos de eventos, gerenciamento de endpoints de eventos e processamento de eventos ajudam a estabelecer a base de uma arquitetura baseada em eventos para liberar o valor dos eventos.
O IBM Cloud Pak® for Integration utiliza a plataforma de fluxo de eventos desenvolvida com Apache Kafka de código aberto, o IBM Event Streams, para ajudar você a desenvolver aplicações inteligentes que reagem aos eventos em tempo real. Manipule cargas de trabalho críticas por meio de conectividade de sistema, implementação e operações detalhadas melhores e de uma experiência em arquitetura baseada em eventos.
Organize ações de acompanhamento para reagir imediatamente a novos eventos. O App Connect é compatível com arquiteturas voltadas para eventos e pode utilizar mecanismos de pesquisas para trabalhar com as que não são. Configure fluxos para automatizar tarefas e aplicar a lógica condicional para simplificar as decisões e responder às mudanças nas necessidades do cliente.
Qual é a diferença, como podem beneficiá-lo e qual é a opção ideal para o seu negócio?
O processamento em fluxo é essencial para dados em tempo real. Ele permite que sua empresa absorva fluxos contínuos de dados em tempo real e os coloque em destaque para análise, possibilitando acompanhar mudanças constantes.
As organizações que adotam mais a orientação por eventos conseguem se diferenciar melhor dos concorrentes e, em última análise, influenciar seus resultados financeiros.
Saiba como a especificação AsyncAPI pode descrever e documentar tópicos do Kafka.
Ao aproveitar a IA para o processamento de eventos em tempo real, as empresas podem conectar eventos díspares para detectar e responder a novas tendências, ameaças e oportunidades.
Gerenciamento de dados é a prática de ingerir, processar, proteger e armazenar os dados de uma organização, onde eles são então utilizados para a tomada de decisões estratégicas para melhorar os resultados de negócios.