Escolar Documentos
Profissional Documentos
Cultura Documentos
3 anos atrás
Podemos justificar essa necessidade já que o mundo tem gerado um volume cada vez
maior de informações. Um cenário comum é que estes dados, uma vez gerados,
precisam ser transportados para diversas aplicações.
Por exemplo, quando fazemos uma compra com cartão de crédito a operadora precisa
avisar várias aplicações diferentes para contabilizar a compra, os benefícios e até a
análise contra fraudes.
Neste caso, é desejável que cada aplicação seja responsável pela implementação das
regras do negócio. E apenas isso. Uma aplicação não deveria se preocupar com a
entrega
Utilizamos ou captura
cookies dossemelhantes
e tecnologias dados. para melhorar sua navegação. Ao continuar navegando
OK
você concorda com a nossa Política de Privacidade.
Este é um problema complexo envolvendo data streaming.
Conteúdo [ ocultar ]
1 O que é Data streaming
2 Sistema de Mensagem
3 O que é Apache Kafka
4 Características do Apache Kafka
5 Ferramentas similares ao Apache Kafka
6 Arquitetura do Apache Kafka
6.1 Acesso sequencial no disco
7 Caso de Uso do Apache Kafka
7.1 TOPICO_NOVA_VENDA
7.2 TOPICO_NOVO_USUARIO
7.3 TOPICO_RECLAMACAO
7.4 TOPICO_DEVOLUCAO
7.5 TOPICO_NOTIFICA_USUARIO
8 Ferramentas complementares
9 Apache Kafka e microservices
10 Conclusão sobre o Apache Kafka
Sua principal característica é que os dados não tem limites definidos, assim, não é
possível dizer quando começa ou acaba o fluxo (stream).
Utilizamos cookies e tecnologias semelhantes para melhorar sua navegação. Ao continuar navegando
você concorda com a nossa Política de Privacidade.
Uma abordagem diferente é o processamento em bloco, batch, ou off-line, na qual
blocos de dados são processados em janelas de tempo de horas ou dias.
Muitas vezes o batch é um processo que roda a noite, consolidando os dados daquele
dia. Há casos de janelas de tempo de uma semana ou mesmo de um mês, gerando
relatórios desatualizados.
Sistema de Mensagem
O sistema de mensagens permite desacoplar a geração dos dados do seu
processamento de forma assíncrona, assim, uma aplicação pode continuar funcionando
sem esperar a outra terminar seu processamento.
Outra vantagem é que essa técnica tem o potencial de diminuir a necessidade de leitura,
por exemplo, no banco de dados.
Sistemas de mensagem podem ser usados em qualquer área. Viagem, finanças, logística,
mapas, transporte público e varejo.
Neste artigo veremos o que é o Apache Kafka e como podemos nos beneficiar com um
sistema de mensagens para criar soluções de streaming.
Criado originalmente pelo LinkedIn, o Kafka é baseado em logs, algumas vez chamado de
write-ahead logs, commit logs ou até mesmo transaction logs.
Um uso mais recente do Kafka é o processo de ETL (Extract, Transform and Load), que
copia os registros de um banco de dados para outro, geralmente de uma base
transacional (OLTP) para uma base analítica (OLAP).
Utilizamos cookies e tecnologias semelhantes para melhorar sua navegação. Ao continuar navegando
você concorda com a nossa Política de Privacidade.
Alguns autores acreditam que o futuro do ETL passa pelo Kafka, porque as ferramentas
de ETL tendem a ser complexas, e o Kafka pode ajudar a diminuir a dificuldade.
Nome do tópico: fila na qual a mensagem será gravada. Pode ser comparado a
uma tabela do banco de dados;
Partição: subdivisão do tópico, a partição é um recurso para ajudar a balancear a
carga;
Timestamp: os registros são ordenados pela hora de gravação;
Chave: opcional, pode ser usada em cenários avançados;
Valor: a informação que se pretende transferir. O ideal é que os dados usem um
formato conhecido, como JSON ou XML.
Características do Apache Kafka
Os sistemas de mensagem podem ser de dois tipos: point-to-point e publish-subscribe.
O Apache Kafka é do segundo tipo, no qual uma aplicação que publica (publish) e uma
aplicação que se inscreve (subscribe) para receber as mensagens.
O tempo entre publicar e receber a mensagem pode ser de milissegundos, assim, uma
solução Kafka tem baixa latência.
A arquitetura do Apache Kafka, vista com mais detalhe na seção a seguir, combina
diversas outras características, como:
ActiveMQ;
RabbitMQ.
Eles têm diferenças e semelhanças e cada um tem sido usado em cenários distintos,
com suas vantagens e desvantagens.
Um cluster Kafka é composto por vários brokers. Um broker é um servidor Kafka que
recebe mensagens dos producers e as grava no disco. Cada broker gerencia uma lista de
tópicos e cada tópico é dividido em diversas partições.
Utilizamos cookies e tecnologias semelhantes para melhorar sua navegação. Ao continuar navegando
você concorda com a nossa Política de Privacidade.
Figura 2: Visão geral dos produtores, broker e consumidores.
Contudo, o Kafka faz acesso sequencial e, neste caso, o disco é mais eficiente. Há
outras ferramenta de big data que trabalham da mesma forma, como por exemplo o
HDFS.
No acesso sequencial o disco sabe onde começa e termina o bloco de dados, enquanto
que no acesso aleatório o disco precisa procurar e se mover para a posição dos blocos
de dados.
Apache Kafka producer
Producer
Um producer envia mensagens simultaneamente para vários tópicos. Da mesma forma,
um consumer lê mensagens de vários tópicos simultaneamente.
Isso garante a baixa latência citada anteriormente, porque tudo acontece ao mesmo
tempo. Aqui, o Zookeeper é o responsável por indicar os brokers para cada
producer/consumer.
Consumer
O consumer mantém o controle da última mensagem lida por meio de uma propriedade
chamada offset. Assim, é possível reprocessar um fluxo de dados, se ele ainda estiver
disponível. Esse controle é flexível, mas ao mesmo tempo traz um certo nível de
complexidade.
A configuração padrão do Apache Kafka tem ótima performance, mesmo com hardware
limitado.
Ainda assim é necessário otimizar o cluster quando temos grandes cargas de dados.
Para escalar usamos várias estratégias, geralmente testando as combinações de
configuração, por exemplo, alterando o número de produtores, consumidores e tópicos.
O caso de uso selecionado para mostrar o funcionamento de uma solução Kafka será a
integração entre um sistema de vendas, o log de navegação do usuário no site, o data
lake, o analytics, o BI (Business Intelligence) e a ferramenta de visualização de dados.
A ideia é explorar várias possibilidades, mesmo que nem todas sejam usadas na sua
realidade. Entre cada um dos sistemas está o cluster do Apache Kafka, que funciona
como o integrador dos dados em tempo real.
Vamos criar diversos tópicos para alimentar cada uma das fontes de dados da solução,
registrando desde a navegação no site até a conclusão da venda. Os tópicos do Kafka
Utilizamos cookies e tecnologias semelhantes para melhorar sua navegação. Ao continuar navegando
para atender a esta demanda são:
você concorda com a nossa Política de Privacidade.
TOPICO_NAVEGACAO_USUARIO: o servidor web notifica cada nova navegação do
usuário;
TOPICO_NOVA_VENDA: o e-commerce notifica cada nova venda;
TOPICO_NOVO_USUARIO: o e-commerce notifica cada novo usuário;
TOPICO_RECLAMACAO: o e-commerce notifica cada nova reclamação;
TOPICO_DEVOLUCAO: o e-commerce notifica cada nova devolução de produto;
TOPICO_NOTIFICA_USUARIO: o analytics notifica o usuário;
TOPICO_NOVA_VENDA
O TOPICO_NOVA_VENDA receberá uma mensagem cada vez que uma vez for realizada.
Com o suporte do Kafka Streams esta mensagem será transformada em um registro de
banco de dados para ser gravado no BI. Isso garante atualização em tempo real do BI.
TOPICO_NOVO_USUARIO
O TOPICO_NOVO_USUARIO receberá uma mensagem para cada novo usuário
Utilizamos cookies e tecnologias semelhantes para melhorar sua navegação. Ao continuar navegando
cadastrado. Essa informação será usada futuramente pelo analytics, por exemplo, para
você concorda com a nossa Política de Privacidade.
receber ofertas personalizadas a partir do seu histórico de navegação.
TOPICO_RECLAMACAO
O TOPICO_RECLAMACAO receberá uma mensagem para cada nova reclamação. Essa
informação será usada também pelo analytics, para minimizar o customer churn, que é o
percentual de clientes que param de usar seus produtos. É sempre bom saber o motivo
de insatisfação dos clientes.
TOPICO_DEVOLUCAO
O TOPICO_DEVOLUCAO receberá uma mensagem para cada devolução de produto, uma
informação importante para avaliar a qualidade dos produtos e a satisfação do cliente.
TOPICO_NOTIFICA_USUARIO
Opcionalmente, todos os tópicos podem gravar os dados no S3, criando assim um data
lake. Esta é uma solução mais complexa que envolve sistemas de big data e machine
learning. Algumas empresas optam por essa abordagem de gravar os dados originais
para análise futura.
Ferramentas complementares
O Apache Kafka é responsável pela transferência dos dados entre aplicações, mas não é
suficiente para construir uma solução completa. Por isso, são necessárias outras
ferramentas para as tarefas que o Kafka não faz, como o CDC.
O CDC (Change Data Capture), como o nome sugere, é uma categoria de software que
captura as mudanças em um banco de dados e pode ser usado em conjunto com o
Kafka para entrega de dados em tempo real, como uma alternativa ao batch.
Utilizamos cookies e tecnologias semelhantes para melhorar sua navegação. Ao continuar navegando
você concorda com a nossa Política de Privacidade.
O CDC monitora as alterações no banco, que são entregues ao Kafka continuamente, o
que minimiza o impacto na rede e na performance do banco. Outras ferramentas que
valem menção:
Kafka Streams: biblioteca do Kafka que pode ser usada no lugar da API de
producer/consumer para processamento das mensagens em tempo real;
KSQL: mecanismo de SQL para o Kafka. Permite fazer consultas no stream de
dados;
Kafka Connect: componente do Kafka para conexão com sistemas externos como
bancos de dados (SQL ou NoSQL) ou sistema de arquivo;
Spark Streaming: extensão do Apache Spark para processamento de streaming;
Apache Flume: serviço de coleta e agregação de dados;
Spring for Apache Kafka: permite o desenvolvimento de aplicações Kafka com as
facilidades do Spring;
Debezium: plataforma de CDC escalável, moderna e distribuída com suporte a
diversos bancos de dados.
Apache Kafka e microservices
Os microservices tem usado cada vez mais o Apache Kafka. Tradicionalmente, a
comunicação entre microservices é feita pela própria API REST.
Tem sido usado principalmente para integração de sistemas em tempo real e, em função
de sua flexibilidade, pode ser usado para outras tarefas como ETL.
Existem diversas ferramentas integradas ao Kafka com funcionalidades complementares,
como o Kafka Streams, Spark, Flume e Debezium. Com estas ferramentas é possível criar
sistemas em tempo real, ou até mesmo transformar processamento batch em tempo
real.
Com todas estas vantagens, o Apache Kafka desponta como uma ferramenta importante
nesta nova era da análise de dados para ajudar a resolver o problema da complexidade
da transferência de dados entre aplicações.
Utilizamos cookies e tecnologias semelhantes para melhorar sua navegação. Ao continuar navegando
você concorda com a nossa Política de Privacidade.
Marco Reis
Engenheiro de software com experiência em Java, Big Data, Cloud, Microservices,
Utilizamos cookies e tecnologias semelhantes para melhorar sua navegação. Ao continuar navegando
você concorda com a nossa Política de Privacidade.
Utilizamos cookies e tecnologias semelhantes para melhorar sua navegação. Ao continuar navegando
você concorda com a nossa Política de Privacidade.
Categorias
Carreira de programador
Back-end
Full stack
Front-end
Big Data
Mobile
DevOps
Gestão de TI
Scrum Master
Leituras
Recomendadas
BACK-END
Email *
Inscreva-se
Utilizamos cookies e tecnologias semelhantes para melhorar sua navegação. Ao continuar navegando
você concorda com a nossa Política de Privacidade.