RabbitMQ & Kafka Flashcards

1
Q

Czym jest RabbitMQ

A
  • message broker
  • komunikacja asynchroniczna pomiędzy serwisami
  • przyjmuje i przekazuje wiadomości pomiędzy usługami
  • używa protokołu AMPQ
  • RabbitMq jest jak skrzynka pocztowa, poczta oraz dostawca
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Producer

A
  • jest to program , który tworzy i wysyła wiadomości
  • określa routing key, który jest używany do dalszego kierowania wiadomośći
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Kolejka

A
  • miejsce gdzie wiadomości są przechowywane i czekają na odebranie przez konsumentów
  • Producenci mogą dodawać wiadomości do kolejki bez potrzeby bezpośredniego połączenia z konsumentami.
  • mogą łagodzić chwilowe szczyty obciążenia przez buforowanie nadmiernego ruchu
  • kolejki mogą gwarantować dostarczenie wiadomości nawet w przypadku tymczasowej niedostępności konsumentów
  • Skalowalność - mogą obsłużyć rosnący przepływ danych poprzez dodawanie więcej konsumentów bez zmiany logiki producentów.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Consumer

A
  • program oczekujący na wiadomość
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Round robin dispatching

A
  • algorytm używanych w kolejkach
  • rozdziela równomiernie odbiorców
  • przesyła kolejno każdą nową wiadomość do następnego konsumenta w sekwencji.
  • każdy konsumenci otrzymuje mniej więcej taką samą liczbę wiadomości.
  • nie zawsze jest idealny, jeśli zadania mają różny czas przetwarzania.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Message acknowledgment

A
  • informuje kolejkę, że dana wiadomość została odebrana i odpowiednio przetworzona przez konsumenta
  • jeśli potwierdzenie nie zostanie odesłane to wiadomość zostanie wysłana ponownie
  • wiadomość nie zostatnie stracona
  • można ustawić automatyczne powtwierdzenia po wysłaniu
  • można ustawić manulane - po potwierdzeniu wiadomość zostanie usunięta
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Message durability

A
  • zdolności systemu do zachowania wiadomości nawet w przypadku awarii
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Fair dispatch

A
  • techniki rozdzielania zadań pomiędzy różne pracownicze procesy (consumers) w sposób bardziej równomierny
  • Celem tej techniki jest zapobieganie przeciążaniu niektórych pracowników, podczas gdy inni mają niewiele lub nic do zrobienia.
  • Gdy pre-fetch count jest ustawiony na 1, RabbitMQ nie będzie wysyłał nowej wiadomości do pracownika, dopóki ten nie przetworzy i nie potwierdzi poprzedniej,
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Competing Consumer pattern

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Exchange

A
  • węzeł komunikacyjny, który przyjmuje wiadomości od producentów (producers) i przekierowuje je do kolejek według określonych reguł
  • Kiedy producent wysyła wiadomość do exchange, nie wie, do której kolejki wiadomość zostanie ostatecznie dostarczona.
  • działa według określonego typu np. direct, topic, fanout, headers
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

exchange type

A
  • określa w jaki wymiana (exchange) przekierowuje wiadomości do kolejek na podstawie informacji, które zawiera wiadomość :
  • routing key)
  • binding rules)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Typy exchange type

A
  • direct
  • topic
  • headers
  • fanout
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Binding

A
  • relacja pomiędzy exchange a queue
  • jak most
  • określa jak wiadomości trafiają z wymiany do kolejki
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Publish/Subscribe

A
  • publisher wysyła wiadomośc do wymiany, nie wiedząc kto , lub ile odbirców otrzyma tę wiadomość
  • subskrybowanie zapisują sie do otrzymywania wiadomości z określonej kolejki
  • idealny do rozglaaszania informacji do wielu odbirców gdzize komunikacja jest jednokierunkowa
  • subskrybenci mogą dynamicznie dołączac lub opuszczać system
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Direct Exchange

A
  • używa routing key
  • ## wiadomośc jest wysyłana do kolejek z binding key pasującym do routing key wiadmości
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Fanout Exchange

