Freigeben über


Lastverteilung

Lastenausgleich ist im weiteren Sinne eine der Säulen der Orleans Laufzeitumgebung. Die Orleans Laufzeit versucht, alles ausgeglichen zu halten, da der Ausgleich die Ressourcennutzung maximiert, Hotspots vermeidet, zu einer besseren Leistung führt und mit der Flexibilität hilft. Lastenausgleich gilt Orleans an mehreren Stellen. Nachfolgend finden Sie eine nicht erschöpfende Liste, in der die Laufzeit einen Ausgleich durchführt:

  1. Die Standard-Akteurplatzierungsstrategie ist zufällig; Neue Aktivierungen werden zufällig über Silos hinweg platziert. Dies führt zu einer ausgewogenen Platzierung und verhindert Hotspots für die meisten Szenarien.
  2. Eine komplexere ActivationCountBasedPlacement Strategie versucht, die Anzahl der Aktivierungen auf allen Silos zu entgleichen, was zu einer gleichmäßigeren Verteilung über Silos führt. Dies ist besonders wichtig für die Flexibilität.
  3. Der Getreideverzeichnisdienst baut auf einer verteilten Hashtabelle auf, die inhärent ausgeglichen ist. Der Verzeichnisdienst ordnet Körner zu Aktivierungen zu. Jeder Silo besitzt einen Teil der globalen Zuordnungstabelle, und diese Tabelle wird global auf eine ausgewogene Weise über alle Silos verteilt, indem konsistentes Hashing mit virtuellen Buckets verwendet wird.
  4. Clients stellen eine Verbindung zu allen Gateways her und verteilen ihre Anforderungen gleichmäßig.
  5. Der Erinnerungsdienst ist ein verteilter, partitionierter Laufzeitdienst. Die Zuordnung, welches Silo verantwortlich für welchen Erinnerungsdienst ist, wird über alle Silos hinweg durch konsistentes Hashing ausgeglichen, ähnlich wie das Kornverzeichnis.
  6. Leistungskritische Komponenten innerhalb eines Silos werden unterteilt, und die Arbeit über sie hinweg wird lokal ausgeglichen. Dadurch kann die Silolaufzeit alle verfügbaren CPU-Kerne vollständig nutzen und In-Silo-Engpässe vermeiden. Dies gilt für alle lokalen Ressourcen: Zuordnung von Arbeit an Threads, Sockets, Verteileraufgaben, Warteschlangen usw.
  7. Die QueueBalancerBase Verantwortung, Ereignisse aus Persistenzwarteschlangen über Silos im Cluster hinweg abzurufen, wird ausgeglichen.

Der Ausgleich bedeutet nicht unbedingt den Verlust der Lokalität. Sie können ein Gleichgewicht erzielen und gleichzeitig eine gute Lokalität beibehalten. Wenn der Ausgleich z. B. Sharding/Partitionierung umfasst, können Sie die Verantwortung für eine bestimmte logische Aufgabe unter Beibehaltung der Lokalität innerhalb jeder Partition partitionieren. Dies gilt sowohl für den lokalen als auch für den verteilten Ausgleich.