Programmēšana

Apache Kafka pret Apache Pulsar: Kā izvēlēties

Mūsdienās masveidā mērogojama kroga / apakšziņu sūtīšana praktiski ir Apache Kafka sinonīms. Apache Kafka joprojām ir pārliecinoša, atvērtā koda, izvēlēta pieeja izplatītām straumēšanas lietojumprogrammām neatkarīgi no tā, vai apstrādei pievienojat kaut ko līdzīgu Apache Storm vai Apache Spark vai izmantojat Apache Kafka piedāvātos apstrādes rīkus. Bet Kafka nav vienīgā spēle pilsētā.

Apache Pulsar, kuru izstrādājis Yahoo un tagad Apache Software Foundation projekts, gatavojas ziņojumapmaiņas kronim, kuru Apache Kafka ir nēsājusi daudzus gadus. Apache Pulsar daudzās situācijās piedāvā ātrāku caurlaidspēju un zemāku latentumu nekā Apache Kafka, kā arī saderīgu API, kas ļauj izstrādātājiem salīdzinoši viegli pāriet no Kafka uz Pulsar.

Kā vajadzētu izvēlēties starp godājamo stingro Apache Kafka un augšupejošo Apache Pulsar? Apskatīsim viņu atklātā pirmkoda galvenos piedāvājumus un to, ko galdu uztur galveno uzņēmumu izdevumi.

Apache Kafka

Apache Kafka, kuru izstrādāja LinkedIn un kas tika izlaists kā atvērtais avots 2011. gadā, ir izplatījies tālu un plaši, daudziem kļūstot par noklusējuma izvēli, domājot par servisa autobusa vai kroga / apakšsistēmas pievienošanu arhitektūrai. Kopš Apache Kafka debijas Kafka ekosistēma ir ievērojami pieaugusi, pievienojot shēmas reģistru, lai ieviestu shēmas Apache Kafka ziņojumapmaiņā, Kafka Connect, lai ērti straumētu no citiem datu avotiem, piemēram, datu bāzēm uz Kafka, Kafka Streams izplatītas straumes apstrādei un pavisam nesen KSQL SQL līdzīgu vaicājumu veikšanai par Kafka tēmām. (Kafkas tēma ir konkrēta kanāla nosaukums.)

Daudzu reāllaika cauruļvadu, kas būvēti pēdējos gados, standarta izmantošanas gadījums ir bijis datu ievietošana Apache Kafka un pēc tam datu plūsmai, izpildei un apstrādei un pēc tam publicēšanai jāizmanto straumes procesors, piemēram, Apache Storm vai Apache Spark. izejas uz citu tēmu pakārtotajam patēriņam. Izmantojot Kafka Streams un KSQL, visas jūsu datu cauruļvada vajadzības var apstrādāt, neatstājot Apache Kafka projektu jebkurā laikā, lai gan, protams, jūs joprojām varat izmantot ārēju pakalpojumu datu apstrādei, ja nepieciešams.

Kaut arī Apache Kafka vienmēr ir bijis ļoti draudzīgs no izstrādātāja viedokļa, tas operacionāli ir bijis kaut kas jauks. Maza kopas izveidošana un darbināšana ir samērā vienkārša, taču liela klastera uzturēšana bieži ir saistīta ar problēmām (piemēram, līdera nodalījuma maiņa pēc Kafka brokera neveiksmes).

Turklāt pieeja daudzdzīvokļu īres atbalstam, izmantojot lietderību, ko sauc par MirrorMaker, ir drošs veids, kā panākt, lai SRE izvelk matus. Patiešām, MirrorMaker tiek uzskatīta par tādu problēmu, ka tādi uzņēmumi kā Uber ir izveidojuši savu replikācijas sistēmu datu centros (uReplicator). Confluent ietver Confluent Replicator kā daļu no uzņēmuma Apache Kafka piedāvājuma. Runājot kā par tādu, kuram bija jāuztur MirrorMaker iestatījumi, ir žēl, ka Replicator nav daļa no atvērtā pirmkoda versijas.

