Apache Kafka hibaelhárítási útmutató az Event Hubshoz
Ez a cikk hibaelhárítási tippeket nyújt azOkhoz a problémákhoz, amelyek az Event Hubs for Apache Kafka használatakor merülhetnek fel.
Kiszolgáló foglaltsági kivétele
Előfordulhat, hogy a Kiszolgáló foglaltsága kivételt kap a Kafka szabályozása miatt. Az AMQP-ügyfelek esetén az Event Hubs a szolgáltatásszabályozáskor azonnal visszaad egy foglalt kiszolgálói kivételt. Ez egy "próbálkozzon újra később" üzenetnek felel meg. A Kafkában az üzenetek késnek, mielőtt befejeződnek. A késleltetési hossz ezredmásodpercben lesz visszaadva, mint throttle_time_ms
a termék/beolvasás válaszában. A rendszer a legtöbb esetben nem naplózza ezeket a késleltetett kéréseket kiszolgálói foglaltsági kivételekként az Event Hubs-irányítópultokon. Ehelyett a válasz throttle_time_ms
értékét kell használni annak jelzéseként, hogy az átviteli sebesség túllépte a kiosztott kvótát.
Ha a forgalom túl nagy, a szolgáltatás a következő viselkedést követi:
- Ha a kérelem késése meghaladja a kérés időtúllépését (request.timeout.ms), az Event Hubs szabályzatsértési hibakódot ad vissza.
- Ha a kérés késése meghaladja a kérés időtúllépését, az Event Hubs szabályozott módon naplózza a kérést, és üres rekordkészlettel és hibakód nélkül válaszol.
A dedikált fürtök nem rendelkeznek szabályozási mechanizmusokkal. Szabadon használhatja az összes fürterőforrást.
Nem érkezett rekord
Előfordulhat, hogy a felhasználók nem kapnak rekordokat, és folyamatosan újraegyensúlyoznak. Ebben a forgatókönyvben a felhasználók nem kapnak rekordokat, és folyamatosan kiegyensúlyoznak. Ez esetben nincs kivétel vagy hiba, de a Kafka-naplók azt mutatják, hogy a felhasználók elakadtak a csoport újracsatlakozására és partíciók hozzárendelésére. Van néhány lehetséges oka:
- Győződjön meg arról, hogy a
request.timeout.ms
javasolt érték legalább 60000, asession.timeout.ms
javasolt érték pedig legalább 30000. Ha ezek a beállítások túl alacsonyak, az a fogyasztói időtúllépéseket okozhatja, ami aztán újraegyensúlyozást okozhat (ami több időtúllépést okoz, ami több kiegyensúlyozást és így tovább) - Ha a konfiguráció megegyezik az ajánlott értékekkel, és továbbra is állandó újraegyensúlyozást tapasztal, nyugodtan nyisson meg egy problémát (ügyeljen arra, hogy a teljes konfigurációt is belefoglalja a problémába, hogy segíthessünk a hibakeresésben)!
Tömörítési/üzenetformátummal kapcsolatos verzióproblémák
A Kafkához készült Event Hubs jelenleg csak gzip
a tömörítési algoritmust támogatja. Ha bármilyen más algoritmust használ, az ügyfélalkalmazások üzenetformátumú verzióhibát fognak látni (például The message format version on the broker does not support the request.
).
Ha nem támogatott tömörítési algoritmust kell használni, az adatok adott algoritmussal való tömörítése, mielőtt elküldené azokat a közvetítőknek, és a lebontás a fogadás után érvényes megkerülő megoldás. Az üzenet törzse csak egy bájttömb a szolgáltatás számára, így az ügyféloldali tömörítés/dekompresszió nem okoz problémát.
UnknownServerException
A Következő példához hasonló UnknownServerExceptionet kaphat a Kafka-ügyfélkódtáraktól:
org.apache.kafka.common.errors.UnknownServerException: The server experienced an unexpected error when processing the request
Nyisson meg egy jegyet a Microsoft támogatásával. A hibakeresési szintű naplózás és a kivétel időbélyegei (UTC) hasznosak a probléma hibakeresésében.
Egyéb problémák
Ellenőrizze az alábbi elemeket, ha problémákat tapasztal a Kafka használata során az Event Hubsban.
- Tűzfal blokkolja a forgalmat – Győződjön meg arról, hogy a 9093-at nem blokkolja a tűzfal.
- TopicAuthorizationException – A kivétel leggyakoribb okai a következők:
- Elírás a konfigurációs fájl kapcsolati sztring, vagy
- Az Event Hubs for Kafka használata alapszintű névtéren. Az Event Hubs for Kafka szolgáltatás az alapszinten nem támogatott.
- Kafka verzióeltérés – Az Event Hubs for Kafka Ecosystems támogatja a Kafka 1.0-s és újabb verzióit. A Kafka 0.10-es és újabb verzióját használó alkalmazások némelyike időnként működhet a Kafka protokoll visszamenőleges kompatibilitása miatt, de határozottan javasoljuk a régi API-verziók használatát. A Kafka 0.9-es és korábbi verziói nem támogatják a szükséges SASL-protokollokat, és nem tudnak csatlakozni az Event Hubshoz.
- Furcsa kódolások az AMQP-fejléceken a Kafkával való használat során – amikor eseményeket küldenek egy eseményközpontba AMQP-n keresztül, az AMQP hasznos adatfejlécei amqp kódolással szerializálva lesznek. A Kafka-felhasználók nem deszerializálják a fejléceket az AMQP-ből. A fejlécértékek olvasásához manuálisan dekódolja az AMQP-fejléceket. Alternatív megoldásként elkerülheti az AMQP-fejlécek használatát, ha tudja, hogy a Kafka protokollon keresztül fogja használni. További információkért tekintse meg ezt a GitHub-problémát.
- SASL-hitelesítés – A keretrendszernek az Event Hubs által megkövetelt SASL hitelesítési protokollal való együttműködése nehezebb lehet, mint a szemnek. Ellenőrizze, hogy elháríthatja-e a konfigurációt a keretrendszer SASL-hitelesítéssel kapcsolatos erőforrásaival.
Korlátok
Apache Kafka és Event Hubs Kafka A legtöbb esetben az Azure Event Hubs Kafka-felülete ugyanazokkal az alapértelmezett értékekkel, tulajdonságokkal, hibakódokkal és általános viselkedéssel rendelkezik, mint az Apache Kafka. Az alábbiakban azokat a példányokat soroljuk fel, amelyekben ez a kettő kifejezetten különbözik (vagy ahol az Event Hubs olyan korlátot ír elő, amelyet a Kafka nem használ):
- A tulajdonság maximális hossza
group.id
256 karakter - A maximális méret
offset.metadata.max.bytes
1024 bájt - Az eltolásos véglegesítések partíciónként 4 hívásra/másodpercre vannak szabályozva, a belső naplók maximális mérete 1 MB
Következő lépések
Az Event Hubsról és a Kafkához készült Event Hubsról az alábbi cikkekben olvashat bővebben: