Spotřebitelská skupina Kafka Kompletní průvodce spotřebitelskou skupinou Kafka

Obsah:

Anonim

Úvod do spotřebitelské skupiny Kafka

Spotřebitelská skupina Kafka je v podstatě řada spotřebitelů Kafka, kteří umí číst data paralelně z tématu Kafka. Spotřebitelská skupina Kafka má následující vlastnosti:

  • Všichni Spotřebitelé ve skupině mají stejnou skupinu group.id.
  • Každý oddíl v tématu čte pouze jeden spotřebitel.
  • Maximální počet spotřebitelů se rovná počtu oddílů v tématu. Pokud existuje více zákazníků než oddílů, zůstanou někteří spotřebitelé nečinní.
  • Zákazník může číst z více než jednoho oddílu.

Význam spotřebitelské skupiny Kafka

Pro maloobchodní organizaci bude velké množství producentů generujících data obrovským tempem. Nyní, abychom mohli číst velký objem dat, potřebujeme více Spotřebitelů běžících paralelně. Na straně producenta je relativně jednodušší, kde každý producent generuje data nezávisle na ostatních. Pokud však máme na straně spotřebitele více než jednoho spotřebitele, který si přečte stejné téma, existuje velká šance, že každá zpráva bude přečtena vícekrát. Kafka řeší tento problém pomocí Consumer Group. V každém případě může pouze jeden spotřebitel číst data z oddílu.

Rozdělení skupiny spotřebitelů Kafka

Předpokládejme, že máme téma Kafka a jsou v něm 4 oddíly. Pak můžeme mít následující scénáře:

1. Počet spotřebitelů = Počet oddílů

V tomto případě si každý Zákazník přečte data z každého oddílu, což je ideální případ.

2. Počet zákazníků> Počet oddílů

V tomto případě zůstane jeden spotřebitel nečinný a vede ke špatnému využití zdroje.

3. Počet spotřebitelů <Počet oddílů

V tomto případě bude jeden ze spotřebitelů číst data z více než jednoho oddílu.

4. Počet skupin spotřebitelů> 1

V tomto případě je téma přihlášeno více než jednou skupinou spotřebitelů, která zajišťuje dvě různé aplikace. Obě aplikace mohou běžet nezávisle na sobě.

Výhody spotřebitelské skupiny Kafka

Skupina spotřebitelů přináší následující výhody:

  • Škálovatelnost: Řada zákazníků, kteří současně čtou data, určitě zvyšuje spotřebu dat a umožňuje systému číst velký objem dat.
  • Tolerance poruch: Předpokládejme, že jsme měli pouze jednoho spotřebitele (pro čtení ne tak velkého objemu dat), co by se stalo, kdyby spotřebitel z nějakého důvodu selhal? Celý potrubí se zlomí.
  • Load Balancing: Kafka sdílí oddíly spravedlivě s každým zákazníkem, čímž se proces spotřeby dat stává hladkým a efektivním.
  • Opětovné vyvážení: Pokud je přidán nový spotřebitel nebo stávající, zastaví Kafka vyvažování zátěže dostupných spotřebitelů.

Jak Kafka přemosťuje dva modely?

Nejprve si probereme dva modely zasílání zpráv.

1. Fronty zpráv

V tomto modelu je proud zpráv odesílán od jednoho výrobce pouze jednomu spotřebiteli. Každá zpráva je tedy jen pro čtení jednou a jakmile zákazník zprávu vytáhne, zpráva je z fronty vymazána. Typickým příkladem může být vydání výplaty, kde musí být každá výplata vydána pouze jednou. Tento model také nezaručuje, že zprávy budou doručovány v pořádku. Škálovatelnost zpracování zpráv je omezena na jednu doménu.

2. Publikování a přihlášení k odběru zpráv

V tomto modelu mohou zprávy publikované výrobcem předplatit více než jeden spotřebitel. Producent a spotřebitel jsou do velké míry odděleni. Tento model zajišťuje, že každý spotřebitel obdrží zprávy v tématu v přesném pořadí vygenerovaném výrobcem. Typickým příkladem může být parabola, která vydává různé kanály, jako je hudba, film, sport atd., A zákazníci si mohou předplatit více než jeden kanál. Protože existuje více odběratelů určitého tématu, měřítko zpracování toků je výzvou.

Kafka je tak populární, protože ačkoli je založen na modelu publikování a odběru, má výhody systému front zpráv. Jak již bylo řečeno dříve, pokud máme skupinu Consumer, Kafka zajistí, aby každá zpráva v tématu byla čtena pouze jednou spotřebitelem (což je podobné systému front zpráv). Dalšími výhodami jsou, že zprávy jsou uchovávány makléři (na určitou dobu, takže jsou odolné proti chybám) a pokud máme více než jednu skupinu spotřebitelů, mohou číst zprávy ze stejného tématu, ale zpracovávat je jinak.

Použijte případové implikace

Předpokládejme, že máme jednoduchou cloudovou platformu, kde uživatelům umožňujeme následující operace:

  • Ukládejte soubory do cloudu.
  • Zobrazit jejich soubory v cloudu.
  • Stáhněte si jejich soubory z cloudu.

Na začátku jsme měli velmi malou uživatelskou základnu. Chtěli jsme odvodit různé statistiky (na hodinovém základě), jako jsou aktivní uživatelé, počet žádostí o upload, počet žádostí o stažení atd. Abychom vyhověli požadavkům, vytvořili jsme Kafka Cluster, který produkuje protokoly (generované naší aplikací) do tématu a existuje aplikace, která toto téma spotřebuje (pomocí spotřebitele) a poté jej zpracuje, aby vygenerovala požadované statistiky a nakonec zobrazila ty na webové stránce.

Jak se lidem začaly líbit naše služby, začalo ho více lidí používat a generovalo tak mnoho protokolů za hodinu. Zjistili jsme, že aplikace, která spotřebovává toto téma, se extrémně zpomalila, protože jsme používali pouze jednoho spotřebitele. Abychom problém vyřešili, přidali jsme do skupiny několik zákazníků a zjistili jsme významné zlepšení výkonu.

Narazili jsme na další požadavek, kdy jsme museli protokoly zapisovat do klastru HDFS a tento proces by měl probíhat nezávisle na předchozí aplikaci (Je to proto, že s dalším nárůstem dat jsme plánovali vyřazení první aplikace z provozu a odvodili jsme všechny statistiky v prostředí HDFS). Abychom splnili tento požadavek, vyvinuli jsme jinou aplikaci, která se přihlásila k odběru tématu pomocí jiné skupiny Consumer a zapsala data do klastru HDFS.

Doporučené články

Toto je průvodce spotřebitelskou skupinou Kafka. Zde diskutujeme význam spotřebitelské skupiny Kafka a jak Kafka přemosťuje dva modely spolu s důsledky použití. Další informace naleznete také v následujících článcích

  1. Aplikace Kafka
  2. Jak nainstalovat Kafka?
  3. Kafka Interview Otázky
  4. HDFS architektura
  5. Různé typy nástrojů Kafka