Tomēr tas noteikti nav viss sliktais jaunums operatīvajā frontē. Pašreizējā Apache Kafka 1.x sērijā ir paveikts liels darbs, lai mazinātu dažas klastera darbības galvassāpes. Nesen ir notikušas dažas izmaiņas, kas ļauj sistēmai racionālāk palaist lielus vairāk nekā 200 000 nodalījumu kopas, un uzlabojumi, piemēram, “mirušo burtu” rindu pievienošana Kafka Connect, ļauj tik daudz identificēt un atgūt no problēmām datu avotos un izlietnēs vieglāk. Mēs, visticamāk, redzēsim arī Apache Kafka palaišanas ražošanas līmenī Kubernetes 2019. gadā (izmantojot Helm diagrammas un Kubernetes operatoru).

Vēl 2014. gadā trīs no sākotnējiem Kafka izstrādātājiem (Jun Rao, Jay Kreps un Neha Narkhede) izveidoja Confluent, kas savā Confluent platformā nodrošina papildu uzņēmuma funkcijas, piemēram, iepriekšminēto replikatoru, Control Center, papildu drošības spraudņus un parastais atbalsta un profesionālo pakalpojumu piedāvājums. Confluent ir arī mākoņu piedāvājums Confluent Cloud, kas ir pilnībā pārvaldīts Confluent Platform pakalpojums, kas darbojas Amazon Web Services vai Google Cloud Platform, ja nevēlaties pats rīkoties ar kādu no klastera darbības operatīvajām izmaksām.

Ja esat ieslēgts AWS un izmantojat Amazon pakalpojumus, ņemiet vērā, ka Amazon ir ieviesis publisku Amazon Managed Streaming for Kafka (MSK) priekšskatījumu, kas ir pilnībā pārvaldīts Kafka pakalpojums AWS ekosistēmā. (Ņemiet vērā arī to, ka Amazon MSK nav tiek nodrošināts sadarbībā ar Confluent, tāpēc, palaižot MSK, jūs nesaņemsit visas Confluent Platform funkcijas, bet tikai tās, kas tiek nodrošinātas atvērtā koda Apache Kafka.)

Apache Pulsar

Ņemot vērā Apache programmatūras fonda vēlmi uzņemt projektus, kas, šķiet, dublē funkcionalitāti (vai jūs vēlētos Apache Apex, Apache Flink, Apache Heron, Apache Samza, Apache Spark vai Apache Storm savām virzītajām aciklisko diagrammu datu apstrādes vajadzībām?), Jūs pirms Apache Kafka izvēles kā uzticamu opciju savām ziņojumapmaiņas vajadzībām, jums jāpiedod, ja esat meklējis paziņojumus par Apache Pulsar kļūšanu par augstākā līmeņa Apache projektu. Bet Apache Pulsar ir pelnījis skatienu.

Apache Pulsar dzimis Yahoo, kur tas tika izveidots, lai apmierinātu organizācijas vajadzības, kuras citi atvērtā koda piedāvājumi tajā laikā nevarēja nodrošināt. Rezultātā Pulsar tika uzbūvēts no pamatiem, lai apstrādātu miljoniem tēmu un starpsienu, pilnībā atbalstot ģeoreplikāciju un daudzdzīvokļu īri.

Zem segas Apache Pulsar izmanto Apache BookKeeper, lai saglabātu savas krātuves vajadzības, taču ir vērojams pagrieziens: Apache Pulsar ir funkcija, ko sauc par daudzpakāpju krātuvi. Viena no izplatīto žurnālu sistēmu problēmām ir tā, ka, lai gan jūs vēlaties, lai dati pēc iespējas ilgāk paliktu žurnāla platformā, diskdziņi nav bezgalīgi lieli. Kādā brīdī jūs pieņemat lēmumu vai nu izdzēst šos ziņojumus, vai arī glabāt tos citur, kur tos vajadzības gadījumā nākotnē var atkārtot, izmantojot datu cauruļvadu. Kas darbojas, bet var būt operatīvi sarežģīts. Apache Pulsar, izmantojot daudzpakāpju krātuvi, var automātiski pārvietot vecākus datus uz Amazon S3, Google Cloud Storage vai Azure Blog Storage, un joprojām klientam nodrošināt caurspīdīgu skatu; klients var lasīt no laika sākuma tāpat kā tad, ja visi ziņojumi būtu iekļauti žurnālā.

