Programiranje

Apache Kafka proti Apache Pulsar: Kako izbrati

Dandanes je obsežno razširljivo pošiljanje pub / sub sporočil skoraj sinonim za Apache Kafka. Apache Kafka je še naprej trdno odprtokodna izbira za distribuirane programe za pretakanje, ne glede na to, ali za obdelavo dodajate kaj podobnega Apache Storm ali Apache Spark ali z uporabo orodij za obdelavo, ki jih ponuja Apache Kafka. Toda Kafka ni edina igra v mestu.

Apache Pulsar, ki ga je razvil Yahoo in je zdaj projekt fundacije Apache Software Foundation, gre za krono sporočil, ki jo Apache Kafka nosi že vrsto let. Apache Pulsar v številnih primerih ponuja možnost hitrejše prepustnosti in nižje zakasnitve kot Apache Kafka, skupaj z združljivim API-jem, ki razvijalcem omogoča, da s Kafke preidejo na Pulsar z relativno lahkoto.

Kako naj se odloči med častitljivim trdnim Apachejem Kafko in nadobudnejšim Apachejem Pulsarjem? Oglejmo si njihove osnovne ponudbe odprtokodnih programov in kaj vse predstavljajo izdaje podjetij za vzdrževanje jeder.

Apač Kafka

Apache Kafka, ki ga je razvil LinkedIn in ga kot odprtokodno izdal leta 2011, se je razširil daleč naokoli in je pri mnogih postal privzeta izbira, ko razmišljajo o dodajanju storitvenega vodila ali sistema pub / sub v arhitekturo. Od prvega nastopa Apacheja Kafke je ekosistem Kafke precej zrasel in dodal sistemski register za uveljavitev shem v sporočanju Apache Kafka, Kafka Connect za enostavno pretakanje iz drugih podatkovnih virov, kot so zbirke podatkov v Kafko, Kafka Streams za obdelavo porazdeljenih tokov in nazadnje KSQL za izvajanje poizvedb, podobnih SQL, po Kafkinih temah. (Tema v Kafki je ime za določen kanal.)

Standardni primer uporabe številnih plinovodov v realnem času, zgrajenih v zadnjih nekaj letih, je bil potiskanje podatkov v Apache Kafka in nato uporaba procesorja tokov, kot sta Apache Storm ali Apache Spark, za vnos podatkov, izvajanje in obdelavo ter nato objava izhod na drugo temo za nadaljnjo porabo. S storitvami Kafka Streams in KSQL lahko obravnavate vse vaše potrebe po cevovodih podatkov, ne da bi morali kadar koli zapustiti projekt Apache Kafka, čeprav lahko za obdelavo podatkov po potrebi še vedno uporabljate zunanjo storitev.

Čeprav je bil Apache Kafka vedno zelo prijazen z vidika razvijalca, je bil operativno nekaj mešanega. Priprava in zagon majhne grozde je razmeroma enostavna, vendar je vzdrževanje velike grozde pogosto polno težav (npr. Zamenjava vodilne particije po okvari posrednika Kafka).

Nadalje je bil pristop, ki je bil uporabljen za podporo večnajemniškemu stanovanjskemu programu s pomočjo pripomočka MirrorMaker, zanesljiv način, da si SRE izvlečejo lase. MirrorMaker dejansko velja za tako težavo, da so podjetja, kot je Uber, ustvarila svoj sistem za kopiranje v podatkovnih centrih (uReplicator). Confluent vključuje Confluent Replicator kot del poslovne ponudbe podjetja Apache Kafka. Kot nekdo, ki je moral vzdrževati nastavitev MirrorMakerja, je škoda, da Replicator ni del odprtokodne različice.

Vsekakor pa niso vse slabe novice na operativni fronti. V sedanji seriji Apache Kafka 1.x je bilo opravljenega veliko dela za zmanjšanje nekaterih preglavic vodenja grozda. V zadnjem času je prišlo do nekaterih sprememb, ki omogočajo, da sistem bolj poenostavljeno zažene velike grozde z več kot 200.000 particijami, izboljšave, kot je dodajanje čakalnih vrst »mrtvih črk« v Kafka Connect, pa omogočajo prepoznavanje in obnavljanje težav v virih podatkov in ponorih. lažje. Verjetno bomo tudi v letu 2019 videli podporo za delovanje Apacheja Kafke na Kubernetesu (prek grafikonov Helm in operaterja Kubernetes).

Leta 2014 so trije prvotni razvijalci Kafke (Jun Rao, Jay Kreps in Neha Narkhede) ustanovili Confluent, ki v svoji platformi Confluent ponuja dodatne funkcije podjetja, kot so zgoraj omenjeni replikator, nadzorni center, dodatni varnostni vtičniki in običajna ponudba podpore in profesionalnih storitev. Confluent ima tudi ponudbo v oblaku, Confluent Cloud, ki je popolnoma vodena storitev Confluent Platform, ki deluje na Amazon Web Services ali Google Cloud Platform, če se raje ne bi ukvarjali z nekaterimi operativnimi režijami delujočih grozdov.

Če ste zaklenjeni v AWS in uporabljate Amazonove storitve, upoštevajte, da je Amazon predstavil javni predogled Amazon Managed Streaming for Kafka (MSK), ki je popolnoma upravljana Kafkina storitev v ekosistemu AWS. (Upoštevajte tudi, da Amazon MSK ni na voljo v partnerstvu z družbo Confluent, zato zagon MSK ne bo dobil vseh funkcij platforme Confluent Platform, temveč le tiste, ki so na voljo v odprtokodni Apache Kafka.)

Apache Pulsar

Glede na naklonjenost Apache Software Foundation za zbiranje projektov, za katere se zdi, da podvajajo funkcionalnost (bi radi Apache Apex, Apache Flink, Apache Heron, Apache Samza, Apache Spark ali Apache Storm za vaše usmerjene potrebe po obdelavi podatkov iz acikličnega grafa?), Bi želeli? naj vam bo odpuščeno, da boste pogledali mimo obvestil o tem, da je Apache Pulsar postal vrhunski projekt Apache, preden ste Apache Kafka izbrali kot zaupanja vredno možnost za svoje potrebe po sporočanju. Toda Apache Pulsar si zasluži pogled.

Apache Pulsar se je rodil v podjetju Yahoo, kjer je bil ustvarjen za potrebe organizacije, ki je takrat druge ponudbe odprte kode niso mogle zagotoviti. Kot rezultat tega je bil Pulsar zgrajen od začetka, da je obdeloval milijone tem in particij s popolno podporo za geo replikacijo in večnajem.

Pod platnicami Apache Pulsar uporablja Apache BookKeeper za ohranjanje svojih potreb po pomnilniku, vendar obstaja preobrat: Apache Pulsar ima funkcijo Tiered Storage, ki je kar nekaj. Ena od težav porazdeljenih dnevniških sistemov je, da čeprav želite, da podatki ostanejo v dnevniški platformi čim dlje, diskovni pogoni niso neskončno veliki. Na neki točki se odločite, da ta sporočila izbrišete ali shranite drugam, kjer jih bo po potrebi mogoče predvajati po cevovodu za podatke. Kar deluje, vendar je lahko operativno zapleteno. Apache Pulsar lahko prek Tiered Storage samodejno premakne starejše podatke na Amazon S3, Google Cloud Storage ali Azure Blog Storage in stranki še vedno predstavi pregleden pogled; odjemalec lahko bere že od začetka, tako kot da so v dnevniku vsa sporočila.

Tako kot Apache Kafka je tudi Apache Pulsar vzgojil ekosistem za obdelavo podatkov (čeprav ponuja tudi adapterje za Apache Spark in Apache Storm). Pulsar IO je enakovreden Kafka Connect za povezavo z drugimi podatkovnimi sistemi bodisi kot vir bodisi ponorov, Pulsar Functions pa zagotavlja funkcionalnost obdelave podatkov. Poizvedovanje po SQL je na voljo z uporabo vmesnika za Facebook-ov odprti vir Presto.

Zanimiva guba je, da funkcije Pulsar in Pulsar IO delujejo znotraj standardne skupine Pulsar, namesto da bi bili ločeni procesi, ki bi se lahko izvajali kjer koli. Čeprav gre za zmanjšanje fleksibilnosti, pa stvari z operativnega vidika poenostavljajo. (Obstaja lokalni način izvajanja, ki bi ga lahko zlorabili za izvajanje funkcij zunaj gruče, vendar se dokumentacija trudi in pravi: »Ne delaj tega!«)

Apache Pulsar ponuja tudi različne metode izvajanja funkcij znotraj gruče: lahko jih zaženete kot ločene procese, kot Dockerjeve vsebnike ali kot niti, ki se izvajajo v procesu JVM posrednika. To je povezano z modelom uvajanja za Apache Pulsar, ki že podpira Kubernetes ali Mesosphere DC / OS. Treba se je zavedati, da so funkcije Pulsar, Pulsar IO in SQL razmeroma novi dodatki Apache Pulsar, zato pričakujte nekaj ostrih robov, če jih uporabljate.

Obstaja tudi omejen ovitek API, združljiv s Kafko, samo za Javo, tako da lahko obstoječe aplikacije Apache Kafka potencialno integrirate v infrastrukturo Apache Pulsar. To je verjetno bolj primerno za raziskovalno testiranje in začasni načrt selitve kot proizvodna rešitev, vendar je lepo imeti!

Podobno kot Confluent so razvijalci Apache Pulsar pri Yahooju (Matteo Merli in Sijie Guo) ustanovili spinoff podjetje Streamlio, kjer so skupaj z ustvarjalci Apache Heron (Karthik Ramasamy in Sanjeev Kulkarni) soustanovitelji . Ponudba podjetja Streamlio vključuje običajne rešitve za komercialno podporo in profesionalne storitve, skupaj z upravljalno konzolo z zaprtimi viri, vendar so stvari, kot je učinkovita in trajna večnajemniška podpora, del temeljnega odprtokodnega izdelka.

Apache Kafka ali Apache Pulsar?

Apache Kafka je zrel, odporen in preizkušen izdelek. Ima odjemalce, napisane v skoraj vseh priljubljenih jezikih, pa tudi številne podprte konektorje za različne vire podatkov v Kafka Connect. Z upravljanimi storitvami, ki jih ponujata Amazon in Confluent, je enostavno dobiti, zagnati in vzdrževati veliko Kafkino grozdo - veliko lažje kot v prejšnjih letih. Apache Kafko uporabljam še naprej pri novih projektih in to bom verjetno počel še dolga leta.

Če pa boste zgradili sistem za sporočanje, ki ga je treba od začetka večnajemniško ali geokopirati ali ki ima velike potrebe po shranjevanju podatkov, poleg tega pa je treba vse te podatke enostavno povprašati in obdelati, ne glede na to, kako že v preteklosti, potem predlagam brcanje gum Apacheja Pulsarja. Vsekakor ustreza nekaterim primerom uporabe, s katerimi se Apache Kafka lahko spopade, hkrati pa dobro deluje v smislu osnovnih funkcij, ki jih potrebujete iz porazdeljene platforme dnevnika. In če vas ne moti, da ste na prvem mestu glede dokumentacije in odgovorov na Stack Overflow, še toliko bolje!

$config[zx-auto] not found$config[zx-overlay] not found