Sdílet prostřednictvím


Doporučené konfigurace pro klienty Apache Kafka

Tady jsou doporučené konfigurace pro používání služby Azure Event Hubs z klientských aplikací Apache Kafka.

Vlastnosti konfigurace klienta Java

Konfigurace producenta a příjemce

Vlastnost Doporučené hodnoty Povolený rozsah Notes
metadata.max.age.ms 180000 (přibližná) < 240000 Je možné snížit, aby se změny metadat chytá dříve.
connections.max.idle.ms 180000 < 240000 Azure zavře příchozí protokol TCP (Transmission Control Protocol) nečinný > 240 000 ms, což může vést k odesílání neaktivních připojení (zobrazených jako dávky s vypršenou platností kvůli vypršení časového limitu odeslání).

Pouze konfigurace producenta

Konfigurace producenta najdete tady.

Vlastnost Doporučené hodnoty Povolený rozsah Notes
max.request.size 1000000 < 1046528 Služba ukončí připojení, pokud se odesílají požadavky větší než 1 046 528 bajtů. Tato hodnota se musí změnit a způsobit problémy ve scénářích s vysokou propustností.
retries > 0 Může vyžadovat zvýšení delivery.timeout.ms hodnoty, viz dokumentace.
request.timeout.ms 30000 .. 60000 > 20000 Služba Event Hubs interně nastaví výchozí hodnotu minimálně 20 000 ms. I když se přijímají požadavky s nižšími hodnotami časového limitu, není zaručené chování klienta.

Ujistěte se, že je request.timeout.ms alespoň doporučená hodnota 6 0000 a 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í rovnováhu (což pak způsobí větší vypršení časového limitu, což způsobí větší rovnováhu atd.).

metadata.max.idle.ms 180000 > 5000 Určuje, jak dlouho producent ukládá metadata do mezipaměti pro téma, které je nečinné. Pokud uplynulá doba od posledního vytvoření tématu překročí dobu nečinnosti metadat, metadata tématu se zapomene a další přístup k němu vynutí požadavek na načtení metadat.
linger.ms > 0 V případě scénářů s vysokou propustností by se hodnota přetrvání měla rovnat nejvyšší přípustné hodnotě, aby bylo možné využít dávkování.
delivery.timeout.ms Nastavit podle vzorce (request.timeout.ms + linger.ms) * . retries
compression.type uncompressed, gzip Aktuálně se podporuje pouze komprese gzip.

Pouze konfigurace uživatelů

Konfigurace uživatelů najdete tady.

Vlastnost Doporučené hodnoty Povolený rozsah Notes
heartbeat.interval.ms 3000 3000 je výchozí hodnota a neměla by se měnit.
session.timeout.ms 30000 6000 .. 300000 Začněte 30000, pokud dochází k častému vyrovnávání kvůli zmeškaným prezenčních signálům.

Ujistěte se, že je request.timeout.ms alespoň doporučená hodnota 6 0000 a 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í rovnováhu (což pak způsobí větší vypršení časového limitu, což způsobí větší rovnováhu atd.).

max.poll.interval.ms 3000000 (výchozí) >session.timeout.ms Používá se k vypršení časového limitu vyvážení, takže by nemělo být nastaveno příliš nízké. Musí být větší než session.timeout.ms.

vlastnosti konfigurace librdkafka

Hlavní librdkafka konfigurační soubor (odkaz) obsahuje rozšířené popisy vlastností popsaných v následujících částech.

Konfigurace producenta a příjemce

Vlastnost Doporučené hodnoty Povolený rozsah Notes
socket.keepalive.enable true Je nutné, pokud se očekává, že připojení bude nečinné. Azure zavře příchozí nečinnost TCP > 240 000 ms.
metadata.max.age.ms ~ 180000 < 240000 Je možné snížit, aby se změny metadat chytá dříve.

Pouze konfigurace producenta

Vlastnost Doporučené hodnoty Povolený rozsah Notes
retries > 0 Výchozí hodnota je 2147483647.
request.timeout.ms 30000 .. 60000 > 20000 Služba Event Hubs interně nastaví výchozí hodnotu minimálně 20 000 ms. librdkafka výchozí hodnota je 5000, což může být problematické. I když se přijímají požadavky s nižšími hodnotami časového limitu, není zaručené chování klienta.
partitioner consistent_random Viz dokumentace k knihovně librdkafka consistent_random je výchozí a nejlepší. Ve většině případů se v ideálním případě zpracovávají prázdné a null klíče.
compression.codec none, gzip Aktuálně se podporuje pouze komprese gzip.

Pouze konfigurace uživatelů

Vlastnost Doporučené hodnoty Povolený rozsah Notes
heartbeat.interval.ms 3000 3000 je výchozí hodnota a neměla by se měnit.
session.timeout.ms 30000 6000 .. 300000 Začněte 30000, pokud dochází k častému vyrovnávání kvůli zmeškaným prezenčních signálům.
max.poll.interval.ms 3000000 (výchozí) >session.timeout.ms Používá se k vypršení časového limitu vyvážení, takže by nemělo být nastaveno příliš nízké. Musí být větší než session.timeout.ms.

Další poznámky

Projděte si následující tabulku běžných scénářů chyb souvisejících s konfigurací.

Příznaky Problém Řešení
Posun selhání potvrzení kvůli vyrovnávání Váš uživatel čeká příliš dlouho mezi voláními na dotazování () a služba spouští příjemce ze skupiny. Máte několik možností:
  • Zvýšení časového limitu zpracování dotazování (max.poll.interval.ms)
  • Zmenšení velikosti dávky zpráv kvůli urychlení zpracování
  • Vylepšení paralelizace zpracování, aby se zabránilo blokování příjemce.poll()
Použití některé kombinace těchto tří je pravděpodobně moudřejší.
Výjimky sítě s vysokou propustností Pokud používáte klienta Java + výchozí max.request.size, můžou být vaše požadavky příliš velké. Viz konfigurace Javy uvedené výše.

Další kroky

Podívejte se na limity, kvóty a omezení předplatného a služeb Azure pro kvóty a omezení všech služeb Azure.