Tāpat kā Apache Kafka, arī Apache Pulsar ir izveidojis datu apstrādes ekosistēmu (lai gan tas nodrošina arī adapterus Apache Spark un Apache Storm). Pulsar IO ir ekvivalents Kafka Connect savienojumam ar citām datu sistēmām kā avotiem vai izlietnēm, un Pulsar Funkcijas nodrošina datu apstrādes funkcionalitāti. SQL vaicājumi tiek nodrošināti, izmantojot adapteri Facebook atvērtā koda Presto motoram.

Interesanta grumbiņa ir tā, ka Pulsar Functions un Pulsar IO darbojas standarta Pulsar klastera ietvaros, nevis atsevišķi procesi, kas potenciāli varētu darboties jebkur. Lai gan tas ir elastības samazinājums, tas no darbības viedokļa padara lietas daudz vienkāršākas. (Pastāv vietējais palaišanas režīms, kuru var ļaunprātīgi izmantot, lai palaistu funkcijas ārpus klastera, taču dokumentācija ir tā, lai teiktu “Nedariet to!”)

Apache Pulsar piedāvā arī dažādas funkciju izpildes metodes klastera iekšienē: tās var palaist kā atsevišķus procesus, kā Docker konteinerus vai kā pavedienus, kas darbojas starpnieka JVM procesā. Tas ir saistīts ar Apache Pulsar izvietošanas modeli, kas ražošanā jau atbalsta Kubernetes vai Mesosphere DC / OS. Viena lieta, kas jāapzinās, ir tā, ka Pulsar Funkcijas, Pulsar IO un SQL ir salīdzinoši jauni Apache Pulsar papildinājumi, tāpēc, ja tos izmantojat, sagaidiet dažas asas malas.

Ir arī ierobežots, tikai Java, ar Kafka saderīgs API iesaiņotājs, tāpēc jūs varat potenciāli integrēt esošās Apache Kafka lietojumprogrammas Apache Pulsar infrastruktūrā. Tas, iespējams, ir labāk piemērots izpētes testēšanai un pagaidu migrācijas plānam nekā ražošanas risinājums, taču ir patīkami!

Līdzīgi kā Confluent, Apache Pulsar izstrādātāji Yahoo (Matteo Merli un Sijie Guo) ir izveidojuši spinoff uzņēmumu Streamlio, kur viņi ir līdzdibinātāji kopā ar Apache Heron izveidotājiem (Karthik Ramasamy un Sanjeev Kulkarni). . Streamlio uzņēmuma piedāvājumā ietilpst parastais komerciālais atbalsts un profesionālo pakalpojumu risinājumi, kā arī slēgta pirmkoda pārvaldības konsole, taču tādas lietas kā efektīvs un izturīgs vairāku nomu atbalsts ir daļa no atvērtā pirmkoda produkta.

Apache Kafka vai Apache Pulsar?

Apache Kafka ir nobriedis, izturīgs un kaujas pārbaudīts produkts. Tajā ir klienti, kas rakstīti gandrīz visās populārajās valodās, kā arī daudz dažādu atbalstītu savienotāju Kafka Connect datu avotiem. Tā kā Amazon un Confluent piedāvā pārvaldītus pakalpojumus, ir viegli izveidot, palaist un uzturēt lielu Kafka kopu - daudz vieglāk nekā iepriekšējos gados. Es turpinu izmantot Apache Kafka jaunos projektos, un, iespējams, to darīšu vēl daudzus gadus.

Tomēr, ja jūs gatavojaties veidot ziņojumapmaiņas sistēmu, kurai no paša sākuma jābūt vairāku nomnieku vai ģeoreplikētām, vai arī tai ir lielas datu glabāšanas vajadzības, kā arī nepieciešamība viegli vaicāt un apstrādāt visus šos datus neatkarīgi no tā, kā senāk, senāk, tad iesaku spert Apache Pulsar riepas. Tas noteikti atbilst dažiem lietošanas gadījumiem, ar kuriem Apache Kafka var cīnīties, vienlaikus labi darbojoties arī attiecībā uz galvenajām funkcijām, kas jums nepieciešamas no izplatītās žurnāla platformas. Un, ja jums nav iebildumu būt par līderi dokumentācijas un atbildes uz kaudzes pārpildes jautājumiem ziņā, vēl jo vairāk!

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