Sdílet prostřednictvím


Průvodce odstraňováním potíží s Apache Kafka pro službu Event Hubs

Tento článek obsahuje tipy pro řešení potíží, na které můžete narazit při používání služby Event Hubs pro Apache Kafka.

Výjimka Zaneprázdněný server

Kvůli omezování Kafka může dojít k výjimce Zaneprázdněný server. U klientů AMQP služba Event Hubs okamžitě vrátí výjimku zaneprázdněného serveru při omezování služby. Je to ekvivalent zprávy "zkuste to znovu později". V systému Kafka se zprávy před dokončením zpozdí. Délka zpoždění se vrátí v milisekundách jako throttle_time_ms v odpovědi na výstup/načtení. Ve většině případů se tyto zpožděné požadavky nezaprotokolují jako výjimky zaneprázdněného serveru na řídicích panelech služby Event Hubs. Místo toho by se hodnota odpovědi throttle_time_ms měla použít jako indikátor, že propustnost překročila zřízenou kvótu.

Pokud je provoz nadměrný, služba má následující chování:

  • Pokud zpoždění požadavku překročí časový limit požadavku (request.timeout.ms), služba Event Hubs vrátí kód chyby porušení zásad.
  • Pokud zpoždění načtení požadavku překročí časový limit požadavku, služba Event Hubs zaznamená požadavek jako omezený a odpoví prázdnou sadou záznamů a bez kódu chyby.

Vyhrazené clustery nemají mechanismy omezování. Můžete využívat všechny prostředky clusteru.

Nebyly přijaty žádné záznamy.

Může se zobrazit, že příjemci nedostávají žádné záznamy a neustále znovu vyrovnává. V tomto scénáři uživatelé nezískají žádné záznamy a neustále vyrovnává rovnováhu. Pokud k tomu dojde, nedojde k žádné výjimce nebo chybě, ale protokoly Kafka ukážou, že se příjemci při pokusu o opětovné připojení ke skupině a přiřazení oddílů zablokují. Existuje několik možných příčin:

  • Ujistěte se, že request.timeout.ms je alespoň doporučená hodnota 60000 a že session.timeout.ms je alespoň doporučená hodnota 3 0000. Příliš nízká úroveň těchto nastavení může způsobit vypršení časového limitu uživatelů, což pak způsobí vyvážení (což pak způsobí větší vypršení časového limitu, což způsobí větší rovnováhu atd.)
  • Pokud vaše konfigurace odpovídá doporučeným hodnotám a stále dochází k neustálému vyrovnávání, neváhejte otevřít problém (nezapomeňte do problému zahrnout celou konfiguraci, abychom vám mohli pomoct s laděním)!

Problém s verzí komprese nebo formátu zprávy

Event Hubs pro Kafka v současné době podporuje pouze gzip algoritmus komprese. Pokud se použije jakýkoli jiný algoritmus, klientské aplikace uvidí chybu verze ve formátu zprávy (například The message format version on the broker does not support the request.).

Pokud je potřeba použít nepodporovaný algoritmus komprese, komprimujte data pomocí tohoto konkrétního algoritmu před odesláním do zprostředkovatelů a dekompresi po přijetí je platným alternativním řešením. Text zprávy je pouze pole bajtů do služby, takže komprese nebo dekomprese na straně klienta nezpůsobí žádné problémy.

UnknownServerException

Z klientských knihoven Kafka můžete obdržet výjimku UnknownServerException, která je podobná následujícímu příkladu:

org.apache.kafka.common.errors.UnknownServerException: The server experienced an unexpected error when processing the request

Otevřete lístek podpory Microsoftu. Protokolování na úrovni ladění a časová razítka výjimek ve standardu UTC jsou užitečné při ladění problému.

Další problémy

Pokud při používání kafka ve službě Event Hubs dochází k problémům, zkontrolujte následující položky.

  • Brána firewall blokuje provoz – Ujistěte se, že brána firewall neblokuje port 9093 .
  • TopicAuthorizationException – Nejčastější příčiny této výjimky jsou:
    • Překlep v připojovací řetězec v konfiguračním souboru nebo
    • Pokoušíte se použít službu Event Hubs pro Kafka v oboru názvů úrovně Basic. Funkce Event Hubs pro Kafka není na úrovni Basic podporovaná.
  • Neshoda verzí Kafka – Event Hubs pro ekosystémy Kafka podporuje Kafka verze 1.0 a novější. Některé aplikace používající Kafka verze 0.10 a novější můžou občas fungovat kvůli zpětné kompatibilitě protokolu Kafka, ale důrazně doporučujeme používat starší verze rozhraní API. Kafka verze 0.9 a starší nepodporují požadované protokoly SASL a nemůžou se připojit ke službě Event Hubs.
  • Podivné kódování hlaviček AMQP při využívání systému Kafka – při odesílání událostí do centra událostí přes AMQP se všechny hlavičky datové části AMQP serializují v kódování AMQP. Příjemci Kafka nekonstruují hlavičky z AMQP. Pokud chcete číst hodnoty záhlaví, ručně dekódujte hlavičky AMQP. Případně se můžete vyhnout použití hlaviček AMQP, pokud víte, že budete používat protokol Kafka. Další informace najdete u tohoto problému na GitHubu.
  • Ověřování SASL – Získání architektury pro spolupráci s ověřovacím protokolem SASL vyžadovaným službou Event Hubs může být obtížnější, než by splňovalo oko. Zjistěte, jestli můžete řešit potíže s konfigurací pomocí prostředků vaší architektury při ověřování SASL.

Omezení

Apache Kafka vs. Event Hubs Kafka. Rozhraní Kafka Azure Event Hubs má většinou stejné výchozí nastavení, vlastnosti, kódy chyb a obecné chování jako rozhraní Apache Kafka. Instance, které se tyto dvě explicitně liší (nebo kde služba Event Hubs ukládá omezení, které Kafka nepoužívá), jsou uvedené níže:

  • Maximální délka group.id vlastnosti je 256 znaků.
  • Maximální velikost offset.metadata.max.bytes je 1024 bajtů.
  • Potvrzení posunu jsou omezena na 4 volání za sekundu na oddíl s maximální velikostí interního protokolu 1 MB.

Další kroky

Další informace o službě Event Hubs a Event Hubs pro Kafka najdete v následujících článcích: