Поређење водећих платформи за размену порука

Апацхе Кафка и РаббитМК су два широко коришћена брокера за размену порука који омогућавају раздвајање размене порука између апликација. Које су њихове најважније карактеристике и по чему се разликују једни од других? Хајдемо на концепте.

РаббитМК

РаббитМК је апликација отвореног кода за посредовање порука за комуникацију и размену порука између страна. Пошто је развијен у Ерлангу, веома је лаган и ефикасан. Ерланг језик је развио Ерицсон са фокусом на дистрибуиране системе.

Сматра се традиционалнијим брокером за размену порука. Заснован је на обрасцу издавач-претплатник, иако може да третира комуникацију синхроно или асинхроно, у зависности од тога шта је подешено у конфигурацији. Такође обезбеђује испоруку и наручивање порука између произвођача и потрошача.

Подржава АМКП, СТОМП, МКТТ, ХТТП и веб соцкет протоколе. Три модела за размену порука: тема, фаноут и директна:

  • Директна и индивидуална размена по теми или теми [topic]
  • Сви потрошачи повезани на ред примају [fanout] порука
  • Сваки потрошач добија послату поруку [direct]

Следеће су компоненте РаббитМК-а:

Произвођачи

Произвођачи су апликације које креирају и шаљу поруке РаббитМК-у. То може бити било која апликација која може да се повеже на РаббитМК и објави поруке.

Потрошачи

Потрошачи су апликације које примају и обрађују поруке од РаббитМК-а. То може бити било која апликација која се може повезати на РаббитМК и претплатити се на поруке.

Размене

Берзе су одговорне за примање порука од произвођача и њихово усмеравање у одговарајуће редове. Постоји неколико типова размене, укључујући директну, размену размјене, размену тема и заглавља, од којих свака има своја правила рутирања.

Редови

Редови су места где се поруке чувају док их потрошачи не конзумирају. Креирају их апликације или аутоматски РаббитМК када се порука објави на размени.

Вези

Везивања дефинишу однос између размена и редова. Они специфицирају правила рутирања за поруке, која размене користе за усмеравање порука у одговарајуће редове.

Архитектура РаббитМК

РаббитМК користи модел повлачења за испоруку порука. У овом моделу, потрошачи активно траже поруке брокера. Поруке се објављују на разменама одговорним за усмеравање порука у одговарајуће редове на основу кључева за рутирање.

Архитектура РаббитМК-а је заснована на архитектури клијент-сервер и састоји се од неколико компоненти које раде заједно како би обезбедиле поуздану и скалабилну платформу за размену порука. АМКП концепт обезбеђује компоненте размене, редове, везивања, као и издаваче и претплатнике. Издавачи објављују поруке на разменама.

Размена узима ове поруке и дистрибуира их у редове од 0 до н на основу одређених правила (везивања). Поруке ускладиштене у редовима потом могу преузети потрошачи. У поједностављеном облику, управљање порукама се врши у РаббитМК-у на следећи начин:

Извор слике: ВМваре

  • Издавачи шаљу поруке на размену;
  • Екцханге шаље поруке у редове и друге размене;
  • Када се порука прими, РаббитМК шаље потврде пошиљаоцима;
  • Потрошачи одржавају трајне ТЦП везе са РаббитМК и изјављују који ред примају;
  • РаббитМК усмерава поруке потрошачима;
  • Потрошачи шаљу потврде о успеху или грешци пријема поруке;
  • Након успешног пријема, порука се уклања из реда чекања.
  15 шаблона наруџбине за беспрекорну набавку

Апацхе Кафка

Апацхе Кафка је дистрибуирано решење за размену порука отвореног кода које је развио ЛинкедИн у Сцали. Он је способан да обрађује поруке и складишти их помоћу модела издавач-претплатник са високом скалабилности и перформансама.

Да бисте сачували примљене догађаје или поруке, дистрибуирајте теме међу чворовима користећи партиције. Он комбинује и обрасце издавач-претплатник и шеме редова порука, а такође је одговоран да обезбеди редослед порука за сваког потрошача.

Кафка је специјализован за висок проток података и ниско кашњење за руковање токовима података у реалном времену. Ово се постиже избегавањем превише логике на страни сервера (брокера), као и неких посебних детаља имплементације.

На пример, Кафка уопште не користи РАМ и одмах уписује податке у систем датотека сервера. Пошто се сви подаци записују секвенцијално, постижу се перформансе читања и писања, које су упоредиве са РАМ меморијом.

Ово су главни Кафкини концепти који га чине скалабилним, ефикасним и отпорним на грешке:

Тема

Тема је начин означавања или категоризације поруке; замислите ормар са 10 фиока; свака фиока може бити тема, а ормар је платформа Апацхе Кафка, тако да би поред категоризације груписаних порука, још једна боља аналогија о теми била представљена у релационим базама података.

