Głównym motywem kafka jest skalowanie.
MQTT to protokół z publiczną specyfikacją dla komunikacji z brokerem typu klient/komunikat, umożliwiający wymianę publikowania/subskrypcji. Wiele implementacji bibliotek klienta i brokerów (Mosquitto, JoramMQ ...) istnieje i jest praktycznie zgodna. MQTT właśnie określa transport i niejasno część aplikacji (tj. Sposób obsługi i przechowywania danych, sposób autoryzowania klientów ...). Specyfikacja nie jest jasna, jeśli dane konsumowane na temat są tylko w czasie rzeczywistym lub mogą być utrzymane. Specyfikacja nie zawiera informacji o sposobie skalowania brokera komunikatów implementujących MQTT.
Z drugiej strony, Apache Kafka jest brokerem komunikatów opartym na wewnętrznym "dzienniku zatwierdzania": jego zadaniem jest gromadzenie ogromnej ilości danych na dysku i zezwalanie na konsumpcję w czasie rzeczywistym lub później (o ile dane są nadal dostępne na dysku). Został zaprojektowany do wdrożenia jako klaster wielu węzłów o dobrych właściwościach skalowalnych. Kafka używa własnego protokołu sieciowego.
Porównujesz tutaj dwie różne rzeczy: standardowy protokół pub/sub (z wieloma implementacjami) i oprogramowanie do przechowywania/dystrybucji komunikatów, vaguley tej samej rodziny z własnym protokołem.
Powiedziałbym, że jeśli chcesz przechowywać ogromną ilość wiadomości, aby zapewnić przetwarzanie wsadowe, spójrz bardziej na Kafkę. Jeśli masz dużo klientów/aplikacji wymieniających wiadomości w czasie rzeczywistym na wielu tematach, to bardziej patrz na brokerów komunikatów MQTT (lub nawet AMQP).
Stackoverflow nie jest miejscem, w którym należy pytać o porównanie technologii. – hardillb