Taakverdeling voor je Service Fabric-cluster maken

Service Fabric Cluster Resource Manager ondersteunt dynamische belastingswijzigingen, reagerend op toevoegingen of verwijderingen van knooppunten of services. Ook worden beperkingen automatisch gecorrigeerd en wordt het cluster proactief opnieuw in evenwicht gebracht. Maar hoe vaak worden deze acties uitgevoerd en wat zorgt ervoor dat ze worden geactiveerd?

Er zijn drie verschillende werkcategorieën die door Cluster Resource Manager worden uitgevoerd:

  • Plaatsing: deze fase gaat over het plaatsen van stateful replica's of stateless exemplaren die ontbreken. Plaatsing omvat zowel nieuwe services als het behandelen van stateful replica's of stateless exemplaren die niet meer functioneren. Hier worden replica's en instanties verwijderd of beëindigd.
  • Beperkingscontroles: in deze fase worden schendingen van de verschillende plaatsingsbeperkingen (regels) in het systeem gecontroleerd en gecorrigeerd. Voorbeelden van regels zijn zaken als het controleren of knooppunten niet over de capaciteit beschikken en dat aan de plaatsingsbeperkingen van een service wordt voldaan.
  • Taakverdeling: deze fase controleert of herverdeling vereist is op basis van het geconfigureerde gewenste saldoniveau voor verschillende metrische gegevens. Als dat het zo is, wordt geprobeerd een rangschikking te vinden in het cluster dat evenwichtiger is.

Timers voor Cluster Resource Manager configureren

De eerste set besturingselementen rond balanceren is een set timers. Deze timers bepalen hoe vaak de Cluster Resource Manager het cluster onderzoekt en corrigerende acties uitvoert.

Elk van deze verschillende typen correcties die door Cluster Resource Manager kunnen worden aangebracht, wordt bepaald door een andere timer die de frequentie bepaalt. Telkens wanneer een timer wordt geactiveerd, wordt de taak ingepland. Resource Manager is standaard:

  • scant zijn status en past updates toe (zoals de registratie dat een knooppunt niet actief is) elke 1/10e van een seconde
  • stelt de plaatsingscontrolevlag elke seconde in
  • stelt de indicator voor beperkingscontrole elke seconde in
  • zet de balanceringsvlag om de vijf seconden

Hieronder ziet u voorbeelden van de configuratie voor deze timers:

ClusterManifest.xml:

        <Section Name="PlacementAndLoadBalancing">
            <Parameter Name="PLBRefreshGap" Value="0.1" />
            <Parameter Name="MinPlacementInterval" Value="1.0" />
            <Parameter Name="MinConstraintCheckInterval" Value="1.0" />
            <Parameter Name="MinLoadBalancingInterval" Value="5.0" />
        </Section>

via ClusterConfig.json voor zelfstandige implementaties of Template.json voor gehoste Azure-clusters:

"fabricSettings": [
  {
    "name": "PlacementAndLoadBalancing",
    "parameters": [
      {
          "name": "PLBRefreshGap",
          "value": "0.10"
      },
      {
          "name": "MinPlacementInterval",
          "value": "1.0"
      },
      {
          "name": "MinConstraintCheckInterval",
          "value": "1.0"
      },
      {
          "name": "MinLoadBalancingInterval",
          "value": "5.0"
      }
    ]
  }
]

Op dit moment voert Cluster Resource Manager slechts één van deze acties tegelijk uit, opeenvolgend. Daarom verwijzen we naar deze timers als 'minimale intervallen' en de acties die worden uitgevoerd wanneer de timers worden uitgeschakeld als 'vlag instellen'. De Cluster Resource Manager zorgt bijvoorbeeld voor aanvragen die in behandeling zijn om services te maken voordat het cluster in balans wordt gebracht. Zoals u kunt zien met de standaardtijdsintervallen die zijn opgegeven, scant de Cluster Resource Manager op alles wat het vaak moet doen. Normaal gesproken betekent dit dat de set wijzigingen die tijdens elke stap zijn aangebracht, klein is. Kleine, frequente wijzigingen zorgen ervoor dat Cluster Resource Manager reageert wanneer er iets gebeurt in het cluster. De standaardtimers bieden enige batchverwerking, omdat veel van dezelfde soorten gebeurtenissen meestal gelijktijdig plaatsvinden.

Wanneer knooppunten bijvoorbeeld mislukken, kunnen ze dat doen in volledige foutdomeinen tegelijk. Al deze fouten worden vastgelegd tijdens de volgende statusupdate na de PLBRefreshGap. De correcties worden bepaald tijdens de volgende plaatsing, beperkingscontrole en balansruns. Standaard scant de Cluster Resource Manager niet door uren aan veranderingen in het cluster en probeert niet alle wijzigingen tegelijkertijd aan te pakken. Dit zou leiden tot pieken in het verloop.

De Cluster Resource Manager heeft ook aanvullende informatie nodig om te bepalen of het cluster onevenwichtig is. Hiervoor hebben we twee andere configuratieonderdelen: BalancingThresholds en ActivityThresholds.

Drempelwaarden in balans brengen

Een balanceringdrempel is het belangrijkste besturingselement voor het activeren van balanceren. De drempelwaarde voor evenwicht voor een metriek is een verhouding. Als de belasting voor een metrische waarde voor het meest geladen knooppunt, gedeeld door de hoeveelheid belasting op het minst belaste knooppunt, overschrijdt dat metrische gegeven BalancingThreshold, is het cluster onevenwichtig. Als gevolg hiervan wordt balancering geactiveerd wanneer de Cluster Resource Manager de volgende keer controleert. De MinLoadBalancingInterval-timer bepaalt hoe vaak de Cluster Resource Manager moet controleren of herverdeling nodig is. Controleren betekent niet dat er iets gebeurt.

Balanceringsdrempels worden op basis van elke meetwaarde gedefinieerd als onderdeel van de clusterdefinitie. Raadpleeg het artikel met metrische gegevens voor meer informatie over metrische gegevens.

ClusterManifest.xml

    <Section Name="MetricBalancingThresholds">
      <Parameter Name="MetricName1" Value="2"/>
      <Parameter Name="MetricName2" Value="3.5"/>
    </Section>

via ClusterConfig.json voor zelfstandige implementaties of Template.json voor gehoste Azure-clusters:

"fabricSettings": [
  {
    "name": "MetricBalancingThresholds",
    "parameters": [
      {
          "name": "MetricName1",
          "value": "2"
      },
      {
          "name": "MetricName2",
          "value": "3.5"
      }
    ]
  }
]

Diagram met een voorbeeld van een drempelwaarde voor knooppuntverdeling

In dit voorbeeld verbruikt elke service één eenheid van een metrische waarde. In het bovenste voorbeeld is de maximale belasting op een knooppunt vijf en het minimum is twee. Stel dat de balansdrempel voor deze metriek drie is. Omdat de verhouding in het cluster 5/2 = 2,5 is en dat kleiner is dan de opgegeven balansdrempel van drie, is het cluster in balans. Er wordt geen balancering geactiveerd wanneer de Cluster Resource Manager controleert.

In het onderste voorbeeld is de maximale belasting op een knooppunt 10, terwijl het minimum twee is, wat resulteert in een verhouding van vijf. Vijf is groter dan de aangewezen balansdrempel van drie voor die metriek. Als gevolg hiervan wordt een herverdelingsuitvoering gepland wanneer de taakverdelingstimer de volgende keer wordt geactiveerd. In een situatie zoals deze wordt meestal een deel van de belasting naar Node 3 gedistribueerd. Omdat de Service Fabric Cluster Resource Manager niet volgens een gretige aanpak werkt, zou de belasting ook naar Node 2 kunnen worden verdeeld.

Diagram dat een actie toont die is ondernomen als reactie op een evenwichtsgrens.

Notitie

'Taakverdeling' verwerkt twee verschillende strategieën voor het beheren van de belasting in uw cluster. De standaardstrategie die door Resource Manager wordt gebruikt, is het verdelen van de belasting over de knooppunten in het cluster. De andere strategie is defragmentatie. Defragmentatie wordt uitgevoerd tijdens hetzelfde balanceringsproces. De strategieën voor het verdelen en defragmenteren kunnen worden gebruikt voor verschillende metrische gegevens binnen hetzelfde cluster. Een service kan zowel metrische gegevens voor taakverdeling als defragmentatie bevatten. Voor defragmentatie statistieken activeert de belastingverhouding in het cluster het herverdelen wanneer deze onder de balansdrempel valt.

Het is geen expliciet doel om onder de evenwichtsdrempel te komen. Drempelwaarden voor balans zijn slechts een trigger. Wanneer de balansacties worden uitgevoerd, bepaalt de Cluster Resource Manager welke verbeteringen het kan aanbrengen, indien er verbeteringen mogelijk zijn. Alleen omdat een balanceringszoektocht wordt gestart, betekent niet dat er iets beweegt. Soms is het cluster onevenwichtig, maar te beperkt om te corrigeren. De verbeteringen vereisen ook bewegingen die te kostbaar zijn).

Drempelwaarden voor activiteit

Hoewel knooppunten relatief onevenwichtig zijn, is de totale belasting in het cluster laag. Het gebrek aan belasting kan een tijdelijke dip zijn, of omdat het cluster nieuw is en alleen wordt opgestart. In beide gevallen wilt u mogelijk geen tijd besteden aan het balanceren van het cluster omdat er weinig voordeel te behalen valt. Als het cluster een evenwicht heeft ondergaan, zou u netwerk- en rekenresources uitgeven om dingen te verplaatsen zonder dat u een groot absoluut verschil hoeft te maken. Om onnodige verplaatsingen te voorkomen, is er een ander besturingselement dat activiteitsdrempels wordt genoemd. Met drempelwaarden voor activiteiten kunt u een absolute ondergrens voor activiteit opgeven. Als er geen knooppunt boven deze drempelwaarde valt, wordt de balancering niet gestart, zelfs niet als aan deze drempel wordt voldaan.

Stel dat we onze Balancing Threshold van drie behouden voor deze metriek. Stel ook dat we een drempelwaarde voor activiteit van 1536 hebben. In het eerste geval, terwijl het cluster onevenwichtig is volgens de drempelwaarde voor taakverdeling, voldoet er geen knooppunt aan die activiteitsdrempel, zodat er niets gebeurt. In het onderste voorbeeld overschrijdt Node 1 de drempelwaarde voor activiteit. Omdat zowel de balansdrempel als de activiteitsdrempel voor de metriek worden overschreden, wordt de balancering gepland. Laten we eens kijken naar het volgende diagram:

Diagram met een voorbeeld van een drempelwaarde voor knooppuntactiviteit.

Net als bij taakverdelingsdrempels worden activiteitsdrempels per metrische waarde gedefinieerd via de clusterdefinitie:

ClusterManifest.xml

    <Section Name="MetricActivityThresholds">
      <Parameter Name="Memory" Value="1536"/>
    </Section>

via ClusterConfig.json voor zelfstandige implementaties of Template.json voor gehoste Azure-clusters:

"fabricSettings": [
  {
    "name": "MetricActivityThresholds",
    "parameters": [
      {
          "name": "Memory",
          "value": "1536"
      }
    ]
  }
]

Taakverdelings- en activiteitsdrempels zijn beide gekoppeld aan een specifieke metrische waarde. De taakverdeling wordt alleen geactiveerd als zowel de drempelwaarde voor taakverdeling als de activiteitsdrempel voor dezelfde metrische waarde worden overschreden.

Notitie

Wanneer deze niet is opgegeven, is de taakverdelingsdrempel voor een metrische waarde 1 en is de drempelwaarde voor activiteit 0. Dit betekent dat de Cluster Resource Manager probeert deze metrische gegevens perfect te verdelen voor elke bepaalde belasting. Als u aangepaste metrische gegevens gebruikt, wordt u aangeraden uw eigen taakverdelings- en activiteitsdrempels expliciet te definiëren voor uw metrische gegevens.

Services in balans brengen

Of het cluster onbalans heeft of niet, is een beslissing voor het hele cluster. We lossen dit echter op door afzonderlijke servicereplica's en exemplaren te verplaatsen. Dit is logisch, toch? Als het geheugen op één knooppunt is gestapeld, kunnen meerdere replica's of exemplaren hieraan bijdragen. Het oplossen van de onevenwichtigheid kan vereisen dat een van de stateful replica's of staatloze exemplaren die gebruikmaken van de onevenwichtige metriek, verplaatst worden.

Af en toe wordt een dienst die zelf niet onevenwichtig was verplaatst (denk aan de eerder besproken discussie over lokale en globale gewichten). Waarom zou een service worden verplaatst wanneer alle metrische gegevens van die service in balans waren? Laten we een voorbeeld bekijken:

  • Stel dat er vier services zijn, Service 1, Service 2, Service 3 en Service 4.
  • Service 1 rapporteert metrische gegevens 1 en metrische gegevens 2.
  • Service 2 rapporteert de metrieken Metriek 2 en Metriek 3.
  • Service 3 rapporteert metrieken 3 en 4.
  • Service 4 rapporteert metriek Metric 99.

We hebben niet echt vier onafhankelijke services, we hebben drie services die gerelateerd zijn en een die zelfstandig is uitgeschakeld.

Diagram waarin wordt getoond hoe u services samen kunt verdelen.

Vanwege deze keten is het mogelijk dat een onevenwichtigheid in metriek 1-4 ervoor zorgt dat replica's of exemplaren van services 1-3 zich verplaatsen. We weten ook dat een onevenwichtigheid in metrische gegevens 1, 2 of 3 geen verplaatsingen in Service 4 kan veroorzaken. Er is geen reden aangezien het verplaatsen van de replica's of exemplaren die bij Service 4 horen, absoluut niets kan doen om het evenwicht van metrieken 1-3 te beïnvloeden.

De Cluster Resource Manager bepaalt automatisch welke services zijn gerelateerd. Het toevoegen, verwijderen of wijzigen van de metrische gegevens voor services kan van invloed zijn op hun relaties. Bijvoorbeeld, tussen twee uitvoeringen van het balanceren kan Service 2 zijn bijgewerkt om Metric 2 te verwijderen. Hierdoor wordt de keten tussen Service 1 en Service 2 verbroken. In plaats van twee groepen gerelateerde services zijn er drie:

Diagram waarin wordt weergegeven dat Cluster Resource Manager bepaalt welke services zijn gerelateerd.

Taakverdeling van een cluster per knooppunttype

Zoals we in de vorige secties hebben beschreven, zijn de belangrijkste besturingselementen voor het activeren van herverdeling activiteitsdrempels, taakdrempels en timers. Service Fabric Cluster Resource Manager biedt gedetailleerdere controle over het activeren van herverdeling met het opgeven van parameters per knooppunttype en het toestaan van beweging alleen voor onevenwichtige knooppunttypen. Het belangrijkste voordeel van het verdelen per knooppunttype is het toestaan van prestatieverbeteringen voor knooppunttypen waarvoor strengere taakverdelingsregels zijn vereist, zonder prestatievermindering op andere knooppunttypen. De functie bevat twee hoofdonderdelen:

  • Detectie van onevenwichtigheid wordt uitgevoerd per knooppunttype. Voorheen werd de globale berekening van ongelijkmatigheid uitgevoerd per knooppunttype. Als alle knooppunttypen in balans zijn, activeert de CRM de balanceringsfase niet. Anders, als er ten minste één knooppunttype onevenwichtig is, is een balanceringsfase nodig.
  • Door de taakverdeling worden replica's alleen verplaatst op knooppunttypen die onevenwichtig zijn; andere knooppunttypen worden niet beïnvloed door de taakverdelingsfase.

Hoe taakverdeling per knooppunttype van invloed is op een cluster

Tijdens het balanceren van een cluster per knooppunttype berekent de Service Fabric Cluster Resource Manager de onevenwichtsstatus voor elk knooppunttype. Als ten minste één knooppunttype onevenwichtig is, wordt de taakverdelingsfase geactiveerd. Tijdens de balanceringsfase worden kopieën niet verplaatst op knooppunttypen die onevenwichtig zijn, wanneer de balancering tijdelijk is onderbroken op deze knooppunttypen (bijvoorbeeld omdat het minimale balansinterval sinds een eerdere balanceringsfase nog niet is verstreken). De detectie van een onevenwichtige status maakt gebruik van algemene mechanismen die al beschikbaar zijn voor klassieke clusterverdeling, maar verbetert de configuratiegranulariteit en flexibiliteit. De mechanismen die worden gebruikt voor het verdelen per knooppunttype om onevenwichtigheid te detecteren, worden gegeven in de onderstaande lijst:

  • Drempelwaarden voor metrische taakverdeling per knooppunttype zijn waarden met een vergelijkbare rol als de globaal gedefinieerde taakdrempelwaarde die wordt gebruikt in klassieke taakverdeling. De verhouding tussen minimale en maximale metrische belasting wordt berekend voor elk knooppunttype. Als deze verhouding van een knooppunttype hoger is dan de gedefinieerde taakverdelingsdrempel van het knooppunttype, wordt het knooppunttype gemarkeerd als onevenwichtige waarde. Voor meer informatie over de configuratie van drempelwaarden voor metrische activiteit per knooppunttype, controleert u de taakverdelingsdrempels per sectie van het knooppunttype.
  • Drempelwaarden voor metrische activiteit per knooppunttype zijn waarden die een vergelijkbare rol hebben als de wereldwijd gedefinieerde activiteitsdrempelwaarde die wordt gebruikt in klassieke taakverdeling. De maximale metrische belasting wordt berekend voor elk knooppunttype. Als de maximale belasting van een knooppunttype hoger is dan de gedefinieerde activiteitsdrempel voor dat knooppunttype, wordt het knooppunttype gemarkeerd als onevenwichtig. Raadpleeg de sectie activiteitsdrempels per knooppunttype voor meer informatie over de configuratie van drempelwaarden voor metrische activiteit per knooppunttype.
  • Het minimale taakverdelingsinterval per knooppunttype heeft een rol die vergelijkbaar is met het globaal gedefinieerde minimale taakverdelingsinterval. Voor elk knooppunttype behoudt Cluster Resource Manager de tijdstempel van de laatste taakverdeling. Twee opeenvolgende taakverdelingsfasen kunnen niet worden uitgevoerd op een knooppunttype binnen het gedefinieerde minimale taakverdelingsinterval. Controleer het minimale taakverdelingsinterval per knooppunttype voor meer informatie over de configuratie van het minimale taakverdelingsinterval per knooppunttypesectie.

Taakverdeling per knooppunttype beschrijven

Als u taakverdeling per knooppunttype wilt inschakelen, moet parameter SeparateBalancingStrategyPerNodeType zijn ingeschakeld in een clustermanifest. Daarnaast moet de functie voor subclustering ook worden ingeschakeld. Voorbeeld van een clustermanifest PlacementAndLoadBalancing-sectie voor het inschakelen van de functie:

<Section Name="PlacementAndLoadBalancing">
    <Parameter Name="SeparateBalancingStrategyPerNodeType" Value="true" />
    <Parameter Name="SubclusteringEnabled" Value="true" />
    <Parameter Name="SubclusteringReportingPolicy" Value="1" />
</Section>

ClusterConfig.json voor zelfstandige implementaties of Template.json voor gehoste Azure-clusters:

"fabricSettings": [
  {
    "name": "PlacementAndLoadBalancing",
    "parameters": [
      {
          "name": "SeparateBalancingStrategyPerNodeType",
          "value": "true"
      },
      {
          "name": "SubclusteringEnabled",
          "value": "true"
      },
      {
          "name": "SubclusteringReportingPolicy",
          "value": "1"
      },
    ]
  }
]

Zoals we in de vorige sectie hebben beschreven, kunnen drempelwaarden en intervallen per knooppunttype worden opgegeven. Raadpleeg de volgende secties voor meer informatie over het bijwerken van specifieke parameters:

Drempels balanceren per knooppunttype

Drempelwaarde voor metrische balans kan per knooppunttype worden gedefinieerd om de granulariteit van de balansconfiguratie te vergroten. Taakverdelingsdrempels hebben een zwevendekomma-type, omdat ze de drempelwaarde vertegenwoordigen voor de verhouding tussen de maximale en minimale belastingswaarde binnen een bepaald type knooppunt. Taakverdelingsdrempels worden gedefinieerd in de sectie PlacementAndLoadBalancingOverrides voor elk knooppunttype:

<NodeTypes>
    <NodeType Name="NodeType1">
        <PlacementAndLoadBalancingOverrides>
            <MetricBalancingThresholdsPerNodeType>
                <BalancingThreshold Name="Metric1" Value="2.5">
                <BalancingThreshold Name="Metric2" Value="4">
                <BalancingThreshold Name="Metric3" Value="3.25">
            </MetricBalancingThresholdsPerNodeType>
        </PlacementAndLoadBalancingOverrides>
    </NodeType>
</NodeTypes>

Als de balanceringsdrempel voor een metriek niet gedefinieerd is voor een knooppunttype, erft de drempelwaarde de waarde van de globaal gedefinieerde balanceringsdrempel in de PlacementAndLoadBalancing sectie. Anders, als de balansdrempel voor een metriek niet is gedefinieerd, noch voor een knooppunttype noch globaal in een PlacementAndLoadBalancing-sectie, krijgt de drempelwaarde de standaardwaarde van één.

Activiteitsdrempels per knooppunttype

Drempelwaarde voor metrische activiteit kan per knooppunttype worden gedefinieerd om de granulariteit van de taakverdelingsconfiguratie te vergroten. Activiteitsdrempels hebben een geheel getal, omdat ze een drempelwaarde vertegenwoordigen voor maximale belastingswaarde binnen een bepaald knooppunttype. Activiteitsdrempels worden gedefinieerd in de sectie PlacementAndLoadBalancingOverrides voor elk knooppunttype:

<NodeTypes>
    <NodeType Name="NodeType1">
        <PlacementAndLoadBalancingOverrides>
            <MetricActivityThresholdsPerNodeType>
                <ActivityThreshold Name="Metric1" Value="500">
                <ActivityThreshold Name="Metric2" Value="40">
                <ActivityThreshold Name="Metric3" Value="1000">
            </MetricActivityThresholdsPerNodeType>
        </PlacementAndLoadBalancingOverrides>
    </NodeType>
</NodeTypes>

Als de activiteitsdrempel voor een metrische waarde niet is gedefinieerd voor een knooppunttype, neemt drempelwaarde de waarde over van de drempelwaarde voor metrische activiteit die globaal is gedefinieerd in de sectie PlacementAndLoadBalancing . Anders, als de activiteitsdrempel voor een metrische waarde niet is gedefinieerd, noch voor een knooppunttype, noch globaal in een PlacementAndLoadBalancing-sectie, zal de drempel de standaardwaarde van nul hebben.

Minimale balansinterval per knooppunttype

Er kan per knooppunttype een minimaal balanceringsinterval worden gedefinieerd om de granulariteit van de balanceringsconfiguratie te vergroten. De minimale balansinterval heeft een geheel getaltype, omdat het de minimale tijd vertegenwoordigt die moet verstrijken voordat er twee opeenvolgende balansrondes kunnen plaatsvinden op hetzelfde knooppunttype. Het minimale taakverdelingsinterval wordt gedefinieerd in de sectie PlacementAndLoadBalancingOverrides voor elk knooppunttype:

<NodeTypes>
    <NodeType Name="NodeType1">
        <PlacementAndLoadBalancingOverrides>
            <MinLoadBalancingIntervalPerNodeType>100</MinLoadBalancingIntervalPerNodeType>
        </PlacementAndLoadBalancingOverrides>
    </NodeType>
</NodeTypes>

Als een minimaal taakinterval niet is gedefinieerd voor een knooppunttype, neemt interval de waarde over van het minimale taakverdelingsinterval dat globaal is gedefinieerd in de sectie PlacementAndLoadBalancing . Als een minimaal interval niet is gedefinieerd voor een knooppunttype of globaal, in de sectie PlacementAndLoadBalancing, heeft het minimale interval de standaardwaarde nul, wat aangeeft dat de pauze tussen opeenvolgende balansrondes niet vereist is.

Voorbeelden

Voorbeeld 1

Laten we eens kijken naar een geval waarin een cluster twee knooppunttypen bevat, knooppunttype A en knooppunttype B. Alle services rapporteren dezelfde metrische gegevens en ze zijn gesplitst tussen deze knooppunttypen, waardoor belastingstatistieken voor hen verschillen. In het voorbeeld heeft het knooppunttype A een maximale belasting van 300 en minimaal 100, en het knooppunttype B heeft een maximale belasting van 700 en een minimale belasting van 500:

