Въведение в ActiveMQ срещу Kafka
Apache ActiveMQ е мулти-протокол с отворен код, сървър за съобщения, базиран на Java. Той реализира JMS (Java Message Service) API и е в състояние да поддържа различни протоколи за съобщения, включително AMQP, STOMP и MQTT. Обикновено се използва за изпращане на съобщения между приложения / услуги. В тази тема ще научим за ActiveMQ срещу Kafka.
От друга страна, Apache Kafka е софтуер за обработка на потоци с отворен код, разработен от LinkedIn (и по-късно дарен на Apache) за ефективно управление на техните нарастващи данни и преминаване към обработка в реално време от пакетна обработка. Той е написан на Scala и Java и се основава на модела за публикуване и абониране на съобщения.
Сравнение между главата на ActiveMQ срещу Kafka (Инфографика)
По-долу са горните разлики между ActiveMQ срещу Kafka
Ключови разлики между ActiveMQ срещу Kafka
ActiveMQ и Kafka са проектирани за различни цели. Следват основните разлики:
Kafka е разпределена поточна платформа, която предлага висока хоризонтална мащабируемост. Също така, той осигурява висока производителност и затова се използва за обработка на данни в реално време. ActiveMQ е решение за съобщения с общо предназначение, което поддържа различни протоколи за съобщения. Kafka е доста по-бърз от ActiveMQ. Той може да обработва милиони съобщения в секунда.
ActiveMQ поддържа както опашки за съобщения, така и публикува / абонирайте системи за съобщения. Kafka, от друга страна, се основава на публикуване / абониране, но има определени предимства на опашките за съобщения.
ActiveMQ гарантира, че ще бъде доставено съобщение, но при Kafka има вероятност (колкото и малка да е тя), че съобщението може да не бъде доставено.
Загубата на съобщения в Kafka може да се случи при следния сценарий:
- Това може да се случи, докато паралелно консумирате съобщения. Помислете за ситуация, при която 2 съобщения идват до потребителите: X и Y. Двете съобщения се обработват паралелно. Докато обработваше съобщенията, Y беше успешен и извърши компенсирането. Въпреки това, докато обработваше съобщението, X допусна грешка. Имайки предвид, че съобщението B има по-голямо компенсиране, Kafka ще запази последното компенсиране и съобщението A никога не се връща към потребителя.
Доста по-лесно е да се реализира точно веднъж доставка на съобщения в ActiveMQ, отколкото е в Kafka. Доставката на дублиращи съобщения в Kafka може да се случи при следния сценарий:
- Потребителят е консумирал съобщенията успешно и след това е ангажирал съобщенията в своя местен магазин, но той се срива и не може да извърши компенсирането на Кафка, преди да се срине. Когато потребителят се рестартира, Kafka ще достави съобщенията от последното компенсиране.
В Kafka съобщението е основно двойка ключ-стойност. Полезният товар на съобщението е стойността. Ключът, от друга страна, обикновено се използва за целите на дяла и трябва да съдържа специфичен за бизнеса ключ, за да се поставят свързани съобщения в един и същ дял.
В ActiveMQ съобщението се състои от метаданни (заглавки и свойства) и тяло (което е полезният товар).
ActiveMQ срещу Kafka сравнителна таблица
Нека да обсъдим топ 10 разликата между ActiveMQ срещу Kafka
ActiveMQ | Кафка |
Това е традиционна система за съобщения, която се занимава с малко количество данни. Той има следните случаи на употреба:
| Това е разпределена система, предназначена за обработка на огромно количество данни. Той има следните случаи на употреба:
|
Има поддръжка за транзакции. Двете нива на поддръжка на транзакции са:
Той използва TransactionStore за обработка на транзакции. TransactionStore ще кешира всички съобщения и ACKS, докато се извърши извършване или отмяна. | Първоначално Kafka не поддържаше транзакции, но след излизането си от 0.11, до известна степен поддържа транзакциите. |
Той поддържа състоянието на доставка на всяко съобщение, което води до по-ниска пропускателна способност. | Производителите на Kafka не чакат потвърждения от брокерите. Така че, брокерите могат да пишат съобщения с много висока скорост, което води до по-висока пропускателна способност |
В ActiveMQ отговорност на производителите е да гарантират, че съобщенията са доставени. | В Kafka е отговорност на потребителите да консумират всички съобщения, които трябва да консумират. |
Не може да гарантира, че съобщенията се получават в същия ред, в който са изпратени. | Той може да гарантира, че съобщенията се получават в реда, в който са изпратени на ниво дял. |
Има нещо, наречено селектор на съобщения за API на JMS, което позволява на потребителя да посочи съобщенията, от които се интересува. И така, работата по филтрирането на съобщенията е до JMS, а не към приложенията. | Kafka няма концепция за филтри при брокерите, която да гарантира, че съобщенията, които потребителите получават, отговарят на определен критерий. Филтрирането трябва да се извърши от потребителите или от приложенията. |
Това е платформа за съобщения с push тип, където доставчиците избутват съобщенията до потребителите. | Това е платформа за съобщения от типа „pull“, където потребителите изтеглят съобщенията от брокерите. |
Не е възможно да се мащабират хоризонтално. Не съществува и концепция за репликация. | Той е силно мащабируем. Поради реплики на дялове, той предлага и по-висока наличност. |
Изпълнението на опашката и темата се влошава, тъй като броят на потребителите се увеличава. | Не се забавя с добавянето на нови потребители. |
Не предоставя контролни суми за откриване на повреда на съобщенията извън кутията. | Той включва контролни суми за откриване на корупция на съобщения в хранилището и има изчерпателен набор от функции за защита. |
заключение
Видяхме, че Kafka и ActiveMQ имат различни случаи на употреба. Една компания ще поиска Kafka, ако трябва да обработва огромно количество данни в реално време и може да понесе загуба на съобщения до известна степен. Като има предвид, че ActiveMQ би бил правилният избор, ако се грижи за еднократната доставка и съобщенията са ценни (например при финансови транзакции).
Препоръчителен член
Това е ръководство за ActiveMQ срещу Kafka. Тук обсъждаме основните разлики на ActiveMQ срещу Kafka с инфографика и таблица за сравнение. Може да разгледате и следните статии, за да научите повече -
- Кафка срещу Спарк
- Pig vs Spark
- Hadoop срещу Apache Spark
- Apache Storm срещу Kafka: 9 най-добри разлики, които трябва да знаете