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í:
- 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.
- 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.
- 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.
- Klienti se připojují ke všem branám a rozdělují jejich požadavky mezi ně vyváženým způsobem.
- 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é.
- 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.
- 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í.