Diagram met een voorbeeld van een knooppunttypeverdelingsdrempel met twee knooppunttypen.

De klant heeft gedetecteerd dat workloads van twee knooppunttypen verschillende taakverdelingsbehoeften hebben en hebben besloten om verschillende taakverdelings- en activiteitsdrempels per knooppunttype in te stellen. De drempelwaarde voor taakverdeling van knooppunttype A is 2,5 en de drempelwaarde voor activiteit is 50. Voor knooppunttype B stelt de klant de taakverdelingsdrempel in op 1,2 en de activiteitsdrempelwaarde op 400.

Tijdens de detectie van onevenwichtigheid voor het cluster in dit voorbeeld schenden beide knooppunttypen de drempelwaarde voor activiteit. De maximale belasting van het knooppunttype A van 300 is hoger dan de gedefinieerde activiteitsdrempel van 50. De maximale belasting van het knooppunttype B van 700 is hoger dan de gedefinieerde activiteitsdrempel van 400. Knooppunttype A schendt de drempelwaardecriteria voor taakverdeling, omdat de huidige verhouding van maximum- en minimumbelasting 3 is en de taakverdelingsdrempel 2,5 is. Het tegenovergestelde is dat knooppunttype B niet in strijd is met de drempelwaardecriteria voor taakverdeling, omdat de huidige verhouding van maximum- en minimumbelasting voor dit knooppunttype 1,2 is, maar de taakverdelingsdrempel 1,4 is. Taakverdeling is alleen vereist voor replica's in het knooppunttype A en de enige set replica's die in aanmerking komen voor bewegingen tijdens de taakverdelingsfase, zijn replica's die in het knooppunttype A worden geplaatst.

Voorbeeld 2

Laten we eens kijken naar een geval waarin een cluster drie knooppunttypen, knooppunttype A, B en C bevat. Alle services rapporteren dezelfde metrische gegevens en ze zijn gesplitst tussen deze knooppunttypen, waardoor belastingstatistieken voor hen verschillen. In het voorbeeld heeft het knooppunttype A een maximale belasting van 600 en minimaal 100, het knooppunttype B heeft een maximale belasting van 900 en een minimale belasting van 100, en knooppunttype C heeft een maximale belasting van 600 en minimaal 300:

Diagram met een voorbeeld van een knooppunttypeverdelingsdrempel met drie knooppunttypen.

De klant heeft gedetecteerd dat workloads van deze knooppunttypen verschillende taakverdelingsbehoeften hebben en hebben besloten om verschillende taakverdelings- en activiteitsdrempels per knooppunttype in te stellen. De drempelwaarde voor taakverdeling van knooppunttype A is 5 en de drempelwaarde voor activiteit is 700. Voor knooppunttype B stelt de klant de taakverdelingsdrempel in op 10 en de activiteitsdrempelwaarde op 200. Voor knooppunttype C stelt de klant de taakverdelingsdrempel in op 2 en de activiteitsdrempelwaarde op 300.

De maximale belasting van knooppunttype A van 600 is lager dan de gedefinieerde activiteitsdrempel van 700, dus knooppunttype A wordt niet verdeeld. De maximale belasting van het knooppunttype B van 900 is hoger dan de gedefinieerde activiteitsdrempel van 200. Het knooppunttype B overtreedt de activiteitsdrempelcriteria. De maximale belasting van het knooppunttype C van 600 is hoger dan de gedefinieerde activiteitsdrempel van 300. Het knooppunttype C schendt criteria voor de drempelwaarde voor activiteit. Het knooppunttype B voldoet niet aan de drempelwaardecriteria voor de taakverdeling, omdat de huidige verhouding van maximum- en minimumbelasting voor dit knooppunttype 9 is, maar de taakverdelingsdrempel is 10. Knooppunttype C schendt de drempelwaardecriteria voor taakverdeling, omdat de huidige verhouding van de maximale en minimale belasting 2 is en de taakverdelingsdrempel 2 is. De taakverdeling is alleen vereist voor replica's in het knooppunttype C en de enige set replica's die in aanmerking komen voor bewegingen tijdens de taakverdelingsfase, zijn replica's die in het knooppunttype C worden geplaatst.

Volgende stappen