Równoważenie obciążenia
Równoważenie obciążenia w szerokim sensie jest jednym z filarów środowiska uruchomieniowego Orleans . Orleans środowisko uruchomieniowe próbuje zapewnić równowagę, ponieważ równoważenie pozwala zmaksymalizować użycie zasobów i uniknąć hotspotów, co prowadzi do lepszej wydajności, a także pomaga w elastyczności. Równoważenie obciążenia w Orleans systemie ma zastosowanie w wielu miejscach. Poniżej znajduje się niewyczerpująca lista miejsc, w których środowisko uruchomieniowe wykonuje równoważenie:
- Domyślna strategia umieszczania aktorów jest losowa, nowe aktywacje są umieszczane losowo w silosach. Powoduje to zrównoważone umieszczanie i zapobiega hotspotom w większości scenariuszy.
- Bardziej zaawansowane ActivationCountBasedPlacement próbuje wyrównać liczbę aktywacji na wszystkich silosach, co powoduje bardziej równomierny rozkład aktywacji w silosach. Jest to szczególnie ważne dla elastyczności.
- Usługa katalogowa ziarna jest oparta na rozproszonej tabeli skrótów, która z założenia jest zrównoważona. Usługa katalogowa mapuje ziarna na aktywacje, każdy silos jest właścicielem części globalnej tabeli mapowania, a ta tabela jest globalnie partycjonowana w zrównoważony sposób we wszystkich silosach. W tym celu używamy spójnego tworzenia skrótów z zasobnikami wirtualnymi.
- Klienci łączą się ze wszystkimi bramami i rozpowszechniają żądania między nimi w zrównoważony sposób.
- Usługa przypomnienia jest rozproszoną usługą środowiska uruchomieniowego partycjonowanego. Przypisanie silosu jest odpowiedzialne za służyć, które przypomnienie jest zrównoważone we wszystkich silosach za pośrednictwem spójnego tworzenia skrótów, podobnie jak w katalogu ziarna.
- Składniki krytyczne dla wydajności w silosie są partycjonowane, a praca między nimi jest lokalnie zrównoważona. Dzięki temu środowisko uruchomieniowe silosu może w pełni wykorzystać wszystkie dostępne rdzenie procesora CPU, a nie tworzyć wąskich gardeł w silosie. Dotyczy to wszystkich zasobów lokalnych: alokacji pracy do wątków, gniazd, obowiązków wysyłania, kolejek itp.
- Moduł QueueBalancerBase równoważy odpowiedzialność za ściąganie zdarzeń z kolejek trwałości między silosami w klastrze.
Równoważenie niekoniecznie oznacza utratę lokalności. Można je zrównoważyć i nadal utrzymywać dobrą lokalność. Na przykład w przypadku równoważenia oznacza partycjonowanie/partycjonowanie, można podzielić odpowiedzialność za określone zadanie logiczne, zachowując jednocześnie lokalność w ramach każdej partycji. Dotyczy to zarówno równoważenia lokalnego, jak i rozproszonego.