Skalowalność mikroserwisów

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.

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???

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.

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.

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ść

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ą :)

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1