O Apache Flink é um mecanismo distribuído de código aberto para processamento com estado em conjuntos de dados ilimitados (fluxos) e limitados (lotes). As aplicações de processamento de fluxo são projetadas para serem executadas continuamente, com o mínimo de tempo de inatividade, e processar dados à medida que são ingeridos. O Apache Flink foi projetado para processamento de baixa latência, execução de cálculos na memória, alta disponibilidade, remoção de pontos únicos de falhas e aumento da escala na horizontal.

Os atributos do Apache Flink incluem gerenciamento avançado de estado com garantias de consistência exatamente uma vez, semântica de processamento de tempo de evento com tratamento sofisticado de dados atrasados e fora de ordem. O Apache Flink foi desenvolvido para priorizar o streaming e oferece uma interface de programação unificada para processamento de fluxo e de lotes.

O Apache Flink é usado para criar muitos tipos diferentes de aplicações de transmissão e em lotes, devido ao amplo conjunto de atributos.
Alguns dos tipos comuns de aplicações desenvolvidas pelo Apache Flink são:

  • Aplicações orientadas por eventos, ingerindo eventos de um ou mais fluxos de eventos e executando cálculos, atualizações de estado ou ações externas. O processamento com estado permite implementar uma lógica além da transformação de mensagem única, em que os resultados dependem do histórico de eventos ingeridos.
  • Aplicações de análise de dados, extraindo informações e insights dos dados. Tradicionalmente executada consultando conjuntos de dados finitos e reexecutando as consultas ou alterando os resultados para incorporar novos dados. Com o Apache Flink, a análise pode ser executada atualizando continuamente, transmitindo consultas ou processando eventos ingeridos em tempo real, emitindo e atualizando os resultados de forma constante.
  • Aplicações de pipelines de dados, transformando e enriquecendo os dados a serem movidos de um armazenamento de dados para outro. Tradicionalmente, extract-transform-load (ETL) é executado periodicamente, em lotes. Com o Apache Flink, o processo pode operar continuamente, movendo os dados com baixa latência para o destino.

O Flink é um mecanismo de processamento de fluxo de alto throughput e baixa latência. Uma aplicação do Flink consiste em um gráfico de fluxo de dados acíclico complexo e arbitrário, composto por fluxos e transformações. Os dados são ingeridos de uma ou mais fontes de dados e enviados para um ou mais destinos. Os sistemas de fonte e destino podem ser fluxos, filas de mensagens ou datastores e incluem arquivos, bancos de dados populares e mecanismos de busca. As transformações podem ser com estado, como agregações ao longo de janelas de tempo ou detecção de padrões complexos. 

A tolerância a falhas é obtida por dois mecanismos separados: pontos de verificação automática e periódica do estado da aplicação, copiados para um armazenamento persistente, para permitir a recuperação automática em caso de falha; pontos de salvamento sob demanda, salvando uma imagem consistente do estado de execução, para permitir a pausa e retomada, atualizar ou bifurcar sua tarefa do Flink, mantendo o estado da aplicação em todas as pausas e reinicializações. Os mecanismos de ponto de verificação e ponto de salvamento são assíncronos, capturando um snapshot consistente do estado sem “parar o mundo”, enquanto a aplicação continua processando eventos.

Processe conjuntos de dados ilimitados (fluxos) e limitados (lotes)

O Apache Flink pode processar conjuntos de dados ilimitados e limitados, ou seja, dados de fluxos e em lote. Fluxos ilimitados têm um começo, mas são virtualmente infinitos e nunca terminam. Teoricamente, o processamento nunca pode parar.

Dados limitados, como tabelas, são finitos e podem ser processados do início ao fim em um tempo finito.
O Apache Flink fornece algoritmos e estruturas de dados para suportar processamento limitado e ilimitado por meio da mesma interface de programação. As aplicações que processam dados ilimitados são executadas continuamente. As aplicações que processam dados limitados encerrarão sua execução ao chegarem ao final dos conjuntos de dados de entrada.

Execute aplicações em grande escala

O Apache Flink foi projetado para executar aplicações com estado em praticamente qualquer escala. O processamento é paralelo a milhares de tarefas, distribuído em várias máquinas, simultaneamente.

O estado também é particionado e distribuído horizontalmente, permitindo manter vários terabytes em diversas máquinas. O estado é verificado de forma incremental para um armazenamento persistente.

Desempenho na memória

Os dados que fluem pela aplicação e pelo estado são particionados em várias máquinas. Portanto, o cálculo pode ser concluído acessando dados locais, geralmente na memória.

Consistência de estado exatamente uma vez

