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:
- Mikroszolgáltatás-kommunikáció pub/sub használatával C-ben #
- Mikroszolgáltatás-kommunikáció pub/sub használatával JavaScriptben
- Mikroszolgáltatás-kommunikáció pub/sub használatával a Pythonban
A fenti mintákban az alkalmazás a következő elemeket használja:
- 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. - A Dapr Azure Service Bus pub/alösszetevője.
- Az
order-processor
előfizetői tárolóalkalmazások felveszik aorders
témakörön keresztül fogadott üzeneteket, és azok érkezésekor feldolgozzák őket. - 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örbeorders
érkeznek.
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 1
van á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-servicebus
erő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 30
van á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.