Skalowalność mikroserwisów

Odpowiedz Nowy wątek
2020-09-15 20:46

Rejestracja: 1 miesiąc temu

Ostatnio: 16 godzin temu

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.


„Miłość niech będzie bez obłudy. Miejcie wstręt do złego, podążajcie za dobrem.” – Rz 12,9

Pozostało 580 znaków

2020-09-15 21:16

Rejestracja: 2 lata temu

Ostatnio: 4 godziny temu

2

1 Kubernetes tylko zarządza. A jak są uS napisane ??? Who knows ...

  1. automatyczne dodanie instancji baz SQL ??? Seems strange
  2. przepinanie kogo/czego???
edytowany 1x, ostatnio: AnyKtokolwiek, 2020-09-15 21:30

Pozostało 580 znaków

2020-09-15 21:18

Rejestracja: 1 rok temu

Ostatnio: 3 godziny temu

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.

edytowany 2x, ostatnio: UglyMan, 2020-09-15 21:24

Pozostało 580 znaków

2020-09-15 21:19
Moderator

Rejestracja: 16 lat temu

Ostatnio: 53 minuty temu

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.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
Nie ma czegoś takiego jak "przepinanie" na inną instancje. no a jak niby się robi patche bez downtimu bez "przepinania"? - WeiXiao 2020-09-15 21:27
@WeiXiao: wyrzucasz instancje z load balancera, przekręcasz aplikacje na nową wersje, dodajesz instancje do load balancera. Powtatarzasz operacje dla każdej instancji i voila. - Shalom 2020-09-15 21:29
@nalik jeśli akurat konkretnie używasz k8s, ale ja opisałem jak się to realizuje w ogólnym przypadku. Zresztą ten rolling update działa dokładnie w ten sposób -> the Service will load-balance the traffic only to available Pods during the update - Shalom 2020-09-15 22:37
Ok, ok, myślałem, że mówisz konkretnie o k8s/openshift. - nalik 2020-09-15 22:45

Pozostało 580 znaków

2020-09-15 21:33

Rejestracja: 2 lata temu

Ostatnio: 4 godziny temu

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

Pozostało 580 znaków

2020-09-15 21:46

Rejestracja: 12 lat temu

Ostatnio: 3 godziny temu

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


IT mikromenadżer
edytowany 4x, ostatnio: Charles_Ray, 2020-09-15 21:50

Pozostało 580 znaków

2020-09-20 18:01

Rejestracja: 3 lata temu

Ostatnio: 5 dni temu

Lokalizacja: Poznań

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.

Pozostało 580 znaków

Odpowiedz

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