Kuidas teada saada, kas Apache Kafka sobib teile

Apache Kafka on viimase paari aasta jooksul oma funktsionaalsuse osas palju kasvanud. Seda kasutab tootmises üks kolmandik Fortune 500-st, sealhulgas seitse 10-st ülemaailmsest pangast, kaheksa-st kümnest kindlustusseltsist ja üheksa 10-st USA telekommunikatsiooniettevõttest [allikas].

See artikkel annab teile kiire ülevaate Kafka pakutavatest põhifunktsioonidest. Toon palju näiteid, mis aitavad teil mõista tavalisi kasutusharjumusi. Loodetavasti leiate mõne seose oma töövoogudega, et saaksite Kafka jõudu ära kasutama. Alustame lähemalt kahe peamise funktsionaalsusega, mida pakub Kafka.

1. Kafka kui sõnumsidesüsteem

Sõnumsidet kasutatakse laialdaselt kahel viisil:

  • Järjekorda seadmine (SQS, seller ja nii edasi): järjekordade tarbijad tegutsevad töötajate rühmana. Iga sõnum läheb ainult ühele töötaja protsessidest, jagades töö tõhusalt.
  • Avalda-telli (SNS, PubNub ja nii edasi): tellijad on tavaliselt üksteisest sõltumatud. Iga tellija saab igast sõnumist koopia. See toimib nagu teavitussüsteem.

Mõlemad on kasulikud paradigmad. Järjekord jagab töö laiali ja sobib suurepäraselt rikkekindluse ja ulatuse jaoks. Avaldamine-tellimine võimaldab mitme tellija olemasolu, mis võimaldab teil oma süsteemid lahti ühendada. Kafka ilu seisneb selles, et see ühendab nii järjekorda seadmise kui ka avaldamise ja tellimise paradigmad ühtseks jõuliseks sõnumsidesüsteemiks.

Soovitan kindlasti läbi lugeda dokumendid, mis selgitavad teema aluseks olevat kujundust ja kuidas see kombinatsioon saavutatakse teema, vaheseinte ja tarbijarühmade abil. Ausalt öeldes saab selle funktsionaalsuse saavutada ka RabbitMQ või SNS-SQS kombinatsiooni abil.

2. Kafka voo töötlemiseks

Kui teil on vastupidav, skaleeritav sõnumside süsteem, on kõik, mida vajate, lihtne viis sõnumivoo töötlemiseks. Streami API pakub just seda. See on Java klientteek (nüüd ka Scala), mis pakub kõrgemat abstraktsiooni kui tootja ja tarbija API.

Selle abil on lihtne teostada:

  • kodakondsuseta toimingud, näiteks voogesõnumite filtreerimine ja teisendamine
  • oleklikud toimingud, näiteks liitumine ja koondamine ajaaknas

Voo API hoolitseb sõnumite seerialiseerimise / realiseerimise eest ja hooldab olekut, mida on vaja olekutegelike toimingute jaoks.

Näita mulle koodi

Siin on Stream API näide, mis loeb sisendvoo lihtteksti, loendab iga sõna esinemised ja kirjutab loenduse väljundvoogu. Vaata täisversiooni siit.

Aknaakna abil on lihtne ajavahemikus koondada ja jälgida asju, nagu sel päeval N-tähelised sõnad (siin pole näidatud).

Kafka tüüpilised kasutusjuhud (näited)

  • Kujutage ette, et teil on reiside veebisait. Hotellide ja lendude hinnad muutuvad kogu aeg. Nendest muudatustest tuleb teavitada mõnda süsteemi osa (hinnateated, analüüs). Postitate muudatused Kafka teemadel ja iga komponent, millest tuleb teatada, toimib tellijana. Kõik ühe abonendi süsteemi sõlmed moodustavad ühe tarbijarühma. Antud teade saadetakse tarbijarühmas ainult ühele sõlmele. Nii saab iga komponent teate koopia, pluss töö jaotatakse iga komponendi sees tõhusalt.
  • Veebisaidi tegevust (lehevaatamisi, otsinguid või muid toiminguid, mida kasutajad võivad teha) saab Kafka kaudu jälgida ja analüüsida. Tegelikult oli see originaalne kasutusjuhtum, mille jaoks Kafka leiutati LinkedInis. Veebisaidi tegevused avaldatakse kesksetes teemades koos ühe teemaga tegevuste liigi kohta. Voogu saab töödelda reaalajas, et saada ülevaade kasutajate kaasamisest, väljalangemistest, lehtede voogudest ja muust.
  • Kujutage ette, et teie asukohateave pärineb GPS-signaalidelt või nutitelefonidelt ja soovite seda reaalajas töödelda, et näidata sõiduki teekonda, läbitud vahemaad jne. Sissetulevaid andmeid saab avaldada Kafka teemadel ja töödelda Stream API-ga. Riiklik töötlemine akendega on kasulik siis, kui peate teatud aja jooksul koguma ja töötlema kõiki antud kasutaja asukohaandmeid.

Kui mitte Kafkat kasutada

  • Kui te ei saa või ei taha kolida Kafka klastriga vestlevate teenuste jaoks Java / Scalasse, siis unustate kõik Kafka Streams'i pakutavad kõrgema taseme abstraktsioonid. Streams API on põhiliselt Kafka klastriga vesteldav kliendikogu. Kafka taga asuv ettevõte Confluent on hetkel keskendunud Java-le. Populaarsed keeled, näiteks Python, on juba üle 1,5 aasta olnud ka voogesituse toetamise avatud teema.
  • Kui kõik, mida vajate, on ülesannete järjekord, kaaluge selle asemel RabbitMQ. Kafka abil saab igat partitsiooni tarbida ainult üks tarbija. Ja peate ülesande järjekorda pannes otsustama partitsiooni. Seega on võimalik, et teatud partitsiooni ülesannete tulv võib põhjustada nälgimist ja te ei saa midagi teha, kuna tarbijate lisamine ei aita.
  • Kui töötlete iga päev vaid paar tuhat sõnumit, siis on Kafka tõenäoliselt üle jõu käinud. Kafka on tõesti loodud suuremahulise voo töötlemise käitlemiseks, nii et selle seadistamine ja hooldamine pole seda väärt, kui teil pole / ette näha pole.

See on kõik. See hõlmab olulisi asju, mida peate Apache Kafka kohta teadma. Kui teile meeldis seda lugeda, jälgige minu blogi. Andke mulle teada, kui soovite näha ülevaadet mõne muu tööriista kohta.

Vaata kõiki Amit Rathi postitusi

Algselt avaldati veebisaidil blog.amirathi.com 3. märtsil 2018.