Az Apache Kafka hibaelhárítási útmutatója az Event Hubshoz
Ez a cikk hibaelhárítási tippeket nyújt az Apache Kafkához készült Event Hubs használatakor felmerülő problémákhoz.
Kiszolgáló foglalt kivétele
Előfordulhat, hogy a Kiszolgáló foglaltsága kivételt kap a Kafka-szabályozás miatt. Az AMQP-ügyfelek esetében az Event Hubs azonnal egy foglalt kiszolgálói kivételt ad vissza a szolgáltatás szabályozásakor. Ez egy "próbálkozzon újra később" üzenetnek felel meg. A Kafkában a rendszer késlelteti az üzeneteket a befejezés előtt. A késleltetés hossza ezredmásodpercben lesz visszaadva, mint throttle_time_ms
a termék/lekérés válaszában. A legtöbb esetben ezek a késleltetett kérések nem lesznek kiszolgálói foglalt kivételekként naplózva az Event Hubs-irányítópultokon. Ehelyett a válasz throttle_time_ms
értékét kell használni annak jelzésére, 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 lekérési kérelem 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 válaszol, hibakód nélkül.
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 fogyasztók nem kapnak rekordokat, és folyamatosan újraegyensúlyoznak. Ebben a forgatókönyvben a fogyasztó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 fogyasztók elakadtak, és megpróbálnak újra csatlakozni a csoporthoz, és partíciókat rendelnek hozzá. Néhány lehetséges oka lehet:
- 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ók időtúllépését okozhatja, ami újraegyensúlyozást okozhat (ami több időtúllépést okoz, ami több kiegyensúlyozást okoz stb.) - Ha a konfiguráció egyezik az ajánlott értékekkel, és továbbra is állandó kiegyensúlyozást lát, 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átum-verzióval kapcsolatos probléma
A Kafka támogatja a tömörítést, és a Kafkához készült Event Hubs jelenleg nem. Az üzenetformátumot (például ) említő hibákat az okozza, The message format version on the broker does not support the request.
ha egy ügyfél tömörített Kafka-üzeneteket próbál küldeni a közvetítőknek.
Ha tömörített adatokra van szükség, az adatok 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 áthidaló megoldás. Az üzenettörzs 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 Kafka-ügyfélkódtárakban az alábbi példához hasonló UnknownServerException hibaüzenet jelenhet meg:
org.apache.kafka.common.errors.UnknownServerException: The server experienced an unexpected error when processing the request
Nyisson meg egy jegyet a Microsoft ügyfélszolgálatá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 event Hubson való használatakor.
- Tűzfal blokkolja a forgalmat – Győződjön meg arról, hogy a tűzfal nem blokkolja a 9093-at .
- 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 nem támogatott az alapszinten.
- Kafka-verzióeltérés – A Kafka-ökoszisztémákhoz készült Event Hubs támogatja a Kafka 1.0-s és újabb verzióit. Egyes, a Kafka 0.10-es és újabb verzióját használó alkalmazások időnként működhetnek 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üld egy eseményközpontba AMQP-n keresztül, az AMQP hasznos adatfejlécek amqp kódolással szerializálódnak. A Kafka-fogyasztó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ó : Ez a GitHub-probléma.
- SASL-hitelesítés – A keretrendszernek az Event Hubs által megkövetelt SASL hitelesítési protokolllal 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, maximális belső napló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 talál további információt: