2017-01-19 83 views
9

Jaka jest podstawowa różnica między przetwarzaniem strumienia a tradycyjnym przetwarzaniem komunikatów? Jak mówią ludzie, kafka jest dobrym wyborem do przetwarzania strumieniowego, ale w istocie kafka to framework komunikacyjny podobny do ActivMQ, RabbitMQ itp.Różnice między przetwarzaniem strumienia a przetwarzaniem wiadomości

Dlaczego na ogół nie mówimy, że ActiveMQ jest również dobry do przetwarzania strumieniowego.

Czy to prędkość, przy której wiadomości są spożywane przez konsumenta określa, czy jest to strumień?

+0

Myślę, że możesz znaleźć https://www.quora.com/What-are-the-differences-between-Apache-Kafka-and-RabbitMQ interesting –

Odpowiedz

27

W tradycyjnej przetwarzania wiadomości, należy zastosować prostych obliczeń na wiadomości - w większości przypadków indywidualnie jednej wiadomości.

W przetwarzania potokowego, zastosowaniu skomplikowanych operacji na wielu strumieni wejściowych i wielu rekordów (czyli komunikaty) w tym samym czasie (jak i agregacji łączy).

Ponadto tradycyjny system komunikacji nie może iść „w czasie” - czyli automatyczne usuwanie wiadomości po dostali dostarczone do wszystkich subskrybowanych konsumentów. W przeciwieństwie do Kafka zachowuje wiadomości, ponieważ używa modelu opartego na ciągnięciu (tj. Dane wyciągane przez konsumenta z Kafki) przez konfigurowalny czas. Pozwala to konsumentom "przewijać" i konsumować wiadomości wiele razy - lub jeśli dodasz nowego konsumenta, może przeczytać całą historię. Umożliwia to przetwarzanie strumieniowe, ponieważ pozwala na bardziej złożone aplikacje. Co więcej, przetwarzanie strumienia niekoniecznie wymaga przetwarzania w czasie rzeczywistym - chodzi o przetwarzanie nieskończonego strumienia wejściowego (w przeciwieństwie do przetwarzania wsadowego, które jest stosowane do skończonych danych wejściowych).

A Kafka oferuje API Kafka Connect and Streams - jest to platforma przetwarzania strumieniowego, a nie tylko system przesyłania wiadomości/pub-sub (nawet jeśli używa go w swoim rdzeniu).

+1

Również strumień wejściowy może być nieskończony, ale przetwarzanie jest bardziej jak przesuwane okno skończonego wprowadzania. W tym sensie nie ma żadnej różnicy między przetwarzaniem strumieniowym a wsadowym. Przetwarzanie wsadowe jest tylko specjalnym przypadkiem przetwarzania strumienia, w którym okna są mocno zdefiniowane. – Davos

5

Zasadniczo Kafka jest messaging ramy podobną do ActiveMQ lub RabbitMQ. Dołożono starań, aby Kafka był streamowany przez Confluent.

https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/

Dlaczego Kafka wchodzi w obraz, gdy mówimy o przetwarzaniu Stream?

ramy przetwarzanie Stream różni z wejściem data.In przetwarzania wsadowego, masz jakieś pliki przechowywane w systemie plików i chcesz stale przetwarzać i przechowywać które w jakiś bazie. Podczas gdy w środowisku przetwarzania strumieniowego, takim jak Spark, Storm, itp., Otrzymywane będą ciągłe dane wejściowe z niektórych urządzeń czujnikowych, a tam wykorzystywany jest api feed i kafka do zasilania silnika strumieniowego.

+5

Apache Kafka opisuje się jako "rozproszona platforma streamingowa", zobacz https://kafka.apache.org/. W 2012 roku zaczęło się, mówiąc mniej więcej, jak system przesyłania wiadomości, ale w dzisiejszych czasach jest czymś znacznie więcej. Kafka w szczególności dostarcza własny silnik do przetwarzania strumienia, zwany Kafka's Streams API (lub w skrócie Kafka). Nie musisz już korzystać z oddzielnej technologii przetwarzania strumieniowego, takiej jak Storm czy Spark, a sporo wcześniejszych użytkowników Spark/Storm/... zaczęło migrować do API strumieniowego Kafki, aby uprościć i ulepszyć swoje architektury danych. –