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

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
Broker Kafka
- 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
Topic Kafka
- 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
Partycje Kafka
- 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
Replikacja Kafka
- kafka replikuje dane między brokerami w celu zapewnienia wysokiej dostępności i odporności na awarie
29
Offest
- używane jako identyfikator wiadomości w każdej partycji - konsumenci kontroluj swój offset i mają możliwość przeskoczyć ale skipnąć wiadomość
30
Producers Kafka
- wysyłaja wiadomości do Kafka Topic - kafka zapisuje te wiadomości w topic log
31
Consumer
- 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
Producer Side stroy
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
Consumer Side
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
Zalety RabbitMq
- 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
Request/Reply pattern
- **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
QoS
- 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
Czy rabbit może zapisywać wiadomości ?
- 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
Publisher Confirms
- 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
Kanały
- 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
z czego składa się wiadomość