Tento přehled je trochu abstraktní, takže pojďme to uzemnit ve scénáři reálného světa, představte si, že musíte sledovat několik webových serverů. Každý provozuje svůj vlastní web a každou sekundu dne se v každém z nich neustále generují nové protokoly. Kromě toho existuje řada e-mailových serverů, které musíte také sledovat.
Možná budete muset tato data uložit pro účely vedení záznamů a fakturace, což je dávková úloha, která nevyžaduje okamžitou pozornost. Možná budete chtít spustit analýzu dat, abyste mohli rozhodovat v reálném čase, což vyžaduje přesné a okamžité zadání dat. Najednou se ocitnete v potřebě racionalizovat data rozumným způsobem pro všechny různé potřeby. Kafka funguje jako ta vrstva abstrakce, ke které může více zdrojů publikovat různé proudy dat a dané spotřebitel se může přihlásit k odběru streamů, které považuje za relevantní. Kafka se ujistí, že data jsou dobře uspořádaná. Je to vnitřní část Kafky, kterou musíme pochopit, než se dostaneme k tématu Rozdělení a klíče.
Témata, makléř a oddíly společnosti Kafka
Kafka Témata jsou jako tabulky databáze. Každé téma se skládá z dat z konkrétního zdroje konkrétního typu. Například stav vašeho clusteru může být tématem skládajícím se z informací o využití CPU a paměti. Podobně může být dalším tématem příchozí provoz do celého clusteru.
Kafka je navržena tak, aby byla horizontálně škálovatelná. To znamená, že jedna instance Kafky se skládá z více Kafky makléři běží na více uzlech, každý může zpracovávat streamy dat paralelně s druhým. I když několik uzlů selže, váš datový kanál může nadále fungovat. Konkrétní téma lze poté rozdělit na několik oddíly. Toto rozdělení je jedním z rozhodujících faktorů horizontální škálovatelnosti Kafky.
Násobek výrobci, zdroje dat pro dané téma, mohou na toto téma zapisovat současně, protože každý v kterémkoli bodě zapisuje do jiného oddílu. Nyní jsou obvykle data náhodně přiřazena k oddílu, pokud jim neposkytneme klíč.
Rozdělení a objednávání
Jen pro rekapitulaci, producenti zapisují data k danému tématu. Toto téma je ve skutečnosti rozděleno do několika oddílů. A každý oddíl žije nezávisle na ostatních, dokonce i pro dané téma. To může vést k velkému zmatku, když záleží na objednávání dat. Možná potřebujete data v chronologickém pořadí, ale mít více oddílů pro datový tok nezaručuje dokonalé uspořádání.
Na každé téma můžete použít pouze jeden oddíl, ale to maří celý účel distribuované architektury Kafky. Potřebujeme tedy nějaké jiné řešení.
Klávesy pro oddíly
Data od výrobce jsou do oddílů zasílána náhodně, jak jsme již zmínili dříve. Zprávy jsou skutečné bloky dat. Producenti mohou kromě posílání zpráv udělat i přidání klíče, který k tomu patří.
Všechny zprávy, které přicházejí s konkrétním klíčem, budou odeslány do stejného oddílu. Například aktivitu uživatele lze sledovat chronologicky, pokud jsou jeho data označena klíčem, takže vždy končí v jednom oddílu. Říkejme tomuto oddílu p0 a uživateli u0.
Oddíl p0 vždy vyzvedne zprávy související s u0, protože tento klíč je spojuje dohromady. Ale to neznamená, že p0 je spojeno pouze s tím. Může také přijímat zprávy z u1 a u2, pokud má na to kapacitu. Podobně mohou ostatní oddíly využívat data od ostatních uživatelů.
Bod, že data daného uživatele nejsou rozšířena mezi různé oddíly, což zajišťuje chronologické řazení pro daného uživatele. Celkovým tématem uživatelská data, stále může využívat distribuovanou architekturu Apache Kafka.
Závěr
Zatímco distribuované systémy jako Kafka řeší některé starší problémy, jako je nedostatečná škálovatelnost nebo selhání jediného bodu. Přicházejí s řadou problémů, které jsou jedinečné pro jejich vlastní design. Předvídání těchto problémů je základní prací každého systémového architekta. Nejen to, někdy opravdu musíte udělat analýzu nákladů a přínosů, abyste zjistili, zda jsou nové problémy hodným kompromisem, jak se zbavit těch starších. Objednávání a synchronizace jsou jen špičkou ledovce.
Doufejme, že vám články jako tyto a oficiální dokumentace mohou při tom pomoci.