Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Melhores práticas para corretores padrão

Modo de foco
Melhores práticas para corretores padrão - Amazon Managed Streaming for Apache Kafka

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Este tópico descreve algumas práticas recomendadas para seguir ao usar o Amazon MSK. Para obter informações sobre as práticas recomendadas do Replicador do Amazon MSK, consulte Práticas recomendadas para usar o replicador do MSK.

Considerações do lado do cliente

A disponibilidade e o desempenho do seu aplicativo dependem não apenas das configurações do lado do servidor, mas também das configurações do cliente.

  • Configure seus clientes para alta disponibilidade. Em um sistema distribuído como o Apache Kafka, garantir a alta disponibilidade é crucial para manter uma infraestrutura de mensagens confiável e tolerante a falhas. Os corretores ficarão off-line para eventos planejados e não planejados, por exemplo, atualizações, correções, falhas de hardware e problemas de rede. Um cluster do Kafka é tolerante a um agente offline, portanto, os clientes Kafka também devem lidar perfeitamente com o failover do agente. Veja os detalhes completos emMelhores práticas para clientes do Apache Kafka.

  • Certifique-se de que as strings de conexão do cliente incluam pelo menos um agente de cada zona de disponibilidade. Ter vários agentes na string de conexão de um cliente possibilita o failover quando um agente específico estiver offline para uma atualização. Para obter informações sobre como obter uma string de conexão com vários agentes, consulte Obter os agentes de bootstrap para um cluster do Amazon MSK.

  • Execute testes de desempenho para verificar se as configurações do seu cliente permitem que você atinja seus objetivos de desempenho.

Considerações do lado do servidor

Dimensione seu cluster corretamente: número de partições por broker padrão

A tabela a seguir mostra o número recomendado de partições (incluindo réplicas líder e seguidora) por agente padrão. O número recomendado de partições não é imposto e é uma prática recomendada para cenários em que você está enviando tráfego por todas as partições de tópicos provisionadas.

Tamanho do agente Número recomendado de partições (incluindo partições líderes e seguidoras) por agente Número máximo de partições que suportam operações de atualização
kafka.t3.small 300 300
kafka.m5.large ou kafka.m5.xlarge 1000 1500
kafka.m5.2xlarge 2000 3000
kafka.m5.4xlarge, kafka.m5.8xlarge, kafka.m5.12xlarge, kafka.m5.16xlarge ou kafka.m5.24xlarge 4000 6000
kafka.m7g.large ou kafka.m7g.xlarge 1000 1500
kafka.m7g.2xlarge 2000 3000
kafka.m7g.4xlarge, kafka.m7g.8xlarge, kafka.m7g.12xlarge ou kafka.m7g.16xlarge 4000 6000

Se você tem casos de uso de partição alta e baixa taxa de transferência em que tem um número maior de partições, mas não está enviando tráfego para todas as partições, você pode empacotar mais partições por agente, desde que tenha realizado testes e testes de desempenho suficientes para validar se o cluster permanece íntegro com o maior número de partições. Se o número de partições por agente exceder o valor máximo permitido e seu cluster ficar sobrecarregado, você será impedido de realizar as seguintes operações:

  • Atualizar a configuração do cluster

  • Atualizar o cluster para um tamanho de agente menor

  • Associe um AWS Secrets Manager segredo a um cluster que tenha autenticação SASL/SCRAM

Um grande número de partições também pode resultar na falta de métricas do Kafka na coleta de dados do Prometheus. CloudWatch

Para obter orientações sobre como escolher o número de partições, consulte Apache Kafka Supports 200K Partitions Per Cluster. Também recomendamos que você execute seu próprio teste para determinar o tipo certo para os agentes. Para obter mais informações sobre os diferentes tamanhos de agentes, consulte Tipos de corretores Amazon MSK.

Dimensione seu cluster corretamente: número de corretores padrão por cluster

Para determinar o número certo de corretores padrão para seu cluster provisionado pelo MSK e entender os custos, consulte a planilha de dimensionamento e preços do MSK. Essa planilha fornece uma estimativa para o dimensionamento de um cluster provisionado pelo MSK e os custos associados do Amazon MSK em comparação com um cluster Apache Kafka similar, autogerenciado e baseado no Apache Kafka. EC2 Para obter mais informações sobre os parâmetros de entrada na planilha, passe o mouse sobre as descrições dos parâmetros. As estimativas fornecidas por esta planilha são conservadoras e fornecem um ponto de partida para um novo cluster provisionado pelo MSK. O desempenho, o tamanho e os custos do cluster dependerão do seu caso de uso e recomendamos que você os verifique com testes reais.

Para entender como a infraestrutura subjacente afeta o desempenho do Apache Kafka, consulte Melhores práticas para dimensionar corretamente seus clusters do Apache Kafka para otimizar desempenho e custo no blog de Big Data. AWS A postagem do blog fornece informações sobre como dimensionar seus clusters para atender aos requisitos de throughput, disponibilidade e latência. Ele também fornece respostas a perguntas, como quando você deve aumentar ou reduzir a escala, e orientação sobre como verificar continuamente o tamanho dos seus clusters de produção. Para obter informações sobre clusters baseados em armazenamento hierárquico, consulte Melhores práticas para executar cargas de trabalho de produção usando o armazenamento hierárquico do Amazon MSK.

Otimizar o throughput do cluster para instâncias m5.4xl, m7g.4xl ou maiores

Ao usar instâncias m5.4xl, m7g.4xl ou maiores, você pode otimizar a taxa de transferência do cluster provisionado MSK ajustando as configurações num.io.threads e num.network.threads.

Num.io.threads é o número de threads que um agente padrão usa para processar solicitações. Adicionar mais threads, até o número de núcleos de CPU compatível com o tamanho da instância, pode ajudar a melhorar o throughput do cluster.

Num.network.threads é o número de threads que o corretor padrão usa para receber todas as solicitações recebidas e retornar respostas. Os threads de rede colocam as solicitações recebidas em uma fila de solicitações para processamento por io.threads. Definir num.network.threads para a metade do número de núcleos de CPU compatível com o tamanho da instância permite o uso total do novo tamanho de instância.

Importante

Não aumente num.network.threads sem antes aumentar num.io.threads, pois isso pode causar congestionamento relacionado à saturação da fila.

Configurações recomendadas
Tamanho da instância Valor recomendado para num.io.threads Valor recomendado para num.network.threads

m5.4xl

16

8

m5.8xl

32

16

m5.12xl

48

24

m5.16xl

64

32

m5.24xl

96

48

m7g.4xlarge

16

8

m7g.8xlarge

32

16

m7g.12xlarge

48

24

m7g.16xlarge

64

32

Use o Kafka mais recente AdminClient para evitar problemas de incompatibilidade de ID de tópico

O ID de um tópico é perdido (Erro: não corresponde ao ID do tópico para partição) quando você usa uma AdminClient versão do Kafka inferior à 2.8.0 com o sinalizador para aumentar ou reatribuir partições de tópico --zookeeper para um cluster provisionado pelo MSK usando a versão 2.8.0 ou superior do Kafka. Observe que o sinalizador --zookeeper ficou obsoleto no Kafka 2.5 e foi removido desde o Kafka 3.0. Consulte Atualização para a versão 2.5.0 de qualquer versão entre 0.8.x e 2.4.x.

Para evitar incompatibilidade de ID de tópico, use um cliente do Kafka versão 2.8.0 ou superior para operações administrativas do Kafka. Como alternativa, clientes 2.5 e superiores podem usar o sinalizador --bootstrap-servers em vez do sinalizador --zookeeper.

Criar clusters altamente disponíveis

Use as recomendações a seguir para que seus clusters provisionados pelo MSK possam estar altamente disponíveis durante uma atualização (como quando você está atualizando o tamanho do agente ou a versão do Apache Kafka, por exemplo) ou quando o Amazon MSK estiver substituindo um agente.

  • Configure um cluster com três zonas de disponibilidade.

  • Certifique-se de que o Replication factor (RF – Fator de replicação) seja pelo menos 3. Observe que um RF de 1 pode resultar em partições offline durante uma atualização contínua; e um RF de 2 pode resultar em perda de dados.

  • Defina réplicas mínimas em sincronização (minISR) para, no máximo, RF - 1. Uma minISR igual ao RF pode impedir a produção no cluster durante uma atualização sem interrupção. Uma minISR de 2 permite que tópicos replicados de três vias estejam disponíveis quando uma réplica estiver offline.

Monitorar uso da CPU

O Amazon MSK recomenda veementemente que você mantenha a utilização total da CPU de seus agentes (definida como CPU User + CPU System) abaixo de 60%. Quando você tiver ao menos 40% da CPU total do seu cluster disponível, o Apache Kafka poderá redistribuir a carga da CPU entre os agentes no cluster quando necessário. Por exemplo, isso é necessário quando o Amazon MSK detecta e se recupera de uma falha do agente. Nesse caso, o Amazon MSK realiza a manutenção automática, como a aplicação de patches. Outro exemplo é quando um usuário solicita uma alteração do tamanho do agente ou um upgrade de versão. Nesses dois casos, o Amazon MSK implanta fluxos de trabalho contínuos que colocam um agente offline por vez. Quando os agentes com partições principais ficam offline, o Apache Kafka reatribui a liderança da partição para redistribuir o trabalho para outros agentes no cluster. Ao seguir essa prática recomendada, você pode garantir a disponibilidade suficiente de CPU em seu cluster para tolerar eventos operacionais como esses.

Você pode usar a matemática CloudWatch métrica da Amazon para criar uma métrica composta que sejaCPU User + CPU System. Defina um alarme que seja acionado quando a métrica composta atingir uma utilização média de 60% da CPU. Quando esse alarme for acionado, escale o cluster usando uma das seguintes opções:

  • Opção 1 (recomendada): atualize o tamanho do agente para o tamanho maior seguinte. Por exemplo, se o tamanho atual for kafka.m5.large, atualize o cluster para usar kafka.m5.xlarge. Lembre-se de que, ao atualizar o tamanho do agente no cluster, o Amazon MSK coloca os agentes offline de forma contínua e reatribui temporariamente a liderança da partição para outros agentes. Normalmente uma atualização de tamanho leva de 10 a 15 minutos por agente.

  • Opção 2: se houver tópicos com todas as mensagens ingeridas de produtores que usam gravações de ida e volta (em outras palavras, as mensagens não recebem chaves e a ordenação não é importante para os consumidores), expanda seu cluster adicionando agentes. Também adicione partições aos tópicos existentes com o maior throughput. Em seguida, use kafka-topics.sh --describe para garantir que as partições recém-adicionadas sejam atribuídas aos novos agentes. O principal benefício dessa opção em comparação com a anterior é que você pode gerenciar recursos e custos de modo mais granular. Além disso, você pode usar essa opção se a carga da CPU exceder significativamente 60%, pois essa forma de escalabilidade normalmente não resulta em aumento de carga nos agentes existentes.

  • Opção 3: expanda seu cluster provisionado pelo MSK adicionando agentes e, em seguida, reatribua as partições existentes usando a ferramenta de reatribuição de partições chamada. kafka-reassign-partitions.sh No entanto, se você usar essa opção, o cluster precisará gastar recursos para replicar dados de um agente para outro após a reatribuição das partições. Em comparação com as duas opções anteriores, inicialmente isso pode aumentar significativamente a carga no cluster. Como resultado, o Amazon MSK não recomenda usar essa opção quando a utilização da CPU estiver acima de 70%, pois a replicação causará carga adicional da CPU e tráfego de rede. O Amazon MSK recomenda usar essa opção somente se as duas opções anteriores não forem viáveis.

Outras recomendações:

  • Monitore a utilização total da CPU por agente como um indicador da distribuição de carga. Se os agentes tiverem uma utilização consistentemente desigual da CPU, isso pode ser um sinal de que a carga não está sendo distribuída uniformemente no cluster. Recomendamos o uso do Cruise Control para gerenciar continuamente a distribuição de carga por meio da atribuição de partições.

  • Monitore a latência da produção e do consumo. A latência da produção e do consumo pode aumentar linearmente com a utilização da CPU.

  • Intervalo de extração do JMX: se você habilitar o monitoramento aberto com o recurso Prometheus, recomenda-se usar um intervalo de extração de 60 segundos ou mais (scrape_interval: 60s) para a configuração do host do Prometheus (prometheus.yml). A redução do intervalo de coleta pode levar a um alto uso da CPU em seu cluster.

Monitorar o espaço em disco

Para evitar a falta de espaço em disco para mensagens, crie um CloudWatch alarme que observe a KafkaDataLogsDiskUsed métrica. Quando o valor dessa métrica atingir ou exceder 85%, execute uma ou mais das seguintes ações:

Para obter informações sobre como configurar e usar alarmes, consulte Usando alarmes da Amazon CloudWatch . Para obter uma lista completa das métricas do Amazon MSK, consulte Monitore um cluster provisionado do Amazon MSK.

Ajustar os parâmetros de retenção de dados

Consumir mensagens não as remove do log. Para liberar espaço em disco regularmente, é possível especificar explicitamente um período de retenção, ou seja, por quanto tempo as mensagens permanecem no log. Também é possível especificar um tamanho do log de retenção. Quando o período de retenção ou o tamanho do log de retenção são atingidos, o Apache Kafka começa a remover segmentos inativos do log.

Para especificar uma política de retenção no nível do cluster, defina um ou mais dos seguintes parâmetros: log.retention.hours, log.retention.minutes, log.retention.ms ou log.retention.bytes. Para obter mais informações, consulte Configurações personalizadas do Amazon MSK.

Também é possível especificar parâmetros de retenção no nível do tópico:

  • Para especificar um período de retenção por tópico, use o comando a seguir.

    kafka-configs.sh --bootstrap-server $bs --alter --entity-type topics --entity-name TopicName --add-config retention.ms=DesiredRetentionTimePeriod
  • Para especificar um tamanho de log de retenção por tópico, use o comando a seguir.

    kafka-configs.sh --bootstrap-server $bs --alter --entity-type topics --entity-name TopicName --add-config retention.bytes=DesiredRetentionLogSize

Os parâmetros de retenção especificados no nível do tópico têm precedência sobre os parâmetros no nível do cluster.

Como acelerar a recuperação de logs após um desligamento inadequado

Após um desligamento inadequado, um agente pode demorar um pouco para reiniciar, pois registra a recuperação em log. Por padrão, o Kafka usa apenas um thread por diretório de log para realizar essa recuperação. Por exemplo, se você tiver milhares de partições, a conclusão da recuperação do log pode levar horas. Para acelerar a recuperação do log, recomenda-se aumentar o número de threads usando a propriedade de configuração num.recovery.threads.per.data.dir. É possível defini-la com o número de núcleos de CPU.

Monitorar a memória do Apache Kafka

Recomendamos que você monitore a memória que o Apache Kafka usa. Caso contrário, o cluster pode ficar indisponível.

Para determinar quanta memória o Apache Kafka usa, você pode monitorar a métrica HeapMemoryAfterGC. HeapMemoryAfterGC é o percentual da memória total da pilha que está em uso após a coleta de resíduos. Recomendamos que você crie um CloudWatch alarme que atue quando HeapMemoryAfterGC aumentar acima de 60%.

As etapas que você pode seguir para diminuir o uso da memória variam. Elas dependem da forma como você configura o Apache Kafka. Por exemplo, se você usar a entrega de mensagens transacionais, poderá diminuir o valor transactional.id.expiration.ms na configuração do Apache Kafka de 604800000 ms para 86400000 ms (de 7 dias para 1 dia). Isso diminui o espaço ocupado na memória de cada transação.

Não adicionar agentes que não são do MSK

Para clusters provisionados pelo MSK ZooKeeper baseados, se você usar ZooKeeper comandos do Apache para adicionar agentes, esses agentes não serão adicionados ao seu cluster provisionado pelo MSK e seu Apache conterá informações incorretas sobre o cluster. ZooKeeper Isso pode resultar em perda de dados. Para obter as operações de cluster provisionadas do MSK suportadas, consulte. Principais recursos e conceitos do Amazon MSK

Ativar a criptografia em trânsito

Para obter informações sobre a criptografia em trânsito e como ativá-la, consulte Criptografia do Amazon MSK em trânsito.

Reatribuir partições

Para mover partições para diferentes agentes no mesmo cluster provisionado pelo MSK, você pode usar a ferramenta de reatribuição de partições chamada. kafka-reassign-partitions.sh Recomendamos que você não reatribua mais de 10 partições em uma única kafka-reassign-partitions chamada para operações seguras. Por exemplo, após adicionar novos agentes para expandir um cluster, ou mover partições a fim de remover agentes, você pode rebalancear esse cluster reatribuindo partições aos novos agentes. Para obter informações sobre como adicionar agentes a um cluster provisionado pelo MSK, consulte. Expandir o número de agentes em um cluster do Amazon MSK Para obter informações sobre como remover agentes de um cluster provisionado pelo MSK, consulte. Remover um agente de um cluster do Amazon MSK Para obter informações sobre a ferramenta de reatribuição de partições, consulte Expanding your cluster na documentação do Apache Kafka.

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.