Произвођач

Произвођач или продуцент је онај који се повезује на платформу за размену порука и шаље једну или више порука на одређену тему.

Цонсумер

Потрошач је особа која се повезује на платформу за размену порука и користи једну или више порука о одређеној теми.

Брокер

Концепт брокера на Кафка платформи није ништа друго до практично сам Кафка, а он је тај који управља темама и дефинише начин чувања порука, дневника итд.

Цлустер

Кластер је скуп брокера који комуницирају једни са другима или не ради боље скалабилности и толеранције грешака.

Лог фајл

Свака тема чува своје записе у формату дневника, то јест, на структуриран и секвенцијалан начин; датотека евиденције је, према томе, датотека која садржи информације о теми.

Партиције

Партиције су слој партиције порука унутар теме; ово партиционисање обезбеђује еластичност, толеранцију грешака и скалабилност Апацхе Кафке тако да свака тема може имати више партиција на различитим локацијама.

Архитектура Апача Кафке

Кафка је заснован на пусх моделу за испоруку порука. Користећи овај модел, поруке у Кафки се активно гурају до потрошача. Поруке се објављују на теме, које су подељене и распоређене међу различитим брокерима у кластеру.

Потрошачи се тада могу претплатити на једну или више тема и примати поруке како се производе о тим темама.

У Кафки, свака тема је подељена на једну или више партиција. Догађаји завршавају у партицији.

Ако постоји више од једног брокера у кластеру, онда ће партиције бити равномерно распоређене на све брокере (колико је то могуће), што ће омогућити скалирање оптерећења писања и читања у једној теми на неколико брокера одједном. Пошто је кластер, ради помоћу ЗооКеепер-а за синхронизацију.

  Водич за почетнике за ЛинкедИн маркетинг и аутоматизацију [7 Tools]

Прима продавнице и дистрибуира записе. Запис је податак који генерише неки системски чвор, који може бити догађај или информација. Шаље се у кластер, а кластер га чува у партицији теме.

Сваки запис има помак секвенце, а потрошач може да контролише офсет који користи. Дакле, ако постоји потреба за поновном обрадом теме, то се може урадити на основу офсета.

Извор слике: Википедија

Логика, као што је управљање ИД-ом последње прочитане поруке потрошача или одлука о томе на коју партицију се уписују новопристигли подаци, потпуно је пребачена на клијента (произвођача или потрошача).

Поред концепата произвођача и потрошача, постоје и концепти теме, партиције и репликације.

Тема описује категорију порука. Кафка постиже толеранцију грешака реплицирањем података у тему и скалирањем партиционисањем теме на више сервера.

РаббитМК против Кафке

Главне разлике између Апацхе Кафке и РаббитМК-а су због фундаментално различитих модела испоруке порука имплементираних у овим системима.

Конкретно, Апацхе Кафка функционише на принципу повлачења (повлачења) када сами потрошачи добијају поруке које су им потребне из теме.

РаббитМК, с друге стране, имплементира пусх модел тако што шаље потребне поруке примаоцима. Као такав, Кафка се разликује од РаббитМК-а на следеће начине:

#1. Архитектура

Једна од највећих разлика између РаббитМК-а и Кафке је разлика у архитектури. РаббитМК користи традиционалну архитектуру реда порука засновану на брокеру, док Кафка користи архитектуру дистрибуиране платформе за стриминг.

Такође, РаббитМК користи модел испоруке порука заснован на повлачењу, док Кафка користи модел заснован на пусх.

#2. Чување порука

РаббитМК ставља поруку у ФИФО ред (Фирст Инпут – Фирст Оутпут) и прати статус ове поруке у реду, а Кафка додаје поруку у дневник (уписује на диск), остављајући примаоцу да се побрине за добијање потребних информације из теме.

РаббитМК брише поруку након што је испоручена примаоцу, док Кафка чува поруку док није заказана за чишћење дневника.

Дакле, Кафка чува тренутна и сва претходна стања система и може се користити као поуздан извор историјских података, за разлику од РаббитМК-а.

#3. Балансирање оптерећења

Захваљујући моделу повлачења испоруке порука, РаббитМК смањује кашњење. Међутим, могуће је да се примаоци препуне ако поруке стигну у ред брже него што их могу обрадити.

Пошто у РаббитМК-у сваки прималац захтева/учитава различит број порука, дистрибуција посла може постати неуједначена, што ће узроковати кашњење и губитак редоследа порука током обраде.

Да би се ово спречило, сваки РаббитМК пријемник конфигурише ограничење унапред преузимања, ограничење броја акумулираних непризнатих порука. У Кафки, балансирање оптерећења се врши аутоматски прерасподелом прималаца по одељцима (партицији) теме.

