load balancing v distribuovaných systémech

Cílem je zajistit, aby žádný uzel nebyl přetížen, zatímco jiný zahálí. Tím přímo naplňujeme motivaci pro scaling a výkon.

Cíle a prostředky

  • Krátkodobé úlohy: Hlavním cílem je minimalizace latence (rychlá odezva pro klienta).
  • Dlouhodobé úlohy: Cílem je maximalizace celkového výkonu systému (propustnost).
  • Správa: Může být centralizovaná/hierarchická (typicky v clusterech) nebo decentralizovaná/kooperativní (P2P systémy).

[!note] Souvislost s migrací Statické vyvažování (Placement): Rozhodnu se, kde proces poběží, jen jednou na samém začátku (při jeho spuštění). Pokud se uzel později přetíží, proces tam prostě „umře“ nebo bude pomalý. Migrační vyvažování (Migratory Load Balancing): Je mnohem pokročilejší. Systém sleduje zátěž v průběhu času a pokud se situace změní, procesy za běhu stěhuje. Vyžaduje vzdálené spouštění procesů a migrace.


Strategie vyvažování (zejména pro clustery)

Tyto algoritmy určují, kam poslat nový požadavek:

Round Robin: Úlohy se přidělují uzlům cyklicky jeden po druhém; vhodné pro homogenní systémy (stejné PC) a podobně náročné úlohy.

Weighted Round Robin: Uzly mají váhy podle své výkonnosti (silnější server dostane víc práce).

Least Connections: Úloha jde na uzel, který má aktuálně nejméně otevřených spojení/úloh.

Dynamic Round Robin: Průběžně se měří aktuální výkonnost uzlů a podle klouzavého průměru se upravuje příděl práce.


Kooperativní a pokročilé algoritmy

V systémech, kde uzly spolupracují na výpočtech, se používají složitější schémata:

Up-down algoritmus

Centrální koordinátor udržuje tabulku “trestných bodů” pro každý uzel.

  • Pokud uzel využívá cizí procesory, body mu přibývají. Pokud má neuspokojené požadavky, body ubývají.
  • Při uvolnění kapacity dostane přednost uzel s nejméně trestnými body (rovnoměrné sdílení).

Vektorový algoritmus

  • Každý uzel má vektor L s informacemi o zátěži v systému (své i cizí).
  • Periodicky náhodně vybere jiný uzel a pošle mu polovinu svého vektoru.
  • Tímto “drbem” (gossip_) se informace o volných kapacitách přirozeně a rychle šíří celým systémem.

Iniciace vyvažování (Kdo začne?)

  • Sender-initiated: Přetížený uzel aktivně hledá někoho, komu by práci předal.
  • Receiver-initiated: Volný uzel se hlásí, že má hlad a chce práci.

Shrnutí

| Přístup | Charakteristika | | —————— | —————————————————————————————– | | Centralizovaný | Manažer zná zátěž všech (cca 1k–10k uzlů), velí a přiděluje. | | Lokální | Uzel zná jen svou zátěž; pokud překročí prahovou hodnotu, zkusí náhodně oslovit $n$ uzlů. |