A
  • nie używa routing key
  • wysyła wiadomości do wszystkich związanych kolejek
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Topic exchange

A
  • wiadomości są routowane do kolejek na podstawie wzorca w routing key
  • * zastępuje dokladnie jednen wyraz
  • # zatępuje zero lub więcej wyrazów
  • z użyciem wzorców kolejki mogą subskrybować róże typy wiadmości
18
Q

Jak działa Topic Exchange

A
  1. Wiadomość jest wysyłana do Topic Exchange z określonym** routing key (np. auth.error).**
  2. Exchange porównuje klucz routingu z wzorcami związanymi z kolejnymi (bindings) i decyduje, do których kolejek przekazać wiadomość.
  3. Jeśli binding pasuje, wiadomość jest kierowana do odpowiedniej kolejki.
  4. Consumer nasłuchujący na danej kolejce odbiera wiadomość i może ją przetworzyć.

Pattern **<speed>.<colour>.<species>**</species></colour></speed>

19
Q

Na jaką kolejkę trafi wiadomość z routing key
quick.orange.rabbit

A

Q1 I Q2

20
Q

Routing key

A
  • atrybut, która producer przypisuje do wiadomości aby wymiana mogła użyc zasad routingu, by określic do której kolejki wiadomośc powinna zostać wysłana
21
Q

Kafka vs RabbitMQ

A

Kafka:
- przetwarzanie strumieniowe, event streaming model
- bardzo dobrze się skaluje horyzontalnie - do większego przeływu wiadomości
- wysoka przepustowość
- wiadomości zapisywane na dyskach
- posiada pełen log zdarzeń
- logowanie zdarzeń w czasie rzeczywistym

RabbitMq
- skoncentrowany na przesyłaniu wiadomości i kolejkowaniu
- obsługuje różne wzroce komunikacji, bardziej skomplikowany routing
- nie jest tak wydajny jak Kafa - lepszy do komunikatów
- potwierdzenia wiadomości

22
Q

Event Drive Architecture

A
  • przepływ danych i komunikacja między usługami są sterowne przez zdarzenia
  • generowanie i reagowanie na zdarzenia jest podstawą działania aplikacji
  • asynchroniczna komunikacja
  • data conistancy
  • Producter -> Event Bus (even channgels) -> Consumer
  • **Publisher/Subscriver Model - RabbitMq
  • ## Event Streaming Model - Kafka**
23
Q

Zalety EDA

A
  • decoupling
  • skalowalność (bo decoupled)
  • asynchronicznośc, reposonsywność
24
Q

Kafka

A
  • system przesyłania wiadomości
  • platforma przetwarzania strumieniowego
  • duża ilość danych w czasie rzeczywistym
  • skalowania w poziomie
  • przechowuje strumienie danych na dyskach
  • wysoka przepustowość
25
Q

Broker Kafka

A
  • serwer który przechowuje dane
  • obłsuguje zapytania od producerów i konsumentów
  • może mieć jakąkolwiek liczbe tematów
  • kafka działa zazwyczaj jako klaseter złożony z wielu brokerów,producentów i brokerów aby zapewnić skalowalności i odporność na awarie,
26
Q

Topic Kafka

A
  • kategorie do których producenci wysyłaja wiadomości
  • konsumenci subskrybują
  • podzielane są na partycje co umożliwa rónoległe przetwarzanie i zwiększa przepustowość
27
Q

Partycje Kafka

A
  • kązdy temat w Kafce może być podzielony na wiele partycji
  • umożliwają równoległe przetwarzanie danych
  • przechowują dane
  • używają offestów do identyfikacji wiadomości
28
Q

Replikacja Kafka

A
  • kafka replikuje dane między brokerami w celu zapewnienia wysokiej dostępności i odporności na awarie
29
Q

Offest

A
  • używane jako identyfikator wiadomości w każdej partycji
  • konsumenci kontroluj swój offset i mają możliwość przeskoczyć ale skipnąć wiadomość
30
Q

Producers Kafka

