У овој лекцији ћемо видети шта је Апацхе Кафка и како то функционише заједно са неким најчешћим случајевима употребе. Апацхе Кафка је првобитно развијен у ЛинкедИн-у 2010. године, а 2012. прешао је у врхунски Апацхе-ов пројекат. Има три главне компоненте:
- Издавач-претплатник: Ова компонента је одговорна за ефикасно управљање и испоруку података кроз Кафка чворове и потрошачке апликације које се увелико скалирају (као дословно).
- Цоннецт АПИ: Цоннецт АПИ је најкориснија карактеристика за Кафку и омогућава Кафка интеграцију са многим спољним изворима података и сливницима.
- Потоци Кафка: Коришћењем Кафка токова можемо размотрити могућност обраде долазних података у размерама у готово реалном времену.
У наредним одељцима проучићемо много више Кафкиних концепата. Идемо напред.
Апацхе Кафка Цонцептс
Пре него што дубље копамо, морамо бити темељни у вези са неким концептима у Апацхе Кафки. Ево термина које бисмо требали врло кратко знати:
-
- Продуцент: Ово је апликација која шаље поруку Кафки
- Потрошач: Ово је апликација која троши податке из Кафке
- Порука: Подаци које апликација произвођач путем апликације Кафка шаље потрошачкој апликацији
- Веза: Кафка успоставља ТЦП везу између Кафка кластера и апликација
- Тема: Тема је категорија којој се послати подаци означавају и достављају заинтересованим потрошачким апликацијама
- Подјела теме: Како једна тема може добити много података одједном, да би Кафка био водоравно скалабилан, свака тема је подељена на партиције и свака партиција може живети на било којој машини чвора кластера. Покушајмо да је представимо:
Тематске партиције
- Реплике: Као што смо горе проучавали да је тема подељена на партиције, сваки запис поруке се реплицира на више чворова кластера како би се одржао редослед и подаци сваког записа у случају да један од чворова умре.
- Потрошачке групе: Више потрошача које занима иста тема може се држати у групи која се назива група потрошача
- Офсет: Кафка је скалабилан, јер потрошачи заправо чувају коју су поруку последњи преузели као вредност „померања“. То значи да за исту тему одступање потрошача А може имати вредност 5, што значи да треба да обради шести пакет следећи, а за потрошача Б вредност одступања може бити 7, што значи да треба следећи да обради осми пакет. Ово је у потпуности уклонило зависност од саме теме за чување ових мета-података који се односе на сваког потрошача.
- Чвор: Чвор је машина са једним сервером у кластеру Апацхе Кафка.
- Кластер: Кластер је група чворова и.е., група сервера.
Концепт теме, партиција теме и офсета такође се може јасно објаснити илустративном сликом:
Парција теме и компензација потрошача у Апацхе Кафки
Апацхе Кафка као систем за размену порука „Објави и претплати се“
Уз Кафку, произвођачке апликације објављују поруке које стижу на Кафка чвор, а не директно потрошачу. Са овог Кафка чвора, поруке конзумирају потрошачке апликације.
Кафка произвођач и потрошач
Како једна тема може добити много података одједном, да би Кафка била хоризонтално скалабилна, свака тема је подељена на преграде и свака партиција може живјети на било којој машини чвора кластера.
Опет, Кафка Брокер не води евиденцију о томе који је потрошач потрошио колико пакета података. То је одговорност потрошача да води евиденцију о подацима које је потрошила. Из разлога што Кафка не прати признања и поруке сваке потрошачке апликације, може управљати са много више потрошача са занемарљивим утицајем на проток података. У производњи, многе апликације чак следе образац серијских потрошача, што значи да потрошач у редовном временском интервалу конзумира све поруке у реду.
Инсталација
Да бисте почели да користите Апацхе Кафка, он мора бити инсталиран на машини. Да бисте то урадили, прочитајте Инсталирање Апацхе Кафке на Убунту-у.
Случај употребе: Праћење употребе веб страница
Кафка је одличан алат који се користи када треба да пратимо активности на веб локацији. Подаци о праћењу укључују, без ограничења, приказе страница, претраживања, отпремања или друге радње које корисници могу предузети. Када је корисник на веб локацији, корисник може предузети било који број радњи када сурфује кроз веб локацију.
На пример, када се нови корисник региструје на веб локацији, активност се може пратити по којем редоследу нови корисник истражује функције веб локације, ако корисник постави свој профил по потреби или више воли да директно пређе на функције веб сајт. Кад год корисник кликне на дугме, метаподаци за то дугме сакупљају се у пакету података и шаљу у Кафка кластер одакле служба аналитике за апликацију може да прикупља ове податке и даје корисне увиде у повезане податке. Ако желимо поделити задатке на кораке, ево како ће изгледати процес:
- Корисник се региструје на веб локацији и улази на контролну таблу. Корисник покушава одмах да приступи функцији интеракцијом са дугметом.
- Веб апликација израђује поруку са овим метаподацима за партицију теме „клик“.
- Порука се додаје евиденцији урезивања и повећава се помак
- Потрошач сада може повући поруку Кафка Брокера и приказати употребу веб странице у реалном времену и приказати прошле податке ако ресетује свој помак на могућу прошлу вредност
Случај употребе: Ред порука
Апацхе Кафка је одличан алат који може да делује као замена за алате за посредовање порука попут РаббитМК. Асинхроне поруке помажу у раздвајању апликација и креирају високо скалабилан систем.
Баш као и концепт микро услуга, уместо да направимо једну велику апликацију, можемо и ми да поделимо апликацију на више делова и сваки део има врло специфичну одговорност. На тај начин се различити делови могу писати и на потпуно независним програмским језицима! Кафка има уграђени систем за партиционирање, репликацију и отпорност на грешке што га чини добрим као систем за брокерирање порука.
У последње време Кафка се такође види као врло добро решење за прикупљање дневника које може да управља посредником сервера за прикупљање датотека дневника и пружа те датотеке централном систему. Помоћу Кафке могуће је генерисати било који догађај за који желите да било који други део ваше апликације зна.
Коришћење Кафке на ЛинкедИну
Занимљиво је приметити да је Апацхе Кафка раније виђен и коришћен као начин на који цевоводи података могу бити усклађени и путем којих се подаци уносе у Хадооп. Кафка је одлично радио када је било присутно више извора података и одредишта, а обезбеђивање одвојеног процеса цевовода за сваку комбинацију извора и одредишта није било могуће. ЛинкедИн-ов архитект Кафка, Јаи Крепс, овај познати проблем добро описује у блогу:
Моје лично учешће у овоме започело је око 2008. године након што смо послали нашу продавницу кључева и вредности. Мој следећи пројекат је био да покушам да покренем исправно подешавање Хадоопа и тамо преместим неке од наших процеса препорука. Имајући мало искуства у овој области, природно смо предвидели неколико недеља за улазак и излазак података, а остатак времена за примену фантастичних алгоритама предвиђања. Тако је започео дугачак слоган.
Апацхе Кафка и Флуме
Ако се померите да бисте упоредили ово двоје на основу њихових функција, наћи ћете пуно заједничких карактеристика. Овде су неки од њих:
- Препоручује се употреба Кафке када имате више апликација које троше податке уместо Флуме-а, који је посебно направљен за интеграцију са Хадооп-ом и може се користити само за унос података у ХДФС и ХБасе. Флуме је оптимизован за ХДФС операције.
- Са Кафком је лоша страна морати кодирати произвођаче и потрошачке апликације, док у Флуме-у има много уграђених извора и судопера. То значи да ако се постојеће потребе подударају са Флуме функцијама, препоручује вам се да користите сам Флуме како бисте уштедели време.
- Флуме може да користи податке у лету уз помоћ пресретача. То може бити важно за маскирање и филтрирање података, док је Кафки потребан спољни систем за обраду тока.
- Могуће је да Кафка користи Флуме као потрошача када треба да унесемо податке на ХДФС и ХБасе. То значи да се Кафка и Флуме заиста добро интегришу.
- Какфа и Флуме могу гарантовати нулти губитак података тачном конфигурацијом, што је такође лако постићи. Ипак, да нагласимо, Флуме не реплицира догађаје, што значи да ћемо изгубити приступ догађајима док се диск не опорави ако неки од чворова Флуме не успије
Закључак
У овој лекцији смо погледали многе концепте о Апачу Кафки. Прочитајте више постова заснованих на Кафки овде.