Przewodnik rozwiązywania problemów z platformą Apache Kafka dla usługi Event Hubs

Ten artykuł zawiera porady dotyczące rozwiązywania problemów, które mogą wystąpić podczas korzystania z usługi Event Hubs dla platformy Apache Kafka.

Wyjątek zajęty serwera

Może zostać wyświetlony wyjątek Zajęty serwer z powodu ograniczania przepustowości platformy Kafka. W przypadku klientów amQP usługa Event Hubs natychmiast zwraca wyjątek zajęty serwera po ograniczaniu przepustowości usługi. Jest to odpowiednik komunikatu "spróbuj ponownie później". Na platformie Kafka komunikaty są opóźniane przed ukończeniem. Długość opóźnienia jest zwracana w milisekundach, tak jak throttle_time_ms w odpowiedzi produkcji/pobierania. W większości przypadków te opóźnione żądania nie są rejestrowane jako wyjątki zajęte przez serwer na pulpitach nawigacyjnych usługi Event Hubs. Zamiast tego wartość odpowiedzi throttle_time_ms powinna być używana jako wskaźnik, że przepływność przekroczyła aprowizowany limit przydziału.

Jeśli ruch jest nadmierny, usługa ma następujące zachowanie:

  • Jeśli opóźnienie żądania generuje przekroczenie limitu czasu żądania (request.timeout.ms), usługa Event Hubs zwraca kod błędu naruszenia zasad .
  • Jeśli opóźnienie żądania pobierania przekracza limit czasu żądania, usługa Event Hubs rejestruje żądanie jako ograniczone i odpowiada z pustym zestawem rekordów i bez kodu błędu.

Dedykowane klastry nie mają mechanizmów ograniczania przepustowości. Możesz korzystać ze wszystkich zasobów klastra.

Nie odebrano żadnych rekordów

Użytkownicy mogą nie otrzymywać żadnych rekordów i stale ponownie je równoważyć. W tym scenariuszu użytkownicy nie otrzymują żadnych rekordów i stale ponownie równoważą. W takim przypadku nie ma wyjątku ani błędu, ale dzienniki platformy Kafka będą pokazywać, że konsumenci utkną podczas próby ponownego dołączania do grupy i przypisywania partycji. Istnieje kilka możliwych przyczyn:

  • Upewnij się, że jest request.timeout.ms to co najmniej zalecana wartość 60000, a session.timeout.ms wartość jest co najmniej zalecaną wartością 30000. Jeśli te ustawienia są zbyt niskie, mogą spowodować przekroczenia limitu czasu użytkownika, co powoduje ponowne równoważenie (co powoduje zwiększenie limitu czasu, co powoduje ponowne równoważenie itd.)
  • Jeśli konfiguracja jest zgodna z tymi zalecanymi wartościami i nadal widzisz stałe ponowne równoważenie, możesz otworzyć problem (pamiętaj, aby uwzględnić całą konfigurację w problemie, abyśmy mogli pomóc w debugowaniu)!

Problem z wersją formatu kompresji/wiadomości

Platforma Kafka obsługuje kompresję, a usługa Event Hubs dla platformy Kafka obecnie nie obsługuje. Błędy, które wymieniają wersję formatu komunikatów (na przykład The message format version on the broker does not support the request.), są spowodowane próbą wysłania skompresowanych komunikatów platformy Kafka do naszych brokerów.

Jeśli skompresowane dane są niezbędne, kompresowanie danych przed wysłaniem ich do brokerów i dekompresowanie po odebraniu jest prawidłowym obejściem. Treść komunikatu jest tylko tablicą bajtów do usługi, więc kompresja/dekompresja po stronie klienta nie spowoduje żadnych problemów.

UnknownServerException

Z bibliotek klienckich platformy Kafka można otrzymać wyjątek UnknownServerException podobny do następującego przykładu:

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

Otwórz bilet z pomocą techniczną firmy Microsoft. Rejestrowanie na poziomie debugowania i znaczniki czasu wyjątku w formacie UTC są przydatne podczas debugowania problemu.

Inne problemy

Sprawdź następujące elementy, jeśli występują problemy podczas korzystania z platformy Kafka w usłudze Event Hubs.

  • Zapora blokuje ruch — upewnij się, że port 9093 nie jest blokowany przez zaporę.
  • TopicAuthorizationException — najczęstsze przyczyny tego wyjątku to:
    • Literówka w parametrach połączenia w pliku konfiguracji lub
    • Próba użycia usługi Event Hubs dla platformy Kafka w przestrzeni nazw warstwy Podstawowa. Funkcja usługi Event Hubs dla platformy Kafka nie jest obsługiwana w warstwie podstawowa.
  • Niezgodność wersji platformy Kafka — usługa Event Hubs dla ekosystemów platformy Kafka obsługuje platformę Kafka w wersji 1.0 lub nowszej. Niektóre aplikacje korzystające z platformy Kafka w wersji 0.10 lub nowszej mogą czasami działać ze względu na zgodność z poprzednimi wersjami protokołu Kafka, ale zdecydowanie zalecamy używanie starych wersji interfejsu API. Platforma Kafka w wersji 0.9 i starszych nie obsługuje wymaganych protokołów SASL i nie może nawiązać połączenia z usługą Event Hubs.
  • Dziwne kodowanie nagłówków AMQP podczas korzystania z platformy Kafka — podczas wysyłania zdarzeń do centrum zdarzeń za pośrednictwem protokołu AMQP wszystkie nagłówki ładunku AMQP są serializowane w kodowaniu AMQP. Konsumenci platformy Kafka nie deserializować nagłówków z protokołu AMQP. Aby odczytać wartości nagłówka, ręcznie zdekoduj nagłówki AMQP. Alternatywnie możesz uniknąć używania nagłówków AMQP, jeśli wiesz, że będziesz korzystać za pośrednictwem protokołu Kafka. Aby uzyskać więcej informacji, zobacz ten problem w serwisie GitHub.
  • Uwierzytelnianie SASL — uzyskanie struktury do współpracy z protokołem uwierzytelniania SASL wymaganym przez usługę Event Hubs może być trudniejsze niż spełnia to oko. Sprawdź, czy możesz rozwiązać problemy z konfiguracją przy użyciu zasobów platformy w uwierzytelnianiu SASL.

Limity

Apache Kafka a Kafka Event Hubs. W większości przypadków interfejs Kafka Azure Event Hubs ma takie same wartości domyślne, właściwości, kody błędów oraz zachowania ogólne co platforma Apache Kafka. Wystąpienia, które te dwa jawnie różnią się (lub gdy usługa Event Hubs nakłada limit, którego nie ma platforma Kafka), są wymienione poniżej:

  • Maksymalna długość group.id właściwości wynosi 256 znaków
  • Maksymalny rozmiar offset.metadata.max.bytes to 1024 bajty
  • Zatwierdzenia przesunięcia są ograniczane do 4 wywołań na sekundę na partycję z maksymalnym wewnętrznym rozmiarem dziennika wynoszącym 1 MB

Następne kroki

Aby dowiedzieć się więcej o usłudze Event Hubs i usłudze Event Hubs dla platformy Kafka, zobacz następujące artykuły: