Share via


Dapr-összetevők rugalmassága (előzetes verzió)

A rugalmassági szabályzatok proaktív módon megakadályozzák, észlelik és helyreállítják a tárolóalkalmazás hibáit. Ebből a cikkből megtudhatja, hogyan alkalmazhat rugalmassági szabályzatokat olyan alkalmazásokra, amelyek a Dapr használatával integrálhatók a különböző felhőszolgáltatásokkal, például az állami áruházakkal, a pub/alüzenet-közvetítőkkel, a titkos tárakkal stb.

A következő kimenő és bejövő műveleti irányokhoz konfigurálhat rugalmassági szabályzatokat, például újrapróbálkozási, időtúllépési és kapcsolatcsoport-megszakítókat egy Dapr-összetevőn keresztül:

  • Kimenő műveletek: Hívás a Dapr oldalkocsiról egy összetevőre, például:
    • Állapot megőrzése vagy beolvasása
    • Üzenet közzététele
    • Kimeneti kötés meghívása
  • Bejövő műveletek: A Dapr oldalkocsiról a tárolóalkalmazásba irányuló hívások, például:
    • Előfizetések üzenet küldésekor
    • Eseményt szállító bemeneti kötések

Az alábbi képernyőkép azt mutatja be, hogy egy alkalmazás hogyan használ újrapróbálkozási szabályzatot a sikertelen kérelmekből való helyreállításra.

Diagram demonstrating resiliency for container apps with Dapr components.

Támogatott rugalmassági szabályzatok

Rugalmassági szabályzatok konfigurálása

Megadhatja, hogy a Bicep, a CLI vagy az Azure Portal használatával hozzon létre rugalmassági szabályzatokat.

Az alábbi rugalmassági példa az összes elérhető konfigurációt szemlélteti.

resource myPolicyDoc 'Microsoft.App/managedEnvironments/daprComponents/resiliencyPolicies@2023-11-02-preview' = {
  name: 'my-component-resiliency-policies'
  parent: '${componentName}'
  properties: {
    outboundPolicy: {
      timeoutPolicy: {
          responseTimeoutInSeconds: 15
      }
      httpRetryPolicy: {
          maxRetries: 5
          retryBackOff: {
            initialDelayInMilliseconds: 1000
            maxIntervalInMilliseconds: 10000
          }
      }
      circuitBreakerPolicy: {  
          intervalInSeconds: 15
          consecutiveErrors: 10
          timeoutInSeconds: 5     
      }  
    } 
    inboundPolicy: {
      timeoutPolicy: {
        responseTimeoutInSeconds: 15
      }
      httpRetryPolicy: {
        maxRetries: 5
        retryBackOff: {
          initialDelayInMilliseconds: 1000
          maxIntervalInMilliseconds: 10000
        }
      }
      circuitBreakerPolicy: {  
          intervalInSeconds: 15
          consecutiveErrors: 10
          timeoutInSeconds: 5     
      }  
    }
  }
}

Fontos

Az összes rugalmassági szabályzat alkalmazása után újra kell indítania a Dapr-alkalmazásokat.

Szabályzat-specifikációk

Időtúllépések

Az időtúllépések a hosszú ideig futó műveletek korai leállítására szolgálnak. Az időtúllépési szabályzat a következő tulajdonságokat tartalmazza.

properties: {
  outbound: {
    timeoutPolicy: {
        responseTimeoutInSeconds: 15
    }
  }
  inbound: {
    timeoutPolicy: {
        responseTimeoutInSeconds: 15
    }
  }
}
Metaadatok Kötelező Leírás Példa
responseTimeoutInSeconds Igen Időtúllépés a Dapr-összetevő válaszára várva. 15

Újrapróbálkozások

httpRetryPolicy A sikertelen műveletek stratégiájának meghatározása. Az újrapróbálkozési szabályzat a következő konfigurációkat tartalmazza.

properties: {
  outbound: {
    httpRetryPolicy: {
        maxRetries: 5
        retryBackOff: {
          initialDelayInMilliseconds: 1000
          maxIntervalInMilliseconds: 10000
        }
    }
  }
  inbound: {
    httpRetryPolicy: {
        maxRetries: 5
        retryBackOff: {
          initialDelayInMilliseconds: 1000
          maxIntervalInMilliseconds: 10000
        }
    }
  } 
}
Metaadatok Kötelező Leírás Példa
maxRetries Igen Sikertelen http-kérés esetén végrehajtandó újrapróbálkozések maximális száma. 5
retryBackOff Igen Figyelje a kéréseket, és állítsa le az érintett szolgáltatás felé irányuló összes forgalmat, amikor időtúllépési és újrapróbálkozási feltételek teljesülnek. N.A.
retryBackOff.initialDelayInMilliseconds Igen Késleltetés az első hiba és az első újrapróbálkozás között. 1000
retryBackOff.maxIntervalInMilliseconds Igen Az újrapróbálkozások közötti maximális késleltetés. 10000