As aplicações, além das transformações de uma única mensagem, têm estado. A lógica de negócios precisa lembrar eventos ou resultados intermediários. O Apache Flink garante a consistência do estado interno, mesmo em caso de falha e durante a parada e reinicialização da aplicação. O efeito de cada mensagem no estado interno é sempre aplicado exatamente uma vez, independentemente de a aplicação receber duplicatas da fonte de dados na recuperação ou na reinicialização.

Ampla variedade de conectores

O Apache Flink tem vários conectores comprovados para sistemas populares de mensagens e streaming, armazenamentos de dados, mecanismos de pesquisa e sistemas de arquivos. Alguns exemplos são Apache Kafka, Amazon Kinesis Data Streams, Amazon SQS, Active MQ, Rabbit MQ, NiFi, OpenSearch e Elasticsearch, DynamoDB, HBase e qualquer banco de dados que forneça o cliente JDBC.

Vários níveis de abstrações

O Apache Flink oferece vários níveis de abstração para a interface de programação. Do SQL de streaming de alto nível e da API de tabela, usando abstrações familiares, como tabela, junções e agrupamento. A API DataStream oferece um nível mais baixo de abstração, mas também mais controle, com a semântica de fluxos, janelas e mapeamento. E, finalmente, a API ProcessFunction oferece controle rigoroso sobre o processamento de cada mensagem e controle direto do estado. Todas as interfaces de programação funcionam perfeitamente com conjuntos de dados ilimitados (fluxos) e limitados (tabelas). Diferentes níveis de abstrações podem ser usados na mesma aplicação, como a ferramenta certa para resolver cada problema.

Várias linguagens de programação

O Apache Flink pode ser programado com várias linguagens, desde o SQL de streaming de alto nível até Python, Scala, Java, mas também com outras linguagens JVM, como Kotlin.

Os casos de uso do Apache Flink incluem:

  • Detecção de fraudes, detecção de anomalias, alertas baseados em regras e personalização de UX em tempo real são exemplos de casos de uso de aplicações orientadas por eventos. O Flink é perfeito para todos os casos de uso que exigem o processamento de fluxos de eventos com estado, considerando a evolução ao longo do tempo, detectando padrões complexos ou calculando estatísticas ao longo de janelas de tempo para detectar desvios dos limites esperados.

  • Monitoramento de qualidade, análise ad-hoc de dados em tempo real, análise de clickstreams e avaliação de experimentos de produtos são casos de uso de análise de streaming que o Flink pode oferecer suporte eficiente. Aproveitando o alto nível de abstração da interface de programação de SQL ou API Table, é possível executar a mesma análise em streaming de dados em tempo real e em lotes de dados históricos.

  • Monitorar o sistema de arquivos e gravar dados em um log, materializar um fluxo de eventos em um banco de dados, e criar e refinar incrementalmente um índice de pesquisa são casos de uso com suporte eficiente pelo ETL contínuo. Aproveitando o amplo conjunto de conectores, o Flink pode ler diretamente de vários tipos de armazenamentos de dados, ingerir fluxos de eventos de alteração e até mesmo capturar alterações diretamente. Com a ingestão e o processamento contínuos das alterações e a atualização direta dos sistemas de destino, o Flink pode reduzir o atraso da sincronização de dados para alguns segundos ou menos.

NortonLifeLock

A NortonLifeLock é uma empresa global de segurança cibernética e privacidade na Internet que oferece serviços a milhões de clientes para segurança de dispositivos e identidade e privacidade online para casas e famílias.

O NortonLifeLock oferece um produto VPN como um serviço freemium aos usuários. Portanto, eles precisam impor limites de uso em tempo real para impedir que usuários freemium utilizem o serviço quando seu uso estiver acima do limite. O desafio do NortonLifeLock é fazer isso de forma confiável e acessível.

O NortonLifeLock simplificou a implementação da agregação em nível de usuário e dispositivo adotando o Apache Flink.

Samsung SmartThings

Como subsidiária independente da Samsung, a SmartThings é um dos principais ecossistemas de IoT do mundo, gerando a maneira mais fácil de qualquer pessoa criar uma casa inteligente.

O Samsung SmartThings estava enfrentando problemas, como ter os recursos reservados para aplicações individuais. Isso causou um atraso e uma degradação do desempenho durante o processamento dos dados. Isso acabou levando-os a uma sobrecarga altamente dispendiosa da manutenção das workloads nas operações. Foi necessário rearquitetar a plataforma de dados.

Mudaram do Apache Spark para o Apache Flink.

BT Group

