Blog

Postignite više s Data(Powerom) i Kafkom

U ovom ćemo vam blog postu predstaviti interesantnu arhitekturu koja kombinira dokazane IBM-ove tehnologije s open-source Big Data tehnologijama.
, 10.01.2019.

Želite li uzeti podatke iz DataPowera i staviti ih u Kafku? Želite li postići više s DataPowerom i MQ-om? U ovom ćemo vam blog postu predstaviti interesantnu arhitekturu koja kombinira dokazane IBM-ove tehnologije s open-source Big Data tehnologijama.

CROZ i Apis IT nedavno su udružili snage kako bi stvorili brzi i skalabilni sustav otporan na greške koji će prenositi podatke iz DataPowera u Kafku i procesuirati ih u Sparku. Kada poruke uspješno prenesemo u Kafku, dostupne su Sparku kao i mnogim drugim tehnologijama u Hadoop ekosustavu.

Što nam je zapravo bio cilj? Htjeli smo iskoristiti mogućnosti Spark Structured Streaminga kako bismo izračunali koliko podataka prikupljamo u stvarnom vremenu. To zvuči odlično! Volimo Spark jer je brz i ima skalabilni in-memory engine koji nas nikada nije iznevjerio. No treba mu podataka. Apache Kafka nam je jedna od najdražih tehnologija koje koristimo kao izvor podataka za Spark streaming. Kafka je skalabilan sustav za razmjenu poruka koji je otporan na greške, a u posljednje je vrijeme vrlo popularan upravo jer može procesuirati milijarde događaja u samo jednom danu. Pa hajdemo napraviti kratki pregled ovog proizvoda.

Generalno Kafku smatramo platformom za distribucijsko streamanje. Mnogi je smatraju publish-subscribe sustavom – no mnogo je više od toga. Kafka je sličan publish-subscribe sustavima jer pruža publish-subscribe funkcionalnosti koje su slične redovima poruka ili enterprise sustavu razmjene poruka. Poruke sprema pod teme koje se sastoje od particija. Kada kreirate poruku unutar neke Kafkine teme, one se upisuju u particiju koju možete posebno odrediti; a možete i prepustiti Kafki da odluči kamo će spremiti te poruke. Bitno je spomenuti da su upravo particije razlog za Kafkinu razinu skalabilnosti. Uvijek možemo jednostavno nadodati nove particije u neku Kafka temu te tako skalirati sustav.

Kafka je također poseban jer kontinuirano sprema velike količine podataka na izdržljiv način otporan na greške. Svaku poruku moguće je replicirati na više Kafkinih servera i zadržati ih koliko god je potrebno. S takvim zadržavanjem poruka moguće je koristiti stare poruke kada god poželimo.

Za kraj, Kafka je streaming platforma koja nam omogućuje da u gotovo stvarnom vremenu reagiramo na poruke. A ima i mnoga spremišta podataka koja koristi kao izvore i izljeve.

Hajdemo analizirati kako stojimo:

Koristit ćemo Spark Structured Streaming

  • znamo ga koristiti i znamo da je super

Koristit ćemo Kafku za izvor za Spark Structured Streaming

  • znamo ga koristiti i znamo da je super

Imamo podatke koji pristižu na DataPower i želimo ih dovesti do Kafke

  • znamo koristiti DataPower i znamo da je super
  • ne znamo kako dovesti podatke od DataPowera do Kafke!

Tu počinje zabava. Imamo puno iskustva s DataPowerom i poznajemo puno sličnih tehnologija, ali nismo to nikad prije koristili kako bismo prenosili podatke u Kafku. Najčešće se koristi Kafka Connect API kada treba spojiti Kafku s drugim spremištima podataka. Malo smo istraživali i zaključili da na GitHubu postoji takozvani „Kafka Connect Source Connector for IBM MQ“. Stvorio ga je IBM pod Apache licencom. Također ga možete koristiti kao dio Confluent platforme.

S obzirom na to da imamo stvarno jako puno iskustva s IBM MQ-om, odmah smo htjeli dodatno istražiti povezivost MQ-a i Kafke. Prvo smo napravili test. Zatim smo konfigurirali nekoliko parametara u Kafka IBM MQ Connectoru i to je sve. Nevjerojatno nas je iznenadilo koliko je bilo jednostavno pokrenuti taj proces. Nakon što smo MQ-u ispisali nekoliko poruka, počeo ih je replicirati za Kafku točno kako smo i očekivali. To nas je dovelo do finalne arhitekture koja je prikazana na sljedećem grafu:

Pa da opišemo što se zapravo događa u našoj arhitekturi: koje podatke koristimo, gdje oni i kako idu.

Transakcije koje iz izvornih sustava dolaze do DataPowera pretvaraju se u JSON datoteke koje se upisuju u MQ. Veza među DataPowerom i MQ-om iznimno je brza i pouzdana, što je upravo jedan od razloga zašto nam je super.

Kafka IBM MQ Connector stvara JSON poruke od MQ-a do Kafke s nevjerojatno niskom latencijom. Piše poruke za Kafku tako da daje prednost Kafkinom modelu particija. Zbog toga je ostvarena visoka propusnost poruka.

Spark Structured Streaming čita poruke iz Kafke i računa prikupljene podatke u stvarnom vremenu. Ono što smo mi htjeli postići je izračunati zbroj vrijednosti dnevnih transakcija koje smo grupirali na temelju određenog ključa. Spark Structured Streaming omogućuje jednostavan i efikasan način da sačuvamo samo današnje poruke i vrlo brzo izračunamo koliko prikupljamo. Također je bitno primijetiti da je latencija između Kafke i Sparka stvarno minimalna – baš kao i sve druge veze u našoj arhitekturi. Spark i Kafka su također odlična kombinacija zbog toga što su Kafkine particije mapirane po Sparkovim particijama, tako da dobivamo maksimalnu količinu paralelizama u svakom dijelu arhitekture.

I za kraj: rezultati Sparkovog proračuna spremaju se i u Cassandru i u Kafku. S obzirom na to da do sada imamo samo pozitivna iskustva s Cassandrom, odlučili smo da će to biti naš odabir. To je stvarno vrlo brza peer-to-peer NoSQL baza podataka, a dolazi i s jednim interesantnim featureom koji nam savršeno odgovara: kada nešto želite umetnuti u Cassandru, ali primarni ključ tog reda već postoji u bazi podataka, Cassandra će automatski ažurirati taj red. U nekim bazama podataka to je poznato i kao upsert.

Cassandru zatim koristim za ad-hoc upite i početno učitavanje podataka za web-aplikacije razvijene za praćenje promjena u stvarnom vremenu. Nakon prvog učitavanja podataka iz Cassandre, web-aplikacija nastavlja konzumaciju poruka od Kafke – pa tako ne koristi Cassandrine resurse te čita podatke na reaktivan način.

Zaključak: Svaki dio arhitekture je skalabilan, a latencija između različitih dijelova iznimno je niska, gotovo i neprimjetna. Možemo reći da smo završili PoC fazu, a sada nam preostaje ozbiljno testiranje performansi na ulaznom DataPower prometu.

Nadamo se da vam se sviđa naš post. Slobodno nas kontaktirajte ako vas zanima bilo koji dio arhitekture – od DataPowera do Cassandre.

I dalje ćemo vam donosite zanimljive priče iz Big Data područja.

Tagovi:
Povratak