Samouczek Apache Kafka

Samouczek Apache Kafka
W tej lekcji zobaczymy, w jaki sposób możemy użyć Apache Kafka i jakiego jest jego użycie. Dokładnie przyjrzymy się różnym zaangażowanym terminologiom i zaczniemy również z nimi współpracować.

Apache Kafka

Aby uzyskać definicję wysokiego poziomu, przedstawmy krótką definicję Apache Kafka:

Apache Kafka to rozproszony, odporny na uszkodzenia, poziomo salalny, zatwierdzenie.

To były kilka słów na wysokim poziomie o Apache Kafka. Pozwól nam szczegółowo zrozumieć pojęcia.

  • Rozpowszechniane: Kafka dzieli dane, które zawiera na wiele serwerów, a każdy z tych serwerów jest w stanie obsługiwać żądania od klientów w zakresie udziału zawieranych przez nich danych
  • Odporne na uszkodzenia: Kafka nie ma ani jednego punktu awarii. W systemie SPOF, podobnie jak baza danych MySQL, jeśli serwer hosting baza danych spadnie, aplikacja jest zepsuta. W systemie, który nie ma Spof i składa się z wieloupłowych węzłów, nawet jeśli większość systemu spadnie, nadal jest taki sam dla użytkownika końcowego.
  • Poziomo salalny: Ten rodzaj sankcjonowania odnosi się do dodania większej liczby maszyn do istniejącej klastry. Oznacza to, że Apache Kafka jest w stanie zaakceptować więcej węzłów w swoim klastrze i nie zapewniać wymaganych aktualizacji systemu. Spójrz na poniższy obraz, aby zrozumieć rodzaj pojęć sczarowania:
  • Pionowe i poziome sanka

  • Zatwierdzić dziennik: Dziennik zatwierdzenia to struktura danych, podobnie jak powiązana lista. Dołącza do tego, co do tego przychodzą i zawsze utrzymuje swoje zamówienie. Dane nie można usunąć z tego dziennika, dopóki nie zostanie osiągnięty określony czas dla tych danych.

Temat w Apache Kafka jest jak kolejka, w której przechowywane są wiadomości. Wiadomości te są przechowywane dla konfigurowalnej ilości czasu, a komunikat nie jest usuwany, dopóki ten czas nie zostanie osiągnięty, nawet jeśli zostali zużyte przez wszystkich znanych konsumentów.

Kafka jest skalowalna, ponieważ to konsumenci faktycznie przechowują, że to, jaki przesłanie zostało przez nich pobrane jako wartość „przesunięcia”. Spójrzmy na postać, aby lepiej to zrozumieć:

Temat Partion i przesunięcie konsumentów w Apache Kafka

Pierwsze kroki z Apache Kafka

Aby zacząć używać Apache Kafka, należy go zainstalować na komputerze. Aby to zrobić, przeczytaj zainstaluj Apache Kafka na Ubuntu.

Upewnij się, że masz aktywną instalację Kafka, jeśli chcesz wypróbować przykłady, które przedstawiamy później na lekcji.

Jak to działa?

Z Kafką, Producent aplikacje publikują wiadomości który dociera do kafki Węzeł i nie bezpośrednio dla konsumenta. Z tego węzła Kafka wiadomości są konsumowane przez Konsument Aplikacje.

Kafka producent i konsument


Jako jeden temat może uzyskać wiele danych za jednym razem, aby Kafka w poziomie skalował się, każdy temat jest podzielony partycje i każda partycja może żyć na dowolnym maszynie węzłów klastra. Spróbujmy go przedstawić:

Partycje tematyczne


Ponownie, Broker Kafka nie prowadzi zapisu, który konsument zużył liczbę pakietów danych. To jest Konsumenci odpowiedzialni za śledzenie danych, które zużył.

Wytrwałość na dysku

Kafka utrzymuje rekordy wiadomości, które otrzymuje od producentów na dysku i nie utrzymuje ich w pamięci. Pytanie, które może się pojawić, jest to, jak to sprawia, że ​​rzeczy jest wykonalne i szybkie? Było to kilka powodów, które czyni go optymalnym sposobem zarządzania zapisami wiadomości:

  • Kafka postępuje zgodnie z protokołem grupowania rekordów wiadomości. Producenci produkują wiadomości, które są utrzymywane na dysku w dużych fragmentach, a konsumenci zużywają te zapisy wiadomości również w dużych liniowych fragmentach.
  • Powodem, dla którego pisze dysk są liniowe, jest to, że czytania jest szybkie z powodu wysoce skrócony czas odczytu dysku liniowego.
  • Operacje dysków liniowych są zoptymalizowane przez System operacyjny również przy użyciu technik Write-Behind I czytanie.
  • Nowoczesny system operacyjny również użyj koncepcji Pagecaching co oznacza, że ​​buforują niektóre dane dysku w bezpłatnym dostępnym pamięci RAM.
  • Ponieważ Kafka utrzymuje dane w jednolitych standardowych danych w całym przepływie od producenta do konsumenta, wykorzystuje Optymalizacja zerowej kopii proces.

Dystrybucja danych i replikacja

Jak studiowaliśmy powyżej, temat jest podzielony na partycje, każdy rekord komunikatu jest replikowany na wielu węzłach klastra w celu utrzymania kolejności i danych każdego rekordu w przypadku śmierci jednego z węzłów.

Mimo że partycja jest replikowana na wielu węzłach, nadal istnieje Lider partycji węzeł, przez które aplikacje odczytują i zapisują dane na temat, a lider replikuje dane dotyczące innych węzłów, które są określane jako Obserwujący tej partycji.

Jeśli dane rekordu wiadomości są bardzo ważne dla aplikacji, gwarancja zapisu wiadomości jest bezpieczna w jednym z węzłów, można zwiększyć współczynnik replikacji klastra.

Co to jest Zookeeper?

Zookeeper to wysoce odporne na uszkodzenia, rozproszony sklep z kluczową wartością. Apache Kafka w dużej mierze zależy od Zookeeper do przechowywania mechaników klastrowych, takich jak bicie serca, aktualizacje/konfiguracje itp.).

Pozwala brokerom Kafka zasubskrybować siebie i wiedzieć, ilekroć nastąpi jakakolwiek zmiana dotycząca lidera partycji i dystrybucji węzłów.

Aplikacje producentów i konsumentów bezpośrednio komunikują się z Zookeeper aplikacja, aby wiedzieć, który węzeł jest liderem partycji tematu, aby mogli wykonywać odczyty i pisze od lidera partycji.

Streaming

Procesor strumienia jest głównym elementem w klastrze Kafka, który przyjmuje ciągły strumień danych rekordów wiadomości z tematów wejściowych, przetwarzają te dane i tworzy strumień danych na tematy wyjściowe, od śmieci po bazę danych.

Jest całkowicie możliwe wykonanie prostego przetwarzania bezpośrednio za pomocą interfejsów API producenta/konsumentów, choć w przypadku złożonego przetwarzania, takich jak łączenie strumieni, Kafka zapewnia zintegrowaną bibliotekę interfejsu API strumieni, ale pamiętaj, że ten interfejs API ma być używany w naszej własnej bazie kodowej i to nie robi. t biegaj na brokerze. Działa podobnie do interfejsu API konsumenckiego i pomaga nam zwiększyć działanie przetwarzania strumienia w wielu aplikacjach.

Kiedy używać apache kafka?

Jak badaliśmy w powyższych sekcjach, Apache Kafka może być używany do radzenia sobie z dużą liczbą rekordów wiadomości, które mogą należeć do praktycznie nieskończonej liczby tematów w naszych systemach.

Apache Kafka jest idealnym kandydatem, jeśli chodzi o korzystanie z usługi, która może pozwolić nam śledzić architekturę opartą na zdarzeniach w naszych aplikacjach. Wynika to z możliwości trwałości danych, tolerancyjnej i wysoce rozproszonej architektury, w której krytyczne aplikacje mogą polegać na jej wydajności.

Skalowalna i rozproszona architektura Kafka bardzo łatwo ułatwia integrację z mikrousługami i umożliwia aplikacji oddzielenie się z dużą ilością logiki biznesowej.

Tworzenie nowego tematu

Możemy stworzyć temat testowy Testowanie na serwerze Apache Kafka z następującym poleceniem:

Creatinig Temat

Sudo Kafka-Topics.SH-Create --zookeeper LocalHost: 2181-Odreplikacja Factor 1
--partycje 1 -Testy topowe

Oto, co wracamy z tym poleceniem:

Utwórz nowy temat Kafka


Zostanie utworzony temat testowania, który możemy potwierdzić za pomocą wspomnianego polecenia:

Potwierdzenie tworzenia tematu Kafka

Pisanie wiadomości na temat

Jak studiowaliśmy wcześniej, jednym z interfejsów API obecnych w Apache Kafka jest API producenta. Użyjemy tego interfejsu API do utworzenia nowej wiadomości i opublikowania na temat właśnie stworzonego przez nas tematu:

Pisanie wiadomości do tematu

Sudo Kafka-Console-producer.SH-Broker-List LocalHost: 9092-Testowanie topowe

Zobaczmy dane wyjściowe tego polecenia:

Opublikuj wiadomość do tematu Kafka


Po naciśnięciu klawisza zobaczymy nowy znak strzałki (>), co oznacza, że ​​możemy teraz podać dane:

Wpisywanie wiadomości


Po prostu wpisz coś i naciśnij, aby uruchomić nową linię. Wpisałem 3 linie tekstów:

Czytanie wiadomości z tematu

Teraz, gdy opublikowaliśmy wiadomość na temat Kafka, który stworzyliśmy, ten komunikat będzie dostępny na konfigurowalny czas. Możemy go teraz odczytać za pomocą API konsumentów:

Czytanie wiadomości z tematu

Sudo Kafka-Console-Consumer.sh -zookeeper LocalHost: 2181 --
TESTOWANIE TEMATY-od-beginning

Oto, co wracamy z tym poleceniem:

Polecenie przeczytania wiadomości z tematu Kafka


Będziemy mogli zobaczyć wiadomości lub wiersze, które napisaliśmy za pomocą interfejsu API producenta, jak pokazano poniżej:

Jeśli napiszmy kolejną nową wiadomość za pomocą interfejsu API producenta, zostanie on również natychmiast wyświetlany po stronie konsumenta:

Publikować i konsumpcję jednocześnie

Wniosek

W tej lekcji przyjrzeliśmy się, w jaki sposób zaczynamy używać Apache Kafka, który jest doskonałym brokerem wiadomości i może również działać jako specjalna jednostka trwałości danych.