Skalowalność mikroserwisów

JS
JS
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • 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:ponad 6 lat
  • Ostatnio:około rok
  • 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???


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 1x, ostatnio: AnyKtokolwiek
UglyMan
  • Rejestracja:około 6 lat
  • Ostatnio:około 3 lata
  • 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.

edytowany 2x, ostatnio: UglyMan
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • 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.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
WeiXiao
Nie ma czegoś takiego jak "przepinanie" na inną instancje. no a jak niby się robi patche bez downtimu bez "przepinania"?
Shalom
@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
@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
nalik
Ok, ok, myślałem, że mówisz konkretnie o k8s/openshift.
AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:około rok
  • 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ść


Bo C to najlepszy język, każdy uczeń ci to powie
Charles_Ray
  • Rejestracja:prawie 17 lat
  • Ostatnio:2 dni
  • Postów:1873
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ą :)


”Engineering is easy. People are hard.” Bill Coughran
edytowany 4x, ostatnio: Charles_Ray
Patryk Miszczak
  • Rejestracja:około 8 lat
  • Ostatnio:około 2 lata
  • 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.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)