Skalowalność mikroserwisów

JS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 63
0

Hej!

  1. Jak wygląda skalowalność mikroserwisów w Kubernetesie? Np. funkcja auto-scaling.
  2. Jak działa skalowalność w przypadku np Kafki? Mamy jedeną instancję Kafki, gdy Kafka widzi, że brakuje miejsca/ramu automatycznie tworzy drugą instancję z taką samą konfiguracją i Zookeepera do tego?
  3. Jak działa skalowalność w przypadku bazy danych SQL np Postgres? Gdy zaczyna brakować miejsca automatycznie dodawana jest kolejna instancja z taką samą schemą?
  4. Jakie są mechanizmy, które służą tzw. "przepinaniu" się na nową instancję.

Proszę o wyrozumiałość, ponieważ jestem jeszcze świeżakiem/juniorem.

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
2

1 Kubernetes tylko zarządza. A jak są uS napisane ??? Who knows ...
3. automatyczne dodanie instancji baz SQL ??? Seems strange
4. przepinanie kogo/czego???

UglyMan
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2206
1

Ad. 3
Masz dwa rodzaje skalowania. Jedno to dokładasz więcej zasobów (tak zwane przysypanie sprzętem), a drugie to dokładasz kolejne instancje. w przypadku baz relacyjnych lepiej wychodzi to pierwsze. Jeśli chodzi o klastry Postgresa to spotkałem tylko takie w modelu master - slaves czyli jest jedna instancja, do której piszesz i n instancji, z których czytasz, ale nie możesz pisać.
Ad 4.
Ale pytasz o dodatkową instancję aplikacji? Takie rzeczy odwala load balancer - on wie ile ma instancji i czy żyją. Czyli jak LB dostaje informację o nowej instancji to zaczyna puszczać na nią ruch. Jak jakaś się złoży to LB wyeliminuje ja z listy dostępnych.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
1

W ogóle przecież nic sie "samo" nie dzieje :D Co by ci niby dało odpalenie kontenera/aplikacji więcej razy, skoro potrzebny jest hardware na to. Auto-scaling to raczej kwestia dostawcy clouda, chyba ze pytasz o podstawienie jakiegoś własnego OpenShifta na jakiejś fizycznej infrastrukturze?
Nie ma czegoś takiego jak "przepinanie" na inną instancje. Masz wszystkie instancje schowane za load balancerem i inne serwisy znają tylko ten jeden "host" a to load balancer martwi się tym, żeby rozdzielać ruch pomiędzy dostępne nody.

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
1

A propos baz i uS ... czyż mikroserwisy nie obiecują (jakby) lokalnych baz danych?
Więc baza, nie będąc globalną, mniej podlega obawom o skalowalność

Charles_Ray
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1909
8

Skalowanie bezstanowych aplikacji a skalowanie baz danych to 2 osobne tematy.

Jeśli aplikacja nie trzyma stanu (oprócz jakichś cachy) to skalowanie odbywa się automatycznie lub nie poprzez wpinanie nowych instancji do discovery/load balancera. Dobrze dobrane health checki i problem solved.

W przypadku baz danych sytuacja się komplikuje, ponieważ samo dodanie nowej instancji bez danych na nic się nie zda. Każda baza podchodzi do tego na swój sposób. W Cassandrze każdy node jest „równoprawny” podczas, gdy w SQL-owej bazie przeważnie masz mastera, slave’y i repliki do odczytu (czyli heterogenicznie, a to komplikuje sprawę). Jeśli chodzi o k8s, to chyba Postgres ma wersję, która jest kompatybilna z autoskalerem - bynajmniej nie działa to w przypadku każdej bazy ot tak z paczki.

A propos baz i uS ... czyż mikroserwisy nie obiecują (jakby) lokalnych baz danych?
Więc baza, nie będąc globalną, mniej podlega obawom o skalowalność

To jak zamiatanie problemu pod dywan. Problemy ze skalowalnością bazy danych tak samo występują w świecie mikrousług, nie ma to znaczenia. Tego akurat mikroserwisy nie obiecują :)

Patryk Miszczak
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 13
1
  1. Jeżeli dobrze zrozumiałem twoje pytanie (chodzi o przepięcie na nową wersję aplikacji?) to powinieneś poczytać o blue/green deployment, canary deployment etc.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.