Kafka (pronuncia-se Kafka) é uma plataforma de streaming de código aberto e um sistema de corretagem de mensagens originalmente desenvolvido pelo LinkedIn e se tornou um projeto de alto nível da Apache Software Foundation em 2011. Kafka foi projetado para processamento de fluxo de dados de alto rendimento, durabilidade e escalabilidade.
Aqui estão alguns dos principais recursos e conceitos do Kafka:
Message Broker : Kafka é um corretor de mensagens distribuídas de alto desempenho que permite que aplicativos publiquem e assinem fluxos de mensagens. Ele pode lidar com fluxos de dados em grande escala em tempo real e entregar mensagens a vários consumidores.
Distribuído : Kafka é um sistema distribuído que permite que os dados sejam distribuídos em vários servidores para alta disponibilidade e tolerância a falhas. Ele usa partições para expandir horizontalmente os recursos de armazenamento e processamento de dados.
Durabilidade : Kafka persiste mensagens em disco para garantir que as mensagens não sejam perdidas durante a entrega. Isso permite que o Kafka seja usado para armazenamento e registro de dados confiáveis.
Modelo Publicar-Assinar : Kafka usa um modelo publicar-assinar onde os produtores publicam mensagens em tópicos e os consumidores assinam esses tópicos para receber mensagens. Este modelo oferece suporte a vários consumidores assinando o mesmo tópico em paralelo.
Partições e réplicas : um tópico pode ser dividido em diversas partições e cada partição pode ter diversas réplicas em diversos servidores. Isso fornece escalabilidade e tolerância a falhas, garantindo alta disponibilidade de dados.
Alto rendimento : o Kafka foi projetado para lidar com fluxos de dados em grande escala, com alto rendimento e baixa latência, adequado para necessidades de processamento de dados em tempo real.
Streaming : Kafka não é usado apenas para mensagens, mas também permite que aplicativos façam streaming para realizar cálculos, transformações e análises em tempo real em fluxos de dados.
Ecossistema : O ecossistema Kafka inclui várias ferramentas e bibliotecas, como estruturas de processamento de fluxo (como Apache Kafka Streams), conectores (como Kafka Connect), ferramentas de monitoramento e ferramentas de gerenciamento, facilitando a integração e a operação.
Kafka pode ser útil em vários usos, incluindo processamento de log em tempo real, aplicativos orientados a eventos, análise de dados em tempo real, sistemas de monitoramento e alerta e muito mais. Devido à sua escalabilidade, confiabilidade e desempenho, Kafka se tornou uma das principais infraestruturas de dados de muitas grandes empresas e empresas de Internet. Possui amplas aplicações em processamento de big data e análise de fluxo de dados em tempo real.
Conceitos básicos e arquitetura:
- O que é Apache Kafka? Quais são suas principais características?
Apache Kafka é um sistema de corretagem de mensagens distribuídas de código aberto para processamento de fluxo de dados de alto rendimento. Possui alta disponibilidade, durabilidade, escalabilidade e baixa latência e é frequentemente usado para construir plataformas de streaming de dados em tempo real. - Quais são os principais componentes do Kafka? Por favor, explique o que eles fazem.
Os principais componentes do Kafka incluem:
Produtor: Responsável pela publicação de mensagens nos tópicos.
Tópico: um canal lógico de mensagens, usado para organizar e classificar mensagens.
Partição: Cada tópico pode ser dividido em múltiplas partições para expansão horizontal e processamento paralelo.
Consumidor: inscreva-se em um tópico e processe mensagens.
Grupo de Consumidores: Um grupo de consumidores que processam conjuntamente mensagens de tópico.
Broker: nó do servidor Kafka, armazena e entrega mensagens. - O que são tópicos e partições do Kafka? Qual é a relação entre eles?
Um tópico é um canal lógico para mensagens e uma partição é o fragmento físico de um tópico. O particionamento permite que as mensagens sejam distribuídas horizontalmente em vários servidores, melhorando a escalabilidade e a tolerância a falhas. Cada partição possui um número exclusivo e pode ser processada em paralelo por vários consumidores. - Como Kafka garante a entrega confiável de mensagens? Por favor, explique o conceito de ISR (Réplicas In-Sync).
Kafka garante confiabilidade replicando mensagens para réplicas de múltiplas partições. ISR refere-se a uma cópia de partição sincronizada com a partição primária. Somente cópias de partição no ISR podem participar da leitura e gravação de mensagens. Se uma réplica ficar fora de sincronia com a partição primária, ela será removida do ISR até que seja recuperada novamente. - Quais são os produtores e consumidores de mensagens de Kafka? Qual é a sua função?
Os produtores são componentes responsáveis pela publicação de mensagens em tópicos, enquanto os consumidores assinam tópicos e processam mensagens. Os produtores enviam mensagens para Kafka e os consumidores leem mensagens de Kafka. Eles podem ser diferentes aplicativos usados para conseguir a dissociação da publicação e do processamento de mensagens. Os consumidores podem assinar um ou mais tópicos e trabalhar em grupos de consumidores para obter alta disponibilidade e balanceamento de carga.
Uso e configuração:
- Como criar um tópico no Kafka? Quais ferramentas podem ser usadas para gerenciar tópicos Kafka?
- Como o produtor de mensagens do Kafka envia mensagens para tópicos e partições específicas?
- O que é o Grupo de Consumidores Kafka? O que isso faz? Como permitir que vários consumidores compartilhem mensagens sobre um tópico?
Um grupo de consumidores é um grupo de consumidores que assinam o mesmo tópico. Cada mensagem será processada apenas por um consumidor do grupo para garantir o balanceamento de carga. Se você deseja implementar vários consumidores compartilhando mensagens de um tópico, certifique-se de que eles usem o mesmo ID de grupo de consumidores. Kafka atribui automaticamente partições de um tópico a diferentes consumidores para obter processamento paralelo. - Qual é a política de retenção de mensagens do Kafka? Como configurar o prazo de validade das mensagens?
- Como Kafka lida com as falhas do consumidor? Quando um consumidor cai, como suas mensagens serão redistribuídas?
Tópicos avançados:
O que é o Kafka Connect? O que isso faz? Você pode dar um exemplo de seu uso?
O que são fluxos Kafka? Qual a diferença entre Kafka Connect e Kafka Consumer?
Qual é a estratégia de particionamento de mensagens do produtor Kafka? Quais estratégias de particionamento estão disponíveis?
Como Kafka lida com a ordenação de mensagens? Existe alguma ferramenta ou método para garantir a ordem das mensagens?
Quais são os tipos de compactação e compactação de log do Kafka? Quais são suas vantagens e desvantagens?
Desempenho e otimização:
Como otimizar o desempenho do Kafka? Forneça algumas práticas recomendadas para otimização de desempenho.
Como o consumidor de Kafka implementa controle de fluxo e controle de latência ao processar mensagens?
Qual é o rebalanceamento da partição de tópico do Kafka (Rebalance)? Qual é o seu papel no grupo de consumidores?
Qual é o fator de replicação de Kafka? Como escolher o fator de replicação apropriado?
Quais são as vantagens e desvantagens do Kafka em comparação com outros sistemas de fila de mensagens (como RabbitMQ, ActiveMQ)?