【Kafka】Notas de conceito básico do Kafka
Diretório de artigos
1. Dois modos
Como uma fila de mensagens, Kafka tem dois modos:
- modo ponto a ponto
- modelo de publicação/assinatura
1.1 Modo ponto a ponto
Características:
- O consumidor puxa ativamente os dados e limpa a mensagem depois que a mensagem é recebida
1.2 Modo Publicar/Assinar
- Pode haver vários tópicos (navegação, curtidas, favoritos, comentários, etc.)
- Depois que o consumidor consome os dados, os dados não são excluídos
- Cada consumidor é independente um do outro e pode consumir dados
2. Infraestrutura
Infraestrutura do Kafka:
- Para facilitar a expansão e melhorar a taxa de transferência, um tópico é dividido em várias partições (partições)
- Em conjunto com o design da partição, é proposto o conceito de grupo de consumidores. Cada consumidor do grupo consome em paralelo. Uma partição só pode ser consumida por um consumidor do grupo para evitar consumo repetido.
- Para melhorar a disponibilidade, adicione várias cópias para cada partição
- Quem é o líder é registrado no Zookeeper, Kafka2.8.0 e posterior também pode ser configurado para não usar o ZK
- Grupo de consumidores (CG) : um grupo de consumidores que consiste em vários consumidores. Cada consumidor em um grupo de consumidores é responsável por consumir dados de diferentes partições. Para evitar o consumo repetido de mensagens detalhadas, uma partição só pode ser consumida por um consumidor do grupo; os grupos de consumidores não afetam uns aos outros . Todos os consumidores pertencem a um grupo de consumidores, ou seja, um grupo de consumidores é um assinante lógico.
- Corretor : Um servidor Kafka é um corretor. Um cluster consiste em vários agentes. Um corretor pode conter vários tópicos.
- Tópico : Pode ser entendido como uma fila, e tanto produtores quanto consumidores estão diante de um tópico .
- Partição : Para obter escalabilidade, um tópico muito grande pode ser distribuído para vários corretores (ou seja, servidores), um tópico pode ser dividido em várias partições e cada partição é uma fila ordenada .
- Réplica : cópia. Cada partição de um tópico possui várias cópias, um Líder e vários Seguidores.
- Líder : O "primário" de várias cópias de cada partição, o objeto para o qual o produtor envia dados e o objeto para o qual o consumidor consome dados são todos líderes.
- Seguidor : O "escravo" em várias cópias de cada partição, sincroniza os dados do Líder em tempo real e mantém a sincronização com os dados do Líder. Quando o Líder falha, um Seguidor se tornará o novo Líder.
3. Operação da linha de comando do tópico
3.1 Ver as operações do Tópico
① Veja os parâmetros de comando do tópico da operação
#在kafka的目录下
bin/kafka-topics.sh
Depois de entrar na linha de comando, o console lista todos os parâmetros e seus significados:
Resumido da seguinte forma:
3.2 Criar Tópico
②Crie um tópico nomeado primeiro, o número de partições deve ser 1 e o cluster tem 3 nós, então a cópia da partição é definida como 3
bin/kafka-topics.sh --bootstrap-server node1:9092 --create --partitions 1 --replication-factor 3 --topic first
3.3 Ver todos os tópicos
③ Veja todos os tópicos no servidor atual
bin/kafka-topics.sh --bootstrap-server node1:9092 --list
3.4 Ver Detalhes do Tópico
④ Veja os detalhes do primeiro tema
bin/kafka-topics.sh --bootstrap-server node1:9092 --describe --topic first
Replicas:1,2,0
Indica que existem réplicas em três nósLeader:1
Indica que a cópia do Líder está armazenada no nó de codinome 1 e as outras duas lojas são cópias do SeguidorIsr:1,2,0
Representa uma cópia síncrona, a cópia seguidora sincroniza os dados da cópia líder e o ISR é um conjunto de cópias em Kafka para garantir consistência e confiabilidade dos dados
3.5 Modifique o número de partições
⑤ Nota: o número de partições só pode ser aumentado, mas não diminuído
bin/kafka-topics.sh --bootstrap-server node1:9092 --alter --partitions 3 --topic first
Verifique os detalhes do primeiro tema novamente após a modificação:
3.6 Excluir Tópico
⑥Excluir primeiro tema
bin/kafka-topics.sh --bootstrap-server node1:9092 --delete --topic first
4. Operação da linha de comando do produtor
4.1 Operação da linha de comando do produtor
Exibir parâmetros de comando do produtor de operação
bin/kafka-console-producer.sh
4.2 Enviar mensagem para o tópico
bin/kafka-console-producer.sh --bootstrap-server node1:9092 --topic first
Uma mensagem foi enviada para o primeiro tópico hello world
.
5. Operação de linha de comando do consumidor
5.1 Exibir parâmetros de comando do consumidor de operação
bin/kafka-console-consumer.sh
5.2 Consumir mensagens no tópico
Consumir mensagens do primeiro tópico
bin/kafka-console.consumer.sh --bootstrap-server node1:9092 --topic first
Descobrimos que o cursor estava piscando, mas não recebemos nenhuma mensagem, isso porque o kafka lê a mensagem após o script do consumidor ser iniciado por padrão e, se você quiser ler todos os dados (incluindo dados históricos), precisará adicionar --from-beginning
parâmetros
bin/kafka-console-consumer.sh --bootstrap-server node1:9092 --from-beginning --topic first
Desta forma, os dados históricos também são lidos.