A
  • wysyłaja wiadomości do Kafka Topic
  • kafka zapisuje te wiadomości w topic log
31
Q

Consumer

A
  • odczytują wiadomości z topic
  • subskrybują jeden lub więcej topików
  • czytają wiadomości z partycji z topicu
  • używają offsetu do śledzenia progresu w topicu
32
Q

Producer Side stroy

A
  1. Koniguracja - kafka broker adres, serialization format
  2. Wybór topicu jeśli nie ma zostanie stworzony dynamicznie
  3. Tworzenie wiadomości wybiera target topic, i serialized message, opcjonalnie parition key aby kontrolować do której partycji trafi
  4. Przypisanie partycji - jest nie ma partion key to użyje Round robin albo hashing algorithm
  5. Routing, przypisanie offsetu wyśle wiadomośc do brokera, topicu, partycji. Broker zapisze wiadomośc w logu tej partycji razem z offset id
  6. Replikacja wiadomości - zapewnie wysokiej dostępności i odporności
  7. Powiadomonie o wysłaniu
33
Q

Consumer Side

A
  1. Consumer Group, Topic Subscribtion - dołączają do grup i subskrybują topic
  2. Przypisanie do partycji kafka przypisuje każdą partycję do jednego konsumenta. Zapewnia równą dystrybujce
  3. Zarządzanie offsetem - konsument zarządza offsetem aby śledzić progres odczytu
  4. Wysyła Fetch Request do brokera z informacja o topic, partition i offset. Określa również ile wiadomości naraz możę pobrać.
  5. Pobieranie wiadomości Kafka pobieranie wiadomości z partition log i przesyła do consumera w odpowiedzi na fetch reposne
  6. Procesowwanie wiadomośći przez konsumenta
  7. Przesłanie offsetu - po przetworzeniu konsumer musi wysłać offset do Kafki. Ozancza to, że przeprocesował wiadomość i może rozpocząc od tego miejsca.
  8. Pętla
34
Q

Zalety RabbitMq

A
  • zapewnia trwałość wiadomości - przetrwają restart serwera
  • wspiera potwierdzenia wiadomości
  • elastyczny routing wiadomości
  • można skalować , przepustowość
  • monitoring i zarządzanie, - interfejs
35
Q

Request/Reply pattern

A
  • Requester tworzy wiadomość
  • ustawia nazwę trzymaczasowej kolejki na replyTo gdzie oczekuje odpowiedzi
  • ustawia correlationId dla danego zapytania
  • Replier nasłuchuje requestQeue
  • otrzymuje i generuje odpowiedz
  • wysyła odpowiedz do kolejki replyTo
  • dołącza correlationId aby klient mógł zidentyfikować
36
Q

QoS

A
  • RabbitMQ pozwala na kontrolowanie ilości wiadomości, które konsument może przetwarzać na raz, poprzez ustawienie parametru QoS (prefetch count).
  • Ustawienie niskiego prefetch count może pomóc w równomierniejszym rozdzieleniu obciążenia, szczególnie gdy czas przetwarzania wiadomości jest zróżnicowany
37
Q

Czy rabbit może zapisywać wiadomości ?

A
  • można określić, że wiadomość jest trwała co oznacza, że rabbit zapisze je na dysk
  • jeśli kolejka jest trwała to również zostaną po restarcie serwera (zapisywane na dysk)
38
Q

Publisher Confirms

A
  • umożliwia producentom otrzymywanie od brokera potwierdzeń, że wiadomopść została poprawnie odebrana i przetworzona przez RabbitMq
  • producent musi włączyć potwierdzenia publikacji na kanale, z którym się komunikuje
  • po zapisaniu wiadomości w trwałej kolejsce, rabbit wysyła potwierdzenie do producenta
  • może być ack lub nack
39
Q

Kanały

A
  • używane do wysyłania i odbierania wiadomości
  • kazdą operacja publikowania i konsumowania odbywa się przez kanał
  • deklaracje kolejek wymian bindingów również przez kanal
40
Q

z czego składa się wiadomość

A