Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo fornece dicas de solução de problemas para problemas que você pode encontrar ao usar Hubs de Eventos para Apache Kafka.
Exceção de Servidor Ocupado
Você pode ver as métricas ThrottledRequests devido à restrição de Kafka. Com clientes AMQP, os Hubs de Eventos retornam imediatamente uma exceção de servidor ocupado quando o serviço é limitado. É equivalente a uma mensagem "tente novamente mais tarde". Em Kafka, as mensagens recebidas sofrem atraso antes de serem confirmadas, enquanto as mensagens enviadas terão um atraso na entrega. O comprimento do atraso é retornado em milissegundos como throttle_time_ms na resposta produzir/buscar. Na maioria dos casos, essas solicitações atrasadas não são registradas como métricas ThrottledRequests nos painéis dos Hubs de Eventos. Em vez disso, o valor da throttle_time_ms resposta deve ser usado como um indicador de que a taxa de transferência excedeu a cota provisionada.
Se o tráfego for excessivo, o serviço terá o seguinte comportamento:
- Se o atraso da solicitação de produção exceder o tempo limite da solicitação (request.timeout.ms), os Hubs de Eventos retornarão o código de erro de Violação de Política .
- Se o atraso da solicitação de busca exceder o tempo limite da solicitação, os Hubs de Eventos registrarão a solicitação como com restrição e responderão com um conjunto vazio de registros, sem apresentar um código de erro.
Nenhum registro recebido
Você pode ver os consumidores não recebendo nenhum registro e reequilibrando constantemente. Nesse cenário, os consumidores não obtêm nenhum registro e se reequilibram constantemente. Não há exceção ou erro quando isso acontece, mas os logs de Kafka mostrarão que os consumidores estão presos tentando voltar ao grupo e atribuir partições. Existem algumas causas possíveis:
- Certifique-se de que o seu
request.timeout.msé pelo menos o valor recomendado de 60000 e o seusession.timeout.msé pelo menos o valor recomendado de 30000. Ter essas configurações muito baixas pode causar interrupções de tempo do consumidor, o que resulta em reequilíbrios (que causam mais interrupções de tempo, que provocam mais reequilíbrios e assim por diante) - Se a sua configuração corresponder aos valores recomendados e você ainda estiver vendo um reequilíbrio constante, sinta-se à vontade para abrir um problema (certifique-se de incluir toda a sua configuração no problema para que possamos ajudar a depurar).
Problema de versão do formato de compressão/mensagem
Atualmente, os Hubs de Eventos para Kafka suportam apenas gzip o algoritmo de compressão. Se qualquer outro algoritmo for usado, os aplicativos cliente verão um erro de versão de formato de mensagem (por exemplo, The message format version on the broker does not support the request.).
Se um algoritmo de compactação sem suporte precisar ser usado, compactar seus dados com esse algoritmo específico antes de enviá-los para os corretores e descompactar após o recebimento é uma solução válida. O corpo da mensagem é apenas uma matriz de bytes para o serviço, portanto, a compactação/descompactação do lado do cliente não causará problemas.
ExceçãoDeServidorDesconhecido
Você pode receber um UnknownServerException de bibliotecas de cliente Kafka semelhante ao exemplo a seguir:
org.apache.kafka.common.errors.UnknownServerException: The server experienced an unexpected error when processing the request
Abra um ticket com o suporte da Microsoft. O registo de logs ao nível de depuração e os carimbos de data/hora de exceção no Tempo Universal Coordenado (UTC) são úteis para depurar o problema.
Outros problemas
Verifique os seguintes itens se vir problemas ao usar o Kafka em Hubs de Eventos.
- Firewall bloqueando o tráfego - Certifique-se de que a porta 9093 não está bloqueada pelo firewall.
-
TopicAuthorizationException - As causas mais comuns dessa exceção são:
- Um erro de digitação na cadeia de conexão no arquivo de configuração ou
- Tentando usar Hubs de Eventos para Kafka em um namespace de camada Basic. O recurso Hubs de Eventos para Kafka não é suportado na camada básica.
- Incompatibilidade de versão do Kafka - Os Hubs de Eventos para Ecossistemas Kafka suportam as versões 1.0 e posteriores do Kafka. Alguns aplicativos que usam Kafka versão 0.10 e posterior podem ocasionalmente funcionar devido à compatibilidade com versões anteriores do protocolo Kafka, mas é altamente recomendável não usar versões antigas da API. As versões 0.9 e anteriores do Kafka não suportam os protocolos SASL necessários e não podem se conectar a Hubs de Eventos.
- Codificações estranhas em cabeçalhos AMQP ao consumir com Kafka - ao enviar eventos para um hub de eventos sobre AMQP, todos os cabeçalhos de carga útil AMQP são serializados na codificação AMQP. Os consumidores de Kafka não desserializam os cabeçalhos do AMQP. Para ler valores de cabeçalho, decodifice manualmente os cabeçalhos AMQP. Como alternativa, você pode evitar o uso de cabeçalhos AMQP se souber que está consumindo via protocolo Kafka. Para obter mais informações, consulte este problema do GitHub.
- Autenticação SASL - Fazer com que sua estrutura coopere com o protocolo de autenticação SASL exigido pelos Hubs de Eventos pode ser mais difícil do que parece. Veja se você pode solucionar problemas de configuração usando os recursos da sua estrutura na autenticação SASL.
Limites
Apache Kafka vs. Hubs de Eventos Kafka. Na maior parte das vezes, a interface do Kafka dos Hubs de Eventos do Azure tem as mesmas predefinições, propriedades, códigos de erro e comportamento geral do Apache Kafka. As instâncias em que esses dois diferem explicitamente (ou onde os Hubs de Eventos impõem um limite que Kafka não impõe) estão listadas aqui:
- O comprimento máximo da propriedade é de
group.id256 caracteres - O tamanho máximo de
offset.metadata.max.bytesé de 1.024 bytes - As confirmações de offset são controladas para 2 chamadas/segundo por partição com um tamanho máximo de log interno de 1 MB
Próximos passos
Para saber mais sobre Hubs de Eventos e Hubs de Eventos para Kafka, consulte os seguintes artigos: