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 uzavírá příchozí protokol Transmission Control Protocol (TCP) v nečinnosti > 240 000 ms, což může vést k odesílání nefunkčních spojení (zobrazených jako expirované dávky kvůli časovému 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 to 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. Timeouty producentů jsou bezpečné s hodnotami už od 10 000 ms a nebudou pro producenty problé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é nastavení může způsobit spotřebitelské časové limity, které pak způsobí přebalancování (a to způsobí další časové limity, což způsobí další vyvažování a podobně).

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 none, 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é nastavení může způsobit spotřebitelské časové limity, které pak způsobí přebalancování (a to způsobí další časové limity, což způsobí další vyvažování a podobně).

max.poll.interval.ms 3000000 (výchozí) >session.timeout.ms Používá se pro časový limit přebalancování, takže by neměl být nastaven příliš nízko. 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é. Zatímco požadavky s nižšími hodnotami vypršení času jsou přijímány, chování klienta není zaručeno.
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 na přebalancování, takže by neměl být nastaven příliš nízko. 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í:
  • Prodloužení doby zpracování ankety (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.