Począwszy od Apache Kafka

(13 czerwca 2019 r.)

Co to jest Apache Kafka?

Apache Kafka jest pierwotnie rozproszoną platformą do przesyłania wiadomości, opartą tylko na dodawaniu opracowany przez LinkedIn i później przekazany do Fundacji Apache .

(* Obraz służy do upiększania)

Zastosuj przypadki

  • Wiadomości
  • Agregacja dzienników
  • Przetwarzanie strumienia
  • Dziennik zatwierdzeń
  • Źródła zdarzeń itp.

Jak to działa?

Kafka działa w modelu pub-sub. Będzie więc grupa konsumentów / konsumentów i wydawca.

Producent opublikuje dane na określony temat, a konsument subskrybujący temat zużyje dane. Wielu producentów może publikować na ten sam temat, ale tylko jeden konsument jest w stanie wykorzystać dane z tematu naraz.

Teraz możesz zapytać, czy tylko jeden konsument może konsumować z jednego tematu na raz, a jeśli nadchodzą tysiące wydarzeń, jak je skalujemy?

OK. W takim przypadku możemy podzielić temat na partycje, aby uzyskać skalowalność.

Kiedy dzielimy temat, każda wiadomość na partycji ma offset\_id / message\_id. Na obrazku po lewej zrobiliśmy 3 partycje i każdy producent wyśle ​​zdarzenie do określonej partycji. A konsument odczyta z określonej partycji. Teraz, jeśli mamy wysyłanych 300 zdarzeń na sekundę, zostanie ono podzielone na 3, więc każda partycja będzie miała 100 wiadomości na sekundę. W ten sposób możemy osiągnąć równoważenie obciążenia. Kiedy dzielimy na partycje, Kafka zapewnia tylko kolejność komunikatów na poziomie partycji . Aby uzyskać porządek z partycjonowaniem, musimy użyć klucza .

Jeśli liczba zdarzeń rośnie, musimy zrobić więcej partycji i dodać więcej odbiorców, aby skalować i osiągnąć równoważenie obciążenia .

Gdy otrzymamy zdarzenie, musimy zatwierdzić dziennik do Kafki, aby Kafka zrozumiał, że zdarzenie zostało przetworzone i nie wyśle ​​go ponownie. Jeśli w trakcie przetwarzania nasza aplikacja ulegnie awarii, Kafka wyśle ​​to zdarzenie ponownie do przetworzenia.

Współczynnik replikacji:

Współczynnik replikacji określa sposób replikacji danych w Kafce przez różnych brokerów Kafka. Powiedzmy, że wybraliśmy współczynnik replikacji N = 3, dane będą replikowane do 2 kolejnych brokerów. Tak więc Kafka będzie nadal działać, jeśli broker N-1 ulegnie awarii, ponieważ istnieje przynajmniej jeden broker z danymi, aby działał.

Co to jest Apache Zookeeper?

Apache Zookeeper to scentralizowana usługa dla systemów rozproszonych do hierarchicznego magazynu wartości klucza, który jest używany do świadczenia usługi rozproszonej konfiguracji, synchronizacji usługi i rejestr nazw dla dużych systemów rozproszonych. Apache Kafka nie działa bez Zookeepera. Zarządzanie klastrem Kafka, jeśli broker pojawi się lub przestanie działać, jeśli utworzy się nowy temat…. Ten typ danych jest synchronizowany z innym brokerem Kafka za pośrednictwem Zookeepera.

Spinup Kafka>

docker-compose up

Konsument (Golang)>

Producent (Kotlin)>

Wynik>

Waiting for messages...Topic : users.notification
Partition : 0
Offset : 1
Value : hello

Zasoby:

1. github.com/confluentinc/confluent-kafka-go
2. compile group: "io.opentracing.contrib", name: "opentracing-kafka-client", version: "0.1.2"

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *