Apache Kafka

RabbitMQ срещу Apache Kafka

RabbitMQ срещу Apache Kafka
В тази публикация ще се опитаме да сравним и установим някои разлики в двата най-популярни посредника за съобщения, RabbitMQ и Apache Kafka.

Винаги, когато искаме да интегрираме брокери на съобщения в нашето приложение, което ни позволява лесно да мащабираме и свързваме нашата система по асинхронен начин, има много брокери на съобщения, които могат да направят списъка, от който сте създадени, за да изберете такъв, като:

Всеки от тези брокери на съобщения има свой собствен списък за и против, но най-предизвикателните опции са първите два, RabbitMQ и Apache Kafka. В този урок ще изброим точки, които могат да помогнат за стесняване на решението да се върви един с друг. И накрая, струва си да отбележим, че нито един от тях не е по-добър от друг във всички случаи на употреба и това напълно зависи от това, което искате да постигнете, така че няма един верен отговор!

Ще започнем с просто въвеждане на тези инструменти.

Apache Kafka

Както казахме в този урок, Apache Kafka е разпределен, толерантен към грешки, хоризонтално мащабируем, регистър на регистриране. Това означава, че Kafka може да изпълнява много добре термин за разделяне и управление, може да репликира вашите данни, за да осигури наличност и е силно мащабируем в смисъл, че можете да включите нови сървъри по време на изпълнение, за да увеличите капацитета си за управление на повече съобщения.

Производител и потребител на Kafka

RabbitMQ

RabbitMQ е по-универсален и по-лесен за използване посредник за съобщения, който сам записва какви съобщения е консумирал клиентът и продължава да поддържа другия. Дори ако по някаква причина RabbitMQ сървърът падне, можете да сте сигурни, че съобщенията, които понастоящем се намират на опашки, са били съхранени във Файловата система, така че когато RabbitMQ се върне отново, тези съобщения могат да бъдат обработвани от потребителите по последователен начин.

RabbitMQ работи

Суперсила: Apache Kafka

Основната суперсила на Кафка е, че тя може да се използва като система за опашки, но не това е ограничено. Кафка е нещо по-подобно кръгъл буфер който може да мащабира колкото диск на машината на клъстера и по този начин ни позволява да препрочитаме съобщения. Това може да се направи от клиента, без да се налага да зависи от клъстера Kafka, тъй като изцяло отговорността на клиента е да отбележи метаданните на съобщението, които чете в момента, и може да посети Kafka по-късно в определен интервал, за да прочете същото съобщение отново.

Моля, обърнете внимание, че времето, през което това съобщение може да бъде препрочетено, е ограничено и може да бъде конфигурирано в конфигурацията на Kafka. Така че, след като това време свърши, няма начин клиентът да прочете някое по-старо съобщение отново.

Суперсила: RabbitMQ

Основната суперсила на RabbitMQ е, че тя е просто мащабируема, е високоефективна система за опашки, която има много добре дефинирани правила за последователност и способност да създава много видове модели за обмен на съобщения. Например има три вида обмен, които можете да създадете в RabbitMQ:

  1. Директен обмен: Един към един обмен на теми
  2. Обмен на теми: A тема е дефинирано, при което различни производители могат да публикуват съобщение и различни потребители могат да се обвържат да слушат по тази тема, така че всеки от тях получава съобщението, което е изпратено до тази тема.
  3. Обмен на обмен: Това е по-стриктно от обмена на теми, тъй като когато се публикува съобщение на обмен на обмен, всички потребители, които са свързани към опашки, които се обвързват с обмена на отклонения, ще получат съобщението.

Вече забелязах разликата между RabbitMQ и Kafka? Разликата е, че ако потребителят не е свързан с обмен на обмен в RabbitMQ, когато съобщението е публикувано, то ще бъде загубено, защото други потребители са консумирали съобщението, но това не се случва в Apache Kafka, тъй като всеки потребител може да прочете всяко съобщение като те поддържат свой собствен курсор.

RabbitMQ е ориентиран към брокери

Добрият брокер е някой, който гарантира работата, която поема върху себе си и в това е добър RabbitMQ. Той е наклонен към гаранции за доставка между производители и потребители, с преходни предпочитания пред трайни съобщения.

RabbitMQ използва самия брокер, за да управлява състоянието на съобщението и да се уверява, че всяко съобщение се доставя на всеки потребител с право.

RabbitMQ предполага, че потребителите са предимно онлайн.

Кафка е ориентиран към производителя

Apache Kafka е ориентиран към производителя, тъй като е изцяло базиран на разделяне и поток от пакети от събития, съдържащи данни и ги трансформира в трайни брокери на съобщения с курсори, поддържащи партидни потребители, които могат да са офлайн, или онлайн потребители, които искат съобщения с ниска латентност.

Kafka гарантира, че съобщението остава в безопасност до определен период от време, като репликира съобщението на неговите възли в клъстера и поддържа постоянно състояние.

И така, Кафка не да предположим, че някой от неговите потребители е предимно онлайн и не го интересува.

Подреждане на съобщения

С RabbitMQ поръчката публикуването се управлява последователно и потребителите ще получат съобщението в самата публикувана поръчка. От друга страна, Kafka не прави това, тъй като предполага, че публикуваните съобщения са тежки по своята същност, така че потребителите са бавни и могат да изпращат съобщения в произволен ред, така че той също не управлява поръчката сам по себе си. Въпреки това, можем да настроим подобна топология за управление на реда в Kafka, използвайки последователен обмен на хеш или плъгин за шардинг., или дори повече видове топологии.

Цялостната задача, управлявана от Apache Kafka, е да действа като „амортисьор“ между непрекъснатия поток от събития и потребителите, от които някои са онлайн, а други могат да бъдат офлайн - консумират само партиди на час или дори ежедневно.

Заключение

В този урок изучихме основните разлики (и прилики също) между Apache Kafka и RabbitMQ. В някои среди и двамата са показали изключителна производителност, като RabbitMQ консумира милиони съобщения в секунда, а Kafka консумира няколко милиона съобщения в секунда. Основната архитектурна разлика е, че RabbitMQ управлява своите съобщения почти в паметта и затова използва голям клъстер (30+ възли), докато Kafka всъщност използва силите на последователните дискови входно-изходни операции и изисква по-малко хардуер.

Отново, използването на всеки от тях все още зависи напълно от случая на употреба в дадено приложение. Щастливи съобщения !

Топ 5 продукти за ергономична компютърна мишка за Linux
Продължителната употреба на компютър причинява ли болка в китката или пръстите? Страдате ли от схванати стави и постоянно ли ви се налага да си ръкува...
Как да променяте настройките на мишката и тъчпада с помощта на Xinput в Linux
Повечето дистрибуции на Linux се доставят с библиотека “libinput” по подразбиране за обработка на входни събития в системата. Той може да обработва вх...
Пренастройте бутоните на мишката си по различен начин за различен софтуер с X-Mouse Button Control
Може би се нуждаете от инструмент, който може да промени контрола на мишката с всяко приложение, което използвате. Ако случаят е такъв, можете да изпр...