Jedná se o poměrně novou architekturu
To bych zase tak uplne nerekl. Ve svete RDBMS je naprosto bezne, ze zakladnim zdrojem dat je log transakci a jednotlive databaze (databazove tabulky) jsou de facto jen materializovane pohledy na tento log. Da se na to divat i tak, ze v pripade architektury kappa doslo k explicitnimu oddeleni (decoupling) toho logu od samotneho ulozeni a zpracovani dat.
Jinak moc pekny clanek!
Další super díl skvělého seriálu, díky. Měl bych jenom drobné hnidopišské připomínky:
> Navíc je možné, aby se pro každé téma udržovalo několik logů (partition logs), což umožňuje připojení většího množství konzumentů zpráv k jednomu tématu s tím, že tito konzumenti budou pracovat paralelně a nezávisle na sobě.
Tohle mi přijde zavádějící (nebo nerozumím tomu, jak jsi to myslel). Každá partition má vždycky svůj log s vlastní řadou offset čísel. A v praxi se topic vždycky dělí na partišny, protože jinak to nejde škálovat. Jediné, s čím jde čarovat, jsou groupy, ale tím se spíš definuje sémantika čtení (všichni všechno nebo rozdělení zátěže). Groupy by si vůbec zasloužily aspoň krátkou zmínku (jasně, vím, že článek je už tak dlouhý).
Hodilo by se taky zmínit, že partišen je dobré od začátku založit hodně (o řád víc než je počet consumerů), protože později se s ním špatně hýbe a víc partišen znamená pravidelnější rozložení zátěže.
Ke kapitole 17: ta mi taky přijde maličko zavádějící, protože použití Kafky jako klasické fronty je straightforward, je to základní věc, kterou umí skvěle. Ta popisovaná šaráda s explicitním potvrzováním do topiců (jestli ji dobře chápu) je jenom proto, že autor chtěl potvrzování jednotlivých zpráv *na přeskáčku*, což imho není častej use case. Pokud tohle nechci a vystačím si s commitováním offsetů jak ho Kafka má, mám skvělou reliabilní frontu. Z toho, jak je tahle kapitola napsaná, by někdo mohl nabýt dojmu, že Kafka není dobrá fronta :)
A ještě bych měl malej komentář k těm podporovaným jazykům: bohužel kvalita jednotlivých knihoven se dost zásadně liší. Nejenom že jsou různě stabilní (to by asi člověk očekával), ale vzhledem k tomu, jak je Kafka protokol modulární a má thick klienta, některé knihovny podporují jenom část protokolu. Narazil jsem například na implementaci, která vůbec neimplementovala grupy. Takže si je člověk buď musel naimplementovat sám, nebo přišel tak o polovinu různých možných architektur/sémantik příjmu.
Vůbec, ten Kafka protokol by si možná zasloužil samostatnej článek :) Když jsem poprvé viděl, že groupy jsou vlastně implementované jenom pomocí zpráv typu "teď volíme nového leadera", "stal jsi se členem skupiny" apod., tak jsem celkem čuměl. Hezké je, že minimálně u některých knihoven se dá na s těmihle low level zprávami taky pracovat, takže člověk může dělat fakt kouzla, které by mu třeba knihovna samotná neumožnila.
28. 8. 2019, 10:06 editováno autorem komentáře