2017-02-10 63 views
33

Zostałem poproszony o ocenę RabbitMQ zamiast Kafki, ale trudno było znaleźć powód, że robi coś lepszego niż Kafka. Czy ktokolwiek wie, czy jest naprawdę lepszy pod względem przepustowości, trwałości, opóźnień czy łatwości użycia?Czy istnieje jakikolwiek powód, aby używać RabbitMQ zamiast Kafki?

+0

jedna rzecz należy wziąć pod uwagę, że mówienie natywnie (jak w pakiecie i oficjalnie wspierane) do kafka poza Javą jest dość trudne. Wydaje się, że RabbitMQ ma oficjalnie obsługiwane kilka języków. – Guillaume

+0

przede wszystkim oparte na opiniach, wiele dobrych pytań generuje pewien stopień opinii na podstawie doświadczenia ekspertów, ale odpowiedzi na to pytanie będą raczej prawie całkowicie oparte na opiniach, a nie na faktach, referencjach lub konkretnej wiedzy. – VedX

+0

@Guillaume To niekoniecznie musi być prawda. Klienci Kafki mają do dyspozycji klientów w wielu językach: https://cwiki.apache.org/confluence/display/KAFKA/Clients Ponadto Confluent oferuje wielu wysoce wydajnych klientów Kafka o otwartym kodzie źródłowym w innych językach. Zapoznaj się z ofertą "Confluent Open Source": https://www.confluent.io/product/compare/ –

Odpowiedz

66

RabbitMQ jest stały, ogólnego przeznaczenia wiadomość broker który obsługuje wiele protokołów, takich jak AMQP, MQTT, Stomp itd Może obsługiwać wysoką przepustowość i typowych przypadków użycia na to, aby obsłużyć zadania tło lub jako pośrednik między wiadomości mikroserwisy. Kafka jest szyną komunikacyjną zoptymalizowaną pod kątem strumieni danych o wysokim poziomie wejściowym i powtórkę.

Kafka może być postrzegana jako trwały broker wiadomości , w którym aplikacje mogą przetwarzać i ponownie przetwarzać przesyłane dane na dysku. Kafka ma bardzo proste podejście do routingu. RabbitMQ ma lepszą opcję, jeśli chcesz przekazywać wiadomości w złożony sposób swoim klientom. Korzystaj z Kafki, jeśli potrzebujesz wsparcia dla odbiorców wsadowych, którzy mogą być offline, lub dla konsumentów, którzy oczekują wiadomości o małym opóźnieniu.

RabbitMQ będzie utrzymywał wszystkie stany na temat zużytych/potwierdzonych/niepotwierdzonych wiadomości, podczas gdy Kafka nie, zakłada, że ​​konsument zachowuje ślady tego, co zostało zużyte, a nie. Kolejki RabbitMQ są najszybsze, gdy są puste, podczas gdy Kafka zachowuje duże ilości danych przy niewielkim obciążeniu - Kafka jest przeznaczona do przechowywania i dystrybucji dużych ilości wiadomości. (Jeśli planujesz mieć bardzo długie kolejki w RabbitMQ można rzucić okiem na lazy queues.)

Kafka jest zbudowany od podstaw z myślą skalowania poziomego, natomiast RabbitMQ jest głównie przeznaczony dla skalowania pionowego.

RabbitMQ ma przyjazny dla użytkownika interfejs, który pozwala monitorować i obsługiwać serwer RabbitMQ z poziomu przeglądarki internetowej. Między innymi można obsługiwać kolejki, połączenia, kanały, wymiany, użytkowników i uprawnienia użytkowników - tworzyć, usuwać i wyświetlać w przeglądarce, a także monitorować stawki wiadomości i wysyłać/odbierać wiadomości ręcznie. Menedżer Kafki nie jest jeszcze tak rozwinięty, jak interfejs zarządzania RabbitMQ. Powiedziałbym, że jest to łatwiejsze/szybsze, aby uzyskać dobre zrozumienie o RabbitMQ.

Więcej czytanie i niektóre dane porównania można znaleźć tutaj: https://www.cloudkarafka.com/blog/2016-12-05-apachekafka-vs-rabbitmq.html

polecając także papier branży: „Kafka kontra RabbitMQ: Studium porównawcze dwóch odniesienia przemysłu publikowania/subskrypcji implementacje”: http://dl.acm.org/citation.cfm?id=3093908

+1

Co oznacza "wysokie wejście"? –

+2

coś takiego jak "wysoka przepustowość" w tym przypadku, jak sądzę. – lawphotog

+3

high-ingress = duże spożycie – jbustamovej