Microservices Flashcards
1
Q
Jakie są sposoby komunikacji między mikroserwisami ?
A
- synchroniczna - REST, gRPC
- asynchroniczna - kolejki, RabbitMQ,, Event driven architecutre
2
Q
Zalety synchronicznej
A
- natychmiastowa odpowiedź (klient otrzymuj odpowiedź natychmiast po przetworzeniu przez zerwer)
- łatwość debugowania (łatwiej śledzić przepływ rządań)
2
Q
Wady synchronicznej
A
- thight coupling usługi są ściśle powiązane - klienci oczekują dostępności serwera w czasie rzeczywistym
- Single point of Failure - jeśli serwis jest niedostępny, klient czeka lub błąd
- Skalowalność
2
Q
Zalety asynchronicznej
A
- Lose coupling serwisy mogą działać niezależnie, nadawca nie musi wiedzieć o dostępności odbiorcy
- odporność na awarie jeśli jeden serwis jest niedostępny wiadmości przetwarzane później
- Skalowalność
- przepustowość obsługa wielu żadań i rozłożenie obciązenia w czasie
3
Q
Wady asynchronicznej
A
- złożoność wymagają brokerów
- trudniejsze w debbugowaniu trudniej śledzić asynchroniczny przepływ
- potencjalne opóźnienia
4
Q
Zalety mikroserwisów
A
- Luźne powiązanie usługi są w dużej mierze niezależne od siebie
- Autonomia są traktowane jako niezależne komponenty, które łatwo wymieniać
- są stosunkowo proste i skupiają się na jednej funkcjonalnośći
- każdy programista pracuje niezależnie od innych,
- CI/CD mogą być szybciej i częściej wdrażane
- **skalowalność*
5
Q
Monolit
A
- jednolitość wszystkie komponenty są ściśle powiązane
- ## budowa -jedno duże oprogramowanie , wszystko w jednej bazie kodu, tylko jedna aplikacja
6
Q
Monolit vs Mikroserwisy
A
Monolity:
- trudniej skalowany
- tylko jedna technologia
- jeśli jedna rzecz nie działa to całość nie działa
- nie można pracować na różnymi serwsiami jednocześnie
- wolniejszy development
7
Q
Wady mikrosewisów
A
- złożonośc zarządzania
- trudność w transkacjach
- testowanie wymaga testowania interakcji pomiędzy mikroserwisami
- komunikacja pomiędzy serwisami
- monitoring i debbugowanie
- network latency
8
Q
Działanie architektury mikroserwisowej
A
9
Q
Service Discovery and registration
A
- usługi rejestrują sie do service registry
- umożliwia mikroserwisom znajdowanie się nawzajem w dynamicznym środowisku,
- instancje usług mogą być dodawane lub usuwane.
- mikroserwisy pytają service registry
- rozwiązuje problem tradycyjnego loadbalancera - routing tables
- umożliwa odpowiedni loadbalance pomiędzy instancjami tego samego mikroserwisu
- eureka -> spring cloud load balancer -> Feign Client
10
Q
API Gateway
A
- punkt wejścia do systemu, który przekierowuje przychodzące żądania z zewnątrz do odpowiednich mikroserwisów
- Autoryzacja i uwierzytelnianie Może przeprowadzać wstępną autoryzację i uwierzytelnianie żądań, zanim zostaną przekazane do mikroserwisów.
- agregacja agregować odpowiedzi z wielu mikroserwisów i dostarczać je jako jedną skonsolidowaną odpowiedź do klienta.
- spring cloud gatwey, zuul
- global filters to tracing, logging
11
Q
Czym jest loadbalancer
A
- urządzenie lub oprogramowanie
- głównym zadaniem jest równomierne rozdzielenie ruchu sieciowego między mikroserwisami
- zapewnia, że ząden mikroserwis nie jest przeciążony
- zapewnia wysoką dostępność i odporność na awarie systemu
- przykład AWS Elastic Load Balancing
12
Q
Jak działa loadbalancer
A
- dystrybucja ruchu monitoruje ilość ruchu i żadań przychodzących do serwera i na tej podstawej dytrybuuje ruch do róznych serwerów
- Health Checks sprawdza stan serwerów , czy odpowiadają na pingi) jeśli wykryje, że serwer jest niedostępny do nie będzie kierował
- High Availabillity zapewnia, że awaria jednego serwera nie spowoduje niedostępności usługi
- Optymalizacja wykorzystania zasobów
13
Q
Algorytmy Load balancingu
A
- Round Robin:
- Least Connections
- IP Hash
14
Q
Round Robin
A
- Każdy serwer otrzymuje żądanie po kolei w równych odstępach czasu.
- Jest prosty w implementacji, ale nie bierze pod uwagę aktualnego obciążenia serwera.
15
Q
Least Connections:
A
- Żądania są kierowane do serwera z najmniejszą liczbą aktywnych połączeń.
- Dobrze sprawdza się w środowiskach, gdzie sesje są długie i zróżnicowane pod kątem zasobów.
16
Q
Circuti Breaker
A
- wzorzec stosowany mikroserwisach
- TRZY STANY - CLOSED, HALF_OPEN, OPEN
- ideą jest wykrycie awarri usługi i uniemożliwienie wysyłania do niej kolejnych żadań
- może być zaimplmentowany poprzez dodanie warstwy pomiędzy usługa wykonująca a zależna
- warstwa ta działa jak przełącznik - blokuje gdy usługa nie działa
- ma na celu zapobiegania łańcuchowym awariom i zapewnienia odporności systemu
- Hystrix (lub Resilience4J)
17
Q
OpenFeign
A
- wspiera synchroniczną komunikację miedzy serwsiami
- pozwala tworzyć klientów interfejsów HTTP w sposób dekleratywny
- definiujesz @FeignClinet interfejs z abstrakcyjnymi metodami
- ułatwia wywoływanie metod REST Api innego mikroserwisy jakby były to lokalne metody javy
18
Q
Saga
A
- sekwencja lokalny transakcji
- każda lokalna transkacja aktualizuje baze danych i publikuje event, który triggeruje kolejna transkacje
- jeśli transkacja lokalna się nie powiedzie do działanie kompensujące poprzedniej.
- sercem jest Eventual consistency - system w końcu osiągnie spójność
- komunikacja asnynchroniczna między mikroserwisami
- Saga log - przechowuje każda transakcje i kompensacje
- latencja