Kafka: Consumer API vs Streams API

Ostatnio zacząłem uczyć się Kafki i kończę z tym pytaniem.

Jaka jest różnica między konsumentem a strumieniem? Dla mnie, jeśli jakieś narzędzie/aplikacja zużywają wiadomości Od Kafki jest konsumentem w świecie Kafki. Więc czym się różni Stream, ponieważ to również konsumuje z lub produkuje Wiadomości do Kafki? i dlaczego jest to potrzebne, jak możemy napisać własnego konsumenta aplikacja korzystająca z Consumer API i przetwarzająca je w razie potrzeby lub wysyłająca do Spark z aplikacji konsumenckiej?

I did Google na to, ale nie dostał żadnych dobrych odpowiedzi na to. Przepraszam, jeśli to pytanie jest zbyt trywialne.

Author: Michael G. Noll, 2017-05-17

1 answers

aktualizacja kwiecień 09, 2018: Obecnie możesz również użyć KSQL, strumieniowego silnika SQL dla Kafka, do przetwarzania danych w Kafka. KSQL jest zbudowany na bazie Kafka Streams API, a także jest wyposażony w pierwszorzędną obsługę " strumieni "i"tabel". Pomyśl o tym jak o SQL brother Kafka Streams, gdzie nie musisz pisać żadnego kodu programistycznego w Javie lub Scali.

Jaka jest różnica między API konsumenckim a strumieniami API?

Kafka ' s Streams API ( https://kafka.apache.org/documentation/streams/) jest zbudowany na bazie producentów i konsumentów Kafki. Jest znacznie mocniejszy i bardziej wyrazisty niż klient Kafka consumer. Oto niektóre z funkcji API Kafka Streams:

    [20]} obsługuje semantykę przetwarzania dokładnie raz (Kafka w wersji 0.11+)
  • obsługuje odporne na błędy przetwarzanie stanu, w tym strumieniowanie dołącza, agregacje i windowing
  • obsługuje przetwarzanie w czasie zdarzeń, jak również przetwarzanie w oparciu o przetwarzanie w czasie i przyjmowanie w czasie
  • posiada pierwszorzędną obsługę zarówno strumieni , jak i tabel , gdzie przetwarzanie strumieni spotyka się z bazami danych; w praktyce większość aplikacji do przetwarzania strumieni potrzebuje zarówno strumieni, jak i tabel do wdrożenia ich odpowiednich przypadków użycia, więc jeśli technologia przetwarzania strumieni nie dwie abstrakcje (powiedzmy, brak wsparcia dla tabel) albo utknąłeś lub musisz ręcznie zaimplementować tę funkcjonalność samodzielnie (powodzenia z tym...)
  • Dzięki temu możliwe jest wyświetlanie najnowszych wyników przetwarzania innym aplikacjom i usługom.]}
  • bardziej wyrazisty: zawiera (1) styl programowania funkcyjnego DSL z operacjami takimi jak map, filter, reduce jak również (2) imperatywny styl API procesora do np. wykonywania złożonych przetwarzanie zdarzeń (CEP) i (3) można nawet połączyć DSL i API procesora.

Zobacz http://docs.confluent.io/current/streams/introduction.html aby uzyskać bardziej szczegółowe, ale wciąż na wysokim poziomie wprowadzenie do Kafka Streams API, które powinno również pomóc zrozumieć różnice w stosunku do Klienta Kafka consumer niższego poziomu. Istnieje również samouczek oparty na Dockerze dla Kafka Streams API , który pisałem o na początku tego tygodnia.

Więc czym różni się API Kafka Streams, ponieważ to również zużywa lub produkuje Wiadomości do Kafka?

Tak, Kafka Streams API może zarówno odczytywać dane, jak i zapisywać dane do Kafki.

I dlaczego jest to potrzebne, ponieważ możemy napisać własną aplikację konsumencką za pomocą Consumer API i przetwarzać je w razie potrzeby lub wysłać je do Spark z aplikacji konsumenckiej?

Tak, możesz napisać własną aplikację konsumencką - jak wspomniałem, Kafka Streams API używa klienta Kafka consumer client (plus klienta producenta) - ale trzeba ręcznie zaimplementować wszystkie unikalne funkcje, które zapewnia interfejs API Streams. Zobacz powyższą listę wszystkiego, co otrzymasz "za darmo". Jest to więc raczej rzadka okoliczność, że użytkownik wybierze niskopoziomowego klienta konsumenckiego, a nie potężniejsze API Kafka Streams.
 44
Author: Michael G. Noll,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-29 17:48:42