Dela via


Belastningsutjämning

Belastningsutjämning är i vid mening en av grundpelarna i körningen Orleans . Orleans runtime försöker göra allt balanserat eftersom balansering gör det möjligt att maximera resursanvändningen och undvika hotspots, vilket leder till bättre prestanda, samt hjälper till med elasticitet. Belastningsutjämning i Orleans gäller på flera platser. Nedan visas en icke-fullständig lista över platser där körningen utför balansering:

  1. Standardstrategin för aktörsplacering är slumpmässig, nya aktiveringar placeras slumpmässigt över silor. Det resulterar i en balanserad placering och förhindrar hotspots för de flesta scenarier.
  2. Ett mer avancerat ActivationCountBasedPlacement försök att utjämna antalet aktiveringar på alla silor, vilket resulterar i en jämnare fördelning av aktiveringar mellan silor. Detta är särskilt viktigt för elasticitet.
  3. Katalogtjänsten grain bygger på en distribuerad hash-tabell, som i sig är balanserad. Katalogtjänsten mappar korn till aktiveringar, varje silo äger en del av den globala mappningstabellen och den här tabellen är globalt partitionerad på ett balanserat sätt över alla silor. Vi använder konsekvent hashning med virtuella bucketar för detta.
  4. Klienter ansluter till alla gatewayer och sprider sina begäranden över dem på ett balanserat sätt.
  5. Påminnelsetjänsten är en distribuerad partitionerad körningstjänst. Tilldelningen av vilken silo som ansvarar för att hantera vilken påminnelse som balanseras över alla silor via konsekvent hashning, precis som i kornkatalogen.
  6. Prestandakritiska komponenter i en silo partitioneras och arbetet mellan dem är lokalt balanserat. På så sätt kan silo-körningen fullt ut utnyttja alla tillgängliga CPU-kärnor och inte skapa flaskhalsar i silo. Detta gäller för alla lokala resurser: allokering av arbete till trådar, socketar, sändningsansvar, köer osv.
  7. Balanserar QueueBalancerBase ansvaret för att hämta händelser från beständighetsköer över silor i klustret.

Balansering innebär inte nödvändigtvis förlust av ort. En kan balanseras och fortfarande upprätthålla en bra lokalitet. När utjämning till exempel innebär partitionering/partitionering kan du partitionera ansvaret för en viss logisk uppgift, samtidigt som du behåller lokaliteten inom varje partition. Det gäller både för lokal och distribuerad balansering.