Share via


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, a session.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: