Apache Kafka - Wprowadzenie
W Big Data wykorzystywane są ogromne ilości danych. Jeśli chodzi o dane, mamy dwa główne wyzwania: pierwsze polega na tym, jak zebrać duże ilości danych, a drugie polega na analizie zebranych danych. Aby sprostać tym wyzwaniom, potrzebujesz systemu przesyłania wiadomości.
Kafka jest przeznaczona dla rozproszonych systemów o dużej przepustowości. Kafka zwykle działa bardzo dobrze jako zamiennik bardziej tradycyjnego brokera wiadomości. W porównaniu z innymi systemami przesyłania wiadomości, Kafka ma lepszą przepustowość, wbudowane partycjonowanie, replikację i nieodłączną odporność na błędy, co sprawia, że dobrze sprawdza się w aplikacjach przetwarzania wiadomości na dużą skalę.
Co to jest system przesyłania wiadomości?
System przesyłania wiadomości jest odpowiedzialny za przesyłanie danych z jednej aplikacji do drugiej, więc aplikacje mogą skupić się na danych, ale nie martwią się, jak je udostępniać. Rozproszone przesyłanie wiadomości opiera się na koncepcji niezawodnego kolejkowania wiadomości. Wiadomości są kolejkowane asynchronicznie między aplikacjami klienckimi a systemem przesyłania wiadomości. Dostępne są dwa typy wzorców przesyłania komunikatów - jeden to punkt do punktu, a drugi to system przesyłania komunikatów publikuj-subskrybuj (pub-sub). Większość wzorców przesyłania wiadomości jest następującapub-sub.
Point to Point Messaging System
W systemie typu punkt-punkt komunikaty są utrwalane w kolejce. Jeden lub więcej konsumentów może korzystać z komunikatów w kolejce, ale konkretny komunikat może być używany przez maksymalnie jednego konsumenta. Gdy konsument przeczyta wiadomość w kolejce, znika ona z tej kolejki. Typowym przykładem tego systemu jest system przetwarzania zamówień, w którym każde zamówienie będzie przetwarzane przez jeden podmiot przetwarzający zamówienia, ale jednocześnie może działać wiele procesorów zamówień. Poniższy diagram przedstawia strukturę.
System wiadomości publikuj-subskrybuj
W systemie publikowania i subskrybowania komunikaty są utrwalane w temacie. W przeciwieństwie do systemu punkt-punkt, konsumenci mogą subskrybować jeden lub więcej tematów i wykorzystywać wszystkie wiadomości w tym temacie. W systemie publikuj-subskrybuj producenci wiadomości nazywani są wydawcami, a konsumenci wiadomości - subskrybentami. Przykładem z życia jest Dish TV, które publikuje różne kanały, takie jak sport, filmy, muzyka itp., A każdy może subskrybować własny zestaw kanałów i pobierać je, gdy tylko dostępne są jego kanały.
Co to jest Kafka?
Apache Kafka to rozproszony system przesyłania wiadomości typu publikuj-subskrybuj oraz solidną kolejkę, która może obsługiwać duże ilości danych i umożliwia przekazywanie wiadomości z jednego punktu końcowego do drugiego. Kafka nadaje się zarówno do korzystania z wiadomości w trybie offline, jak i online. Komunikaty Kafka są utrwalane na dysku i replikowane w klastrze, aby zapobiec utracie danych. Kafka jest zbudowana na bazie usługi synchronizacji ZooKeeper. Bardzo dobrze integruje się z Apache Storm i Spark w celu analizy danych strumieniowych w czasie rzeczywistym.
Korzyści
Oto kilka zalet Kafki -
Reliability - Kafka jest rozproszona, podzielona na partycje, replikowana i odporna na błędy.
Scalability - System przesyłania wiadomości Kafka łatwo się skaluje bez przestojów.
Durability- Kafka używa
dziennika zatwierdzeń rozproszonych,
co oznacza, że wiadomości są przechowywane na dysku tak szybko, jak to możliwe, dzięki czemu jest trwały.Performance- Kafka ma wysoką przepustowość zarówno w przypadku publikowania, jak i subskrybowania wiadomości. Utrzymuje stabilną wydajność, nawet przechowywanych jest wiele TB wiadomości.
Kafka jest bardzo szybka i gwarantuje zero przestojów i brak utraty danych.
Przypadków użycia
Kafka może być używany w wielu przypadkach użycia. Niektóre z nich są wymienione poniżej -
Metrics- Kafka jest często używana do danych monitorowania operacyjnego. Obejmuje to agregowanie statystyk z aplikacji rozproszonych w celu tworzenia scentralizowanych źródeł danych operacyjnych.
Log Aggregation Solution - Kafka może być używana w całej organizacji do zbierania dzienników z wielu usług i udostępniania ich w standardowym formacie wielu konsumentom.
Stream Processing- Popularne platformy, takie jak Storm i Spark Streaming, odczytują dane z tematu, przetwarza je i zapisują przetworzone dane w nowym temacie, gdzie stają się dostępne dla użytkowników i aplikacji. Wysoka trwałość Kafki jest również bardzo przydatna w kontekście przetwarzania strumieniowego.
Potrzeba Kafki
Kafka to ujednolicona platforma do obsługi wszystkich źródeł danych w czasie rzeczywistym. Kafka obsługuje dostarczanie wiadomości o małych opóźnieniach i daje gwarancję odporności na błędy w przypadku awarii maszyny. Ma możliwość obsługi dużej liczby różnorodnych konsumentów. Kafka jest bardzo szybka, wykonuje 2 miliony zapisów / sek. Kafka zachowuje wszystkie dane na dysku, co zasadniczo oznacza, że wszystkie zapisy trafiają do pamięci podręcznej strony systemu operacyjnego (RAM). To sprawia, że przesyłanie danych z pamięci podręcznej stron do gniazda sieciowego jest bardzo wydajne.