#4. Роутинг

РаббитМК укључује четири начина за рутирање до различитих централа ради чекања, омогућавајући моћан и флексибилан скуп образаца за размену порука. Кафка имплементира само један начин за писање порука на диск без рутирања.

#5. Редослед порука

РаббитМК вам омогућава да одржавате релативни ред у произвољним скуповима (групама) догађаја, а Апацхе Кафка пружа једноставан начин за одржавање редоследа уз скалабилност писањем порука узастопно у реплицирани дневник (тему).

ФеатуреРаббитМККафка Арцхитецтуре Чува поруке на диску прикљученом на брокера Архитектура дистрибуиране платформе за стриминг Модел испоруке Повући заснован Пусх базиран Чување порука Не може сачувати поруке Одржава поруџбине писањем у тему Балансирање оптерећења Конфигурише ограничење унапред преузимања Изводи се аутоматскиАл РоутингУкључује само рутирање наруџбине Укључује поруџбине у 4 низа начина. на тему Екстерни процеси Не захтева Захтева покретање Зоокеепер инстанцеПлугинсНеколико додатака Има ограничену подршку за додатке

  Разумевање кључне терминологије АВС-а за почетнике

РаббитМК и Кафка су широко коришћени системи за размену порука, сваки са својим предностима и случајевима коришћења. РаббитМК је флексибилан, поуздан и скалабилан систем за размену порука који се истиче у чекању порука, што га чини идеалним избором за апликације које захтевају поуздану и флексибилну испоруку порука.

С друге стране, Кафка је дистрибуирана платформа за стриминг која је дизајнирана за обраду великих количина података у реалном времену високе пропусности, што је чини одличним избором за апликације које захтевају обраду и анализу података у реалном времену.

Главни случајеви употребе за РаббитМК:

Е-трговина

РаббитМК се користи у апликацијама за е-трговину за управљање протоком података између различитих система, као што су управљање залихама, обрада поруџбина и обрада плаћања. Може да обради велике количине порука и осигура да се испоручују поуздано и исправним редоследом.

Здравствена заштита

У здравственој индустрији, РаббитМК се користи за размену података између различитих система, као што су електронски здравствени картони (ЕХР), медицински уређаји и системи за подршку клиничком одлучивању. Може помоћи у побољшању бриге о пацијентима и смањењу грешака тако што ће обезбедити да су праве информације доступне у право време.

Финансијске услуге

РаббитМК омогућава размену порука у реалном времену између система, као што су платформе за трговање, системи за управљање ризиком и гејтвеји за плаћање. Може помоћи да се осигура да се трансакције обрађују брзо и безбедно.

ИоТ системи

РаббитМК се користи у ИоТ системима за управљање протоком података између различитих уређаја и сензора. Може помоћи да се подаци испоручују безбедно и ефикасно, чак и у окружењима са ограниченим пропусним опсегом и повременом везом.

Кафка је дистрибуирана платформа за стриминг дизајнирана да рукује великим количинама података у реалном времену.

Главни случајеви употребе за Кафку

Аналитика у реалном времену

Кафка се користи у аналитичким апликацијама у реалном времену за обраду и анализу података док се генеришу, омогућавајући предузећима да доносе одлуке на основу ажурираних информација. Може да рукује великим количинама података и обима како би задовољио потребе чак и најзахтевнијих апликација.

Агрегација дневника

Кафка може да агрегира евиденције из различитих система и апликација, омогућавајући предузећима да прате и решавају проблеме у реалном времену. Такође се може користити за чување дневника за дугорочну анализу и извештавање.

Машинско учење

Кафка се користи у апликацијама за машинско учење за стримовање података у моделе у реалном времену, омогућавајући предузећима да направе предвиђања и предузму акцију на основу ажурираних информација. Може помоћи у побољшању тачности и ефикасности модела машинског учења.

Моје мишљење и о РаббитМК-у и о Кафки

Лоша страна РаббитМК-ових широких и разноврсних могућности за флексибилно управљање редовима порука је повећана потрошња ресурса и, сходно томе, деградација перформанси под повећаним оптерећењем. Пошто је ово начин рада за сложене системе, у већини случајева, Апацхе Кафка је најбољи алат за управљање порукама.

На пример, у случају прикупљања и агрегирања многих догађаја из десетина система и услуга, узимајући у обзир њихову гео-резервацију, метрику клијента, датотеке евиденције и аналитику, са перспективом повећања извора информација, радије ћу користити Кафку, међутим, ако сте у ситуацији у којој вам треба само брза размена порука, РаббитМК ће добро обавити посао!

Такође можете прочитати како да инсталирате Апацхе Кафка у Виндовс и Линук.