Megszakítók

Definiáljon egy circuitBreakerPolicy olyan kérések figyelésére, amelyek emelt hibaarányt okoznak, és bizonyos feltételek teljesülése esetén leállítja az érintett szolgáltatás felé irányuló összes forgalmat.

properties: {  
  outbound: {  
    circuitBreakerPolicy: {  
        intervalInSeconds: 15
        consecutiveErrors: 10
        timeoutInSeconds: 5     
    }  
  },  
  inbound: {  
    circuitBreakerPolicy: {  
        intervalInSeconds: 15
        consecutiveErrors: 10
        timeoutInSeconds: 5     
    }  
  }  
}
Metaadatok Kötelező Leírás Példa
intervalInSeconds Nem Az áramkör-megszakító által a belső számok törlésére használt ciklikus időtartam (másodpercben). Ha nincs megadva, az intervallum a megadott timeoutInSecondsértékre van állítva. 15
consecutiveErrors Igen A kapcsolatcsoport-utazások és -megnyitások előtt engedélyezett kéréshibák száma. 10
timeoutInSeconds Igen A nyitott állapot időszaka (másodpercben), közvetlenül a hiba után. 5

Megszakító folyamat

consecutiveErrors A kapcsolatcsoport-utazás feltételének megadása (a kapcsolatcsoport-utazás feltételekéntconsecutiveFailures > $(consecutiveErrors)-1) megadja az áramköri utak előtt és félúton megnyíló hibák számát.

A kapcsolatcsoport fél nyitva várja az timeoutInSeconds időtartamot, amely alatt a consecutiveErrors kérelmek számának egymást követő sikeresnek kell lennie.

  • Ha a kérések sikeresek, a kapcsolatcsoport bezárul.
  • Ha a kérések sikertelenek, a kapcsolatcsoport félig megnyitott állapotban marad.

Ha nem állított be értéket intervalInSeconds , a kapcsolatcsoport a beállított timeoutInSecondsidő után bezárt állapotba kerül, függetlenül az egymást követő kérések sikerességétől vagy sikertelenségétől. Ha be 0van állítvaintervalInSeconds, a kapcsolatcsoport soha nem alaphelyzetbe áll automatikusan, csak félig nyitott állapotból zárt állapotba lép, ha sikeresen végrehajtja consecutiveErrors a kéréseket egy sorban.

Ha beállított egy intervalInSeconds értéket, amely meghatározza a kapcsolatcsoport lezárt állapotba állításának időtartamát attól függetlenül, hogy a félig megnyitott állapotban küldött kérelmek sikeresek-e vagy sem.

Rugalmassági naplók

A tárolóalkalmazás Figyelés szakaszában válassza a Naplók lehetőséget.

Screenshot demonstrating where to find the logs for your container app using Dapr component resiliency.

A Naplók panelen írjon és futtasson egy lekérdezést a rugalmasság kereséséhez a tárolóalkalmazás rendszernaplóiban. Például annak megállapításához, hogy egy rugalmassági szabályzat be lett-e töltve:

ContainerAppConsoleLogs_CL
| where ContainerName_s == "daprd"
| where Log_s contains "Loading Resiliency configuration:"
| project time_t, Category, ContainerAppName_s, Log_s
| order by time_t desc

Kattintson a Futtatás gombra a lekérdezés futtatásához, és tekintse meg az eredményt a szabályzat betöltését jelző naplóüzenettel.

Screenshot showing resiliency query results based on provided query example for checking if resiliency policy has loaded.

A tényleges rugalmassági szabályzatot úgy is megtalálhatja, hogy engedélyezi az összetevő hibakeresését, és a következő példához hasonló lekérdezést használ:

ContainerAppConsoleLogs_CL
| where ContainerName_s == "daprd"
| where Log_s contains "Resiliency configuration ("
| project time_t, Category, ContainerAppName_s, Log_s
| order by time_t desc

A Futtatás gombra kattintva futtassa a lekérdezést, és tekintse meg az eredményként kapott naplóüzenetet a szabályzatkonfigurációval.

Screenshot showing resiliency query results based on provided query example for finding the actual resiliency policy.

Megtudhatja, hogyan működik a szolgáltatás és a szolgáltatás közötti kommunikáció rugalmassága a szolgáltatásfelderítésben beépített Azure Container Apps használatával