Megosztás a következőn keresztül:


Dapr-alkalmazások méretezése KEDA-skálázókkal

Az Azure Container Apps automatikusan nullára skálázza a HTTP-forgalmat. A nem HTTP-forgalom (például a Dapr pub/al- és kötések) skálázásához azonban KEDA-skálázókkal skálázhatja az alkalmazást és a Dapr oldalkocsiját a függőben lévő bejövő események és üzenetek száma alapján.

Ez az útmutató bemutatja, hogyan konfigurálhatja egy Dapr pub/alalkalmazás skálázási szabályait EGY KEDA üzenetskálázóval. A környezethez tekintse meg a megfelelő minta pubot/alalkalmazásokat:

A fenti mintákban az alkalmazás a következő elemeket használja:

  1. A checkout közzétevő egy olyan alkalmazás, amely határozatlan ideig fut, és soha nem skálázható nullára, annak ellenére, hogy soha nem kap bejövő HTTP-forgalmat.
  2. A Dapr Azure Service Bus pub/alösszetevője.
  3. Az order-processor előfizetői tárolóalkalmazások felveszik a orders témakörön keresztül fogadott üzeneteket, és azok érkezésekor feldolgozzák őket.
  4. Az Azure Service Bus skálázási szabálya, amely a szolgáltatás és a order-processor Dapr oldalkocsi felskálázásáért felelős, amikor az üzenetek a témakörbe orders érkeznek.

A rendelésfeldolgozó alkalmazás skálázási architektúráját bemutató ábra.

Nézzük meg, hogyan alkalmazhatja a skálázási szabályokat egy Dapr-alkalmazásban.

Publisher-tárolóalkalmazás

A checkout közzétevő egy fej nélküli szolgáltatás, amely határozatlan ideig fut, és soha nem skáláz le nullára.

A Container Apps futtatókörnyezet alapértelmezés szerint HTTP-alapú méretezési szabályt rendel az alkalmazásokhoz, amely a bejövő HTTP-kérések száma alapján skálázza a skálázást. Az alábbi példában minReplicas a következő értékre 1van állítva: Ez a konfiguráció biztosítja, hogy a tárolóalkalmazás ne kövesse az alapértelmezett skálázási viselkedést nullára bejövő HTTP-forgalom nélkül.

resource checkout 'Microsoft.App/containerApps@2022-03-01' = {
  name: 'ca-checkout-${resourceToken}'
  location: location
  identity: {
    type: 'SystemAssigned'
  }
  properties: {
    //...
    template: {
      //...
      // Scale the minReplicas to 1
      scale: {
        minReplicas: 1
        maxReplicas: 1
      }
    }
  }
}

Előfizetői tárolóalkalmazás

Az alábbi order-processor előfizetői alkalmazás egy egyéni méretezési szabályt tartalmaz, amely egy típusú azure-servicebuserőforrást figyel. Ezzel a szabálysal az alkalmazás (és oldalkocsija) igény szerint fel- és leskálázható a busz függőben lévő üzeneteinek száma alapján.

resource orders 'Microsoft.App/containerApps@2022-03-01' = {
  name: 'ca-orders-${resourceToken}'
  location: location
  tags: union(tags, {
      'azd-service-name': 'orders'
    })
  identity: {
    type: 'SystemAssigned'
  }
  properties: {
    managedEnvironmentId: containerAppsEnvironment.id
    configuration: {
      //...
      // Enable Dapr on the container app
      dapr: {
        enabled: true
        appId: 'orders'
        appProtocol: 'http'
        appPort: 5001
      }
      //...
    }
    template: {
      //...
      // Set the scale property on the order-processor resource
      scale: {
        minReplicas: 0
        maxReplicas: 10
        rules: [
          {
            name: 'topic-based-scaling'
            custom: {
              type: 'azure-servicebus'
              identity: 'system'
              metadata: {
                topicName: 'orders'
                subscriptionName: 'membership-orders'
                messageCount: '30'
              }
            }
          }
        ]
      }
    }
  }
}

A skálázó működése

Figyelje meg a messageCount méretező konfigurációjának tulajdonságát az előfizetői alkalmazásban:

{
  //...
  properties: {
    //...
    template: {
      //...
      scale: {
        //...
        rules: [
          //...
          custom: {
            //...
            metadata: {
              //...
              messageCount: '30'
            }
          }
        ]
      }
    }
  }
}

Ez a tulajdonság azt jelzi a skálázónak, hogy az alkalmazás egyes példányai hány üzenetet dolgozhatnak fel egyszerre. Ebben a példában az érték a következőre 30van állítva, ami azt jelzi, hogy az alkalmazásnak egy példányt kell létrehoznia a témakörben várakozó 30 üzenetből álló csoporthoz.

Ha például 150 üzenet várakozik, a KEDA öt példányra skálázza az alkalmazást. A maxReplicas tulajdonság értéke 10. Még ha sok üzenet is szerepel a témakörben, a skálázó soha nem hoz létre több példányt, mint 10 az alkalmazás példányai. Ez a beállítás biztosítja, hogy ne skálázson túl sokat, és ne halmozjon fel túl sok költséget.

Következő lépések

További információ a Dapr-összetevők Azure Container Apps-lel való használatáról.