Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vyrovnávání zatížení je obecně jedním z pilířů Orleans runtime. Modul Orleans runtime se snaží udržet všechno vyvážené, protože vyrovnávání maximalizuje využití prostředků, zabraňuje hotspotům, vede k lepšímu výkonu a pomáhá s elasticitou. Vyrovnávání zatížení se uplatňuje na Orleans v různých místech. Níže je seznam, kde modul runtime provádí vyrovnávání:
- Výchozí strategie umístění objektu actor je náhodná; nové aktivace jsou umístěny náhodně napříč silami. Výsledkem je vyvážené umístění a brání hotspotům ve většině scénářů.
- Pokročilejší ActivationCountBasedPlacement strategie se snaží vyrovnat počet aktivací na všech silách, což vede k rovnoměrnějšímu rozdělení na silách. To je zvlášť důležité pro elasticitu.
- Adresářová služba vychází z distribuované hash tabulky, která je ze své podstaty vyvážená. Adresářová služba mapuje zrnka na aktivaci. Každé silo vlastní část globální mapovací tabulky a tato tabulka je globálně rovnoměrně rozdělena mezi všechny sily pomocí konzistentního hashování s virtuálními nádobami.
- Klienti se připojují ke všem branám a rozdělují své požadavky mezi ně vyváženým způsobem.
- Služba připomenutí je distribuovaná služba runtime rozdělená do oddílů. Přiřazení, které silo je odpovědné za poskytování konkrétního připomenutí, je vyváženo pomocí konzistentního hashování napříč všemi silosy, stejně jako adresář zrn.
- Komponenty kritické pro výkon v rámci sila jsou rozdělené a práce mezi nimi je lokálně vyvážená. To umožňuje běhovému prostředí sila plně využívat všechna dostupná jádra procesoru a vyhnout se úzkým místům v silu. To platí pro všechny místní prostředky: přidělení práce na vlákna, sokety, rozdělení odpovědnosti za odesílání, fronty atd.
- Element QueueBalancerBase vyrovnává odpovědnost za načítání událostí z front trvalosti napříč silami v clusteru.
Vyrovnávání nemusí nutně znamenat ztrátu lokality. Můžete dosáhnout rovnováhy a přitom zachovat dobrou lokalitu. Pokud například vyrovnávání zahrnuje sharding nebo dělení, můžete odpovědnost za určitou logickou úlohu rozdělit při zachování locality v rámci každého oddílu. To platí pro místní i distribuované vyrovnávání.