Vyrovnávání zatížení

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í:

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