Sdílet prostřednictvím


Vyrovnávání zatížení

Vyrovnávání zatížení je obecně jedním z pilířů Orleans modulu runtime. Orleans modul runtime se snaží zajistit vyvážení všeho, protože vyrovnávání umožňuje maximalizovat využití prostředků a vyhnout se hotspotům, což vede k lepšímu výkonu a také pomáhá s elasticitou. Vyrovnávání zatížení platí na Orleans více místech. Níže je seznam neúplného seznamu míst, kde modul runtime provádí vyrovnávání:

  1. Výchozí strategie umístění objektu actor je náhodná, nové aktivace se náhodně umístí do sila. Výsledkem je vyvážené umístění a ve většině scénářů se zabrání hotspotům.
  2. Pokročilejší ActivationCountBasedPlacement se snaží vyrovnat počet aktivací na všech silach, což vede k rovnoměrnějšímu rozdělení aktivací napříč silami. To je zvlášť důležité pro elasticitu.
  3. Adresářová služba agregace je založená na distribuované tabulce hash, která je ze své podstaty vyvážená. Adresářová služba mapuje zrnka na aktivaci, každé silo vlastní část globální tabulky mapování a tato tabulka je globálně rozdělena vyváženým způsobem napříč všemi silami. K tomu používáme konzistentní hashování s virtuálními kontejnery.
  4. Klienti se připojují ke všem branám a rozdělují jejich požadavky mezi ně vyváženým způsobem.
  5. Služba připomenutí je distribuovaná služba modulu runtime rozdělená do oddílů. Přiřazení, které silo odpovídá za to, které připomenutí je vyváženo napříč všemi silami prostřednictvím konzistentního hashování, stejně jako v adresáři odstupňované.
  6. Komponenty kritické pro výkon v rámci sil jsou rozdělené na oddíly a práce mezi nimi je místně vyvážená. Modul runtime silo tak může plně využívat všechna dostupná jádra procesoru a nevytvoří kritické body v silu. To platí pro všechny místní prostředky: přidělení práce na vlákna, sokety, odpovědnosti odesílající, fronty atd.
  7. Vyrovnává QueueBalancerBase odpovědnost za načítání událostí z front trvalosti napříč silami v clusteru.

Vyrovnávání nemusí nutně znamenat ztrátu lokality. Jedna může být vyvážená a stále udržovat dobrou lokalitu. Pokud například vyrovnávání znamená horizontální dělení nebo dělení, můžete odpovědnost za určitou logickou úlohu rozdělit a přitom zachovat umístění v rámci každého oddílu. To platí jak pro místní, tak distribuované vyrovnávání.