O BT Group é o principal provedor de telecomunicações e redes do Reino Unido e um fornecedor líder de serviços e soluções globais de comunicações, atendendo a clientes em 180 países. Suas principais atividades no Reino Unido incluem fornecimento de telefonia fixa, celular, banda larga e TV (incluindo esportes), além de uma variedade de produtos e serviços em redes fixas e móveis convergentes para consumidores, empresas e clientes do setor público.

O BT precisava de um aplicativo de monitoramento de serviços para apoiar o lançamento do Digital Voice, seu novo produto de consumo que permite chamadas de voz em alta definição em sua rede de banda larga do Reino Unido.

O BT criou um serviço de análise orientado a eventos usando o Apache Flink para ingerir, processar e visualizar dados de serviços.

Autodesk

A Autodesk, líder no fornecimento de software 3D para design e engenharia, quer ir além de criar e fornecer programas. A empresa também quer garantir que seus milhões de usuários globais tenham a melhor experiência na execução do software.

A Autodesk faz software para pessoas que fazem coisas. Atendem a mais de 200 milhões de clientes. Precisavam eliminar silos para encontrar e corrigir os problemas dos clientes com mais rapidez. Queriam uma forma consistente de coletar e medir métricas com uma pequena equipe de operações sem aumentar os custos ou criar restrições de dados.

NHL

A National Hockey League é a segunda mais antiga das quatro principais ligas profissionais de esportes coletivos da América do Norte. Hoje, a NHL consiste em 32 clubes membros, cada um refletindo a composição internacional da Liga, com jogadores de mais de 20 países representados nas listas das equipes.

A NHL estava enfrentando vários desafios técnicos, como determinar os atributos necessários e os métodos de modelagem para prever um evento com grande incerteza e determinar como usar os dados do sensor PPT de transmissão para identificar onde um confronto está ocorrendo, os jogadores envolvidos e a probabilidade de cada jogador vencer o confronto, tudo em centenas de milissegundos.

Aproveitando o Apache Flink, a NHL conseguiu não apenas prever o vencedor de um confronto, mas também criar uma base para resolver vários problemas semelhantes de forma econômica e em tempo real.

Poshmark

A Poshmark é um mercado social líder em itens novos e usados para mulheres, homens, crianças, animais de estimação, casa e muito mais. Sua comunidade de mais de 80 milhões de pessoas nos EUA, Canadá, Austrália e Índia está moldando o futuro das compras para que seja simples, social e sustentável.

A Poshmark tem se concentrado em alcançar um crescimento de primeira linha por meio da personalização e aprimoramento da experiência do usuário. A abordagem inicial de usar o processamento em lotes para personalização e segurança não atendeu às expectativas de melhoria da experiência do cliente.

A Poshmark projetou a personalização em tempo real usando o enriquecimento de dados em tempo real com o Apache Flink.

O Amazon Managed Service for Apache Flink é uma solução totalmente gerenciada para executar aplicações do Apache Flink. O Amazon Managed Service for Apache Flink reduz a complexidade de criar, gerenciar e integrar aplicações do Apache Flink com outros serviços da AWS. Com o Amazon Managed Service for Apache Flink, não há servidores para gerenciar, nem taxa mínima ou custo de configuração. A configuração está altamente disponível por padrão. O estado da aplicação é totalmente gerenciado e armazenado em um back-end de alta durabilidade para tolerância a falhas. A aplicação é controlada com uma API simples, para parar, iniciar, configurar e escalar a aplicação.

O Amazon Managed Service for Apache Flink Studio oferece uma interface de caderno interativa para o Apache Flink. Usando um caderno do Apache Zeppelin, você pode executar código SQL, Python e Scala no Apache Flink, para desenvolvimento e experimentação, inspeção ou visualização de dados.

O Amazon EMR também oferece suporte ao Apache Flink como uma aplicação YARN para que você possa gerenciar recursos junto com a execução de outras aplicações dentro do cluster.

O Apache Flink oferece suporte de forma nativa ao Kubernetes. Você pode auto-hospedar o Apache Flink em um ambiente em contêiner como o Amazon Elastic Kubernetes Service (Amazon EKS) ou gerenciá-lo completamente usando o Amazon Elastic Compute Cloud (Amazon EC2).

Comece a usar o Apache Flink na AWS criando uma conta hoje mesmo.

Próximas etapas na AWS

Cadastre-se para obter uma conta gratuita

Obtenha acesso instantâneo ao nível gratuito da AWS.

Cadastre-se 
Comece a criar no console

Comece a criar no Console de Gerenciamento da AWS.

Faça login