Tevékenységközpontok

A feladatközpont az alkalmazás aktuális állapotát jeleníti meg a tárolóban, beleértve az összes függőben lévő munkát is. Amíg egy alkalmazás fut, a feladatközpont folyamatosan tárolja a vezénylés, a tevékenység és az entitásfüggvények előrehaladását. Ez a módszer biztosítja, hogy az alkalmazás ott folytassa a feldolgozást, ahol abbahagyta, ha ideiglenes leállás vagy megszakítás után újraindul. A feladatközpontok lehetővé teszik az alkalmazások számára a számítási feldolgozók dinamikus skálázását is.

Ez a cikk bemutatja, hogy mit tárol egy feladatközpont, hogyan konfigurálhatja és nevezheti el a feladatközpontokat, hogyan hozhatja létre és kezelheti őket különböző háttérrendszerekkel, és hogyan dolgozzák fel a feladatközpontok belső működését.

Képernyőkép a függvényalkalmazást és a feladatközpont architektúráját bemutató diagramról a Durable Taskben.

Elméletileg a tevékenységközpont a következő információkat tárolja:

  • Az összes vezényléspéldány és entitáspéldány állapotai.
  • A feldolgozandó üzenetek, beleértve a következőket:
    • Minden olyan tevékenységüzenet , amely a futtatásra váró tevékenységeket jelöli.
    • Minden példányüzenet, amely a példányokra való kézbesítésre vár.

A tevékenységüzenetek állapot nélküliek, és bárhol feldolgozhatók. A példányüzeneteket egy adott állapotalapú példányra (vezénylésre vagy entitásra) kell kézbesíteni, amelyet a példányazonosító azonosít.

Belsőleg minden tárolószolgáltató más szervezetet használhat a példányállapotok és üzenetek megjelenítéséhez. A Azure Storage szolgáltató például Azure Storage üzenetsorokban tárolja az üzeneteket, de az MSSQL-szolgáltató relációs táblákban tárolja őket. Ezek a különbségek nem számítanak az alkalmazástervezés szempontjából, de néhányuk befolyásolhatja a teljesítmény jellemzőit. További információ: Reprezentáció a tárolóban.

A Durable Task SDK-k a Durable Task Schedulert használják a tevékenységközpontok háttérrendszereként. A Durable Task Scheduler egy teljes mértékben felügyelt szolgáltatás, amely belsőleg kezeli a tárolást.

Tevékenységközpontok nevei

A feladatközpontokat az alábbi szabályoknak megfelelő név azonosítja:

  • Csak alfanumerikus karaktereket tartalmaz
  • Betűvel kezdődik
  • Legalább 3 karakter hosszúságú, legfeljebb 45 karakter hosszúságú

Deklarálja a feladatközpont nevét a host.json fájlban, ahogyan az a következő példában látható:

host.json (Functions 2.0)

{
  "version": "2.0",
  "extensions": {
    "durableTask": {
      "hubName": "MyTaskHub"
    }
  }
}

host.json (Functions 1.x)

{
  "durableTask": {
    "hubName": "MyTaskHub"
  }
}

A feladatközpontokat alkalmazásbeállítások használatával is beállíthatja, ahogyan az a következő host.json példafájlban is látható:

host.json (Functions 2.0)

{
  "version": "2.0",
  "extensions": {
    "durableTask": {
      "hubName": "%MyTaskHub%"
    }
  }
}

host.json (Functions 1.x)

{
  "durableTask": {
    "hubName": "%MyTaskHub%"
  }
}

A feladatközpont neve az alkalmazásbeállítás értékére MyTaskHub van állítva. Az alábbi local.settings.json fájl bemutatja, hogyan definiálható a MyTaskHub beállítás samplehubname következőképpen:

{
  "IsEncrypted": false,
  "Values": {
    "MyTaskHub" : "samplehubname"
  }
}

Megjegyzés:

Üzembehelyezési pontok használata esetén ajánlott az alkalmazásbeállítások használatával beállítani a feladatközpont nevét. Ha meg szeretne győződni arról, hogy egy adott pont mindig egy adott feladatközpontot használ, használja a "slot-sticky" alkalmazásbeállításokat.

A host.jsonmellett a feladatközpontok nevei a vezénylési ügyfélkötés metaadataiban is beállíthatók. Ez a beállítás akkor hasznos, amikor egy különálló függvényalkalmazásban található folyamatirányításokhoz vagy entitásokhoz kell hozzáférnie. Az alábbi kód bemutatja, hogyan írhat olyan függvényt, amely a vezénylési ügyfélkötést használja egy alkalmazásbeállításként beállított feladatközpont használatához:

[FunctionName("HttpStart")]
public static async Task<HttpResponseMessage> Run(
    [HttpTrigger(AuthorizationLevel.Function, methods: "post", Route = "orchestrators/{functionName}")] HttpRequestMessage req,
    [DurableClient(TaskHub = "%MyTaskHub%")] IDurableOrchestrationClient starter,
    string functionName,
    ILogger log)
{
    // Function input comes from the request content.
    object eventData = await req.Content.ReadAsAsync<object>();
    string instanceId = await starter.StartNewAsync(functionName, eventData);

    log.LogInformation($"Started orchestration with ID = '{instanceId}'.");

    return starter.CreateCheckStatusResponse(req, instanceId);
}

Megjegyzés:

Az előző példa a Durable Functions 2.x-hez készült. Az 1.x Durable Functions esetében a DurableOrchestrationContext használatát IDurableOrchestrationContext helyett kell alkalmazni. A verziók közötti különbségekről további információt a Durable Functions verzióiról szóló cikkben talál.

Megjegyzés:

A feladatközpontok nevének beállítása az ügyfelek kötési metaadataiban csak akkor szükséges, ha egy függvényalkalmazás segítségével fér hozzá egy másik függvényalkalmazás vezérlési folyamataihoz és entitásaihoz. Ha az ügyfélfüggvények ugyanabban a függvényalkalmazásban vannak definiálva, mint a vezénylések és entitások, kerülje a feladatközpontok nevének megadását a kötési metaadatokban. Alapértelmezés szerint minden ügyfélkötés a host.jsonbeállításaiból szerzi be a feladatközpont metaadatait.

Ha nincs megadva, a rendszer egy alapértelmezett tevékenységközpont-nevet használ az alábbi táblázatban látható módon:

Tartós bővítmény verziója Alapértelmezett tevékenységközpont neve
2.x A Azure üzembe helyezésekor a feladatközpont neve a funkciós alkalmazás nevéből származik. Ha Azure kívül fut, az alapértelmezett feladatközpont neve TestHubName.
1.x Az összes környezet alapértelmezett tevékenységközpontjának neve a következő DurableFunctionsHub: .

A bővítményverziók közötti különbségekről további információt a Durable Functions verziók cikkben talál.

Több alkalmazás használata külön feladatközpontokkal

Az ütközések elkerülése érdekében minden háttérrendszert használó alkalmazásnak csatlakoznia kell a saját feladatközponthoz. Ha több alkalmazás ugyanazt a feladatközpontot használja, az üzenetekért versenyeznek, ami meghatározatlan viselkedést eredményezhet – beleértve az orchesztrációkat is, amelyek váratlanul elakadhatnak. Egyetlen háttérrendszer több tevékenységközpontot is tartalmazhat; konfigurálja az egyes alkalmazásokat a sajátjával.

Ez a követelmény az összes tárolási háttérrendszerre vonatkozik. BYO-tárolószolgáltatók (Azure Storage, Netherite, MSSQL) esetén konfigurálja az egyes függvényalkalmazásokat külön feladatközpont-névvel. Ez a követelmény az előkészítési pontokra is vonatkozik: minden egyes előkészítési pontot egyedi feladatközpont-névvel kell konfigurálni.

Fontos

Alapértelmezés szerint az alkalmazás nevét használja a feladatközpont neveként, ami biztosítja, hogy a véletlen megosztás ne történjen meg. Ha explicit módon konfigurálja a feladatközpontok nevét host.json, győződjön meg arról, hogy a nevek egyediek. Az egyetlen kivétel, ha ugyanazon alkalmazás példányaittöbb régióban helyezi üzembe vészhelyreállítás céljából. Ebben az esetben ugyanazt a feladatközpontot használja a másolatokhoz.

Az alábbi ábra egy feladatközpontot mutat be függvényalkalmazásonként megosztott és dedikált Azure Storage-fiókokban.

Képernyőkép egy feladatközpontról függvényalkalmazásonként megosztott és dedikált Azure Storage-fiókokban.

Tartós Feladatütemező feladatközpont-kezelés

Ez a szakasz bemutatja, hogyan hozhat létre és kezelhet feladatközpontokat a Durable Task Scheduler háttérrendszer használatakor. Az ütemező és a tevékenységközpont erőforrásait explicit módon hozza létre, mielőtt az alkalmazás felhasználja őket.

Ütemező és feladatközpont létrehozása

Ütemező és feladatközpont létrehozása a Azure portál, Azure CLI, Azure Resource Manager (ARM) vagy Bicep használatával.

  1. Az Azure Portalon keressen tartós feladatütemezőt , és válassza ki az eredmények közül.

  2. Válassza a Létrehozás lehetőséget az ütemező létrehozási paneljének megnyitásához.

  3. Töltse ki az Alapszintű beállítások lapon található mezőket, beleértve az erőforráscsoportot, az ütemező nevét, a régiót és az termékváltozatot. Válassza az Áttekintés + létrehozás lehetőséget.

  4. A validálás után válassza a Create lehetőséget. Az üzembe helyezés akár 15 percet is igénybe vehet.

  5. Az ütemező létrehozása után lépjen az ütemező erőforrására. Az Áttekintés lapon hozzon létre egy új tevékenységközpontot.

Fontos

Az 0.0.0.0/0 IP-engedélyezési lista bármely IP-címről engedélyezi a hozzáférést. Éles környezetbe történő telepítés esetén korlátozza ezt csak a szükséges IP-tartományokra.

Az előző példák a dedikált termékváltozatot használják. A Durable Task Scheduler kínál egy fogyasztási SKU-t is. A Durable Task Scheduler-erőforrások kezelésével kapcsolatos további információkért lásd: Fejlesztés a Durable Task Schedulerrel.

Identitásalapú hitelesítés konfigurálása

A Durable Task Scheduler csak a felügyelt identitáshitelesítést támogatja. Nem támogatja a tárkulcsokkal rendelkező kapcsolati sztringeket. Rendelje hozzá a megfelelő szerepköralapú hozzáférés-vezérlési (RBAC) szerepkört egy felügyelt identitáshoz, és konfigurálja az alkalmazást az identitás használatára.

A következő szerepkörök érhetők el:

Szerep Leírás
Tartós tevékenységadatok közreműködője Teljes adathozzáférés. Az összes többi szerepkört magába foglaló szerepkör.
Tartós munkavégző Lépjen kapcsolatba az ütemezővel a vezénylések, tevékenységek és entitások feldolgozásához.
Tartós feladatadat-olvasó Írásvédett hozzáférés a vezénylési és entitásadatokhoz.

Megjegyzés:

A legtöbb alkalmazáshoz tartós feladatadatok közreműködői szerepköre szükséges.

Ha lehetséges, használjon felhasználó által hozzárendelt felügyelt identitásokat, mert nincsenek az alkalmazás életciklusához kötve, és az alkalmazás eltávolítása után újra felhasználhatja őket.

  1. Nyissa meg az ütemezőt vagy a feladatközpont erőforrását a Azure portálon.

  2. A bal oldali menüben válassza az Access control (IAM) lehetőséget.

  3. Válassza a Hozzáadás>Szerepkör-hozzárendelés hozzáadása lehetőséget.

  4. Keresse meg és válassza ki a Durable Task Data Közreműködőt. Válassza a Következőlehetőséget.

  5. A hozzáférés hozzárendeléséhez válassza a Felügyelt identitást. Válassza a(z) + Tagok kiválasztása opciót.

  6. Válassza ki a felhasználó által hozzárendelt felügyelt identitást, válassza ki az identitást, és válassza a Kiválasztás lehetőséget.

  7. Válassza a Véleményezés + hozzárendelés lehetőséget a befejezéshez.

  8. Nyissa meg a függvényalkalmazását, és válassza a Beállítások>Identitás lehetőséget. Válassza ki a Felhasználó által hozzárendelt lapot, és adja hozzá az identitást.

Az identitás hozzárendelése után adja hozzá a következő környezeti változókat az alkalmazáshoz:

Variable Érték
TASKHUB_NAME A feladatközpont neve.
DURABLE_TASK_SCHEDULER_CONNECTION_STRING Endpoint={scheduler endpoint};Authentication=ManagedIdentity;ClientID={client id}

Megjegyzés:

Ha rendszer által hozzárendelt felügyelt identitást használ, hagyja ki a ClientID szegmenst a kapcsolati karakterláncból: Endpoint={scheduler endpoint};Authentication=ManagedIdentity.

Az identitáskonfiguráció teljes részleteiért lásd: Felügyelt identitás konfigurálása a Durable Task Schedulerhez.

Tárolási szolgáltató feladatközpont kezelése

Ez a szakasz a tevékenységközpont létrehozását és törlését, valamint a tevékenységközpont tartalmának vizsgálatát ismerteti. A saját tárolószolgáltatókra (BYO) vonatkozik: Azure Storage, Netherite és MSSQL.

Tevékenységközpontok létrehozása és törlése

A függvényalkalmazás első indításakor automatikusan létrejön egy üres feladatközpont az összes szükséges erőforrással a tárolóban.

Ha a Azure Storage szolgáltatót használja, nincs szükség további konfigurációra. Ellenkező esetben kövesse a tárolószolgáltatók konfigurálására vonatkozó utasításokat , hogy a társzolgáltató megfelelően tudja beállítani és elérni a feladatközponthoz szükséges tárolási erőforrásokat.

Megjegyzés:

A feladatközpont nem törlődik automatikusan a függvényalkalmazás leállításakor vagy törlésekor. Az adatok eltávolításához törölje manuálisan a feladatközpontot, annak tartalmát vagy a tárfiókot.

Jótanács

Fejlesztési forgatókönyv esetén előfordulhat, hogy gyakran kell tiszta állapotból újraindulnia. Ehhez egyszerűen módosítsa a konfigurált feladatközpont nevét. Ez a módosítás egy új, üres feladatközpont létrehozását kényszeríti ki az alkalmazás újraindításakor. Ebben az esetben a régi adatok nem törlődnek.

Tevékenységközpont tartalmának vizsgálata

A feladatközpontok tartalmának vizsgálatára számos gyakori módszer létezik:

  • Egy függvényalkalmazáson belül az ügyfélobjektum metódusokat biztosít a példánytároló lekérdezéséhez. Ha többet szeretne megtudni arról, hogy milyen típusú lekérdezések támogatottak, olvassa el a Példánykezelés című cikket.
  • Hasonlóképpen a HTTP API REST-kéréseket is kínál a vezénylések és entitások állapotának lekérdezéséhez. További részletekért tekintse meg a HTTP API-referenciát .
  • A Durable Functions Monitor eszköz megvizsgálhatja a feladatközpontokat, és különféle vizuális megjelenítési lehetőségeket kínál.

Egyes tárolószolgáltatók esetében a feladatközpontot is megvizsgálhatja közvetlenül a mögöttes tárolóra való ugrással:

  • Ha a Azure Storage szolgáltatót használja, a példányállapotok a Instance táblában és a History table tárolódnak, amelyet az Azure Storage Explorer-hez hasonló eszközökkel vizsgálhat meg.
  • Ha az MSSQL-tárolószolgáltatót használja, sql-lekérdezésekkel és eszközökkel vizsgálja meg a feladatközpont tartalmát az adatbázisban.

Munkafeladatok

A tevékenységközpont tevékenységüzenetei és példányüzenetei azt a munkát jelölik, amelyet az alkalmazásnak fel kell dolgoznia. Amíg az alkalmazás fut, folyamatosan lekéri a munkaelemeket a feladatközpontból. Minden munkaelem egy vagy több üzenetet dolgoz fel. A munkaelemeknek két típusa van:

  • Tevékenységi munkaelemek: Tevékenységfüggvény futtatása a tevékenységüzenet feldolgozásához.
  • Vezénylő munkaelemek: Vezénylő vagy entitásfüggvény futtatása egy vagy több példányüzenet feldolgozásához.

A feldolgozók egyszerre több munkaelemet is feldolgozhatnak, a feldolgozónkénti egyidejűségi korlátoknak megfelelően.

Az egyidejűségi korlátozásokról további információt a Teljesítmény és skálázhatóság című témakörben talál.

Miután egy dolgozó befejez egy munkaelemet, visszajuttatja a hatásokat a feladatközpontba. Ezek a hatások a végrehajtott függvény típusától függően változnak:

  • A befejezett tevékenységfüggvény létrehoz egy példányüzenetet, amely az eredményt tartalmazza, a szülő vezénylőpéldánynak címezve.
  • A kész vezénylő függvény frissíti a vezénylés állapotát és előzményeit, és új üzeneteket hozhat létre.
  • Egy befejezett entitásfüggvény frissíti az entitás állapotát, és új példányüzeneteket is létrehozhat.

Vezénylés esetén minden munkaelem a vezénylés végrehajtásának egy epizódját jelöli. Az epizód a vezénylő egyik fordulója, amely a rendelkezésre álló eredményeket dolgozza fel, majd szünetelteti, amíg a következő eredmény meg nem érkezik. Egy epizód például akkor kezdődik, amikor a vezénylés megkezdődik, amikor egy tevékenység befejeződik, és eredményt ad vissza, vagy amikor egy külső esemény érkezik. Az epizód akkor ér véget, amikor a vezénylő befejezi vagy eléri azt a pontot, ahol várnia kell az új üzenetekre.

Végrehajtási példa

Tekintsünk egy fan-out-fan-in vezénylést, amely két tevékenységet indít párhuzamosan, és mindkettő befejezésére vár.

[FunctionName("Example")]
public static async Task Run([OrchestrationTrigger] IDurableOrchestrationContext context)
{
    Task t1 = context.CallActivityAsync<int>("MyActivity", 1);
    Task t2 = context.CallActivityAsync<int>("MyActivity", 2);
    await Task.WhenAll(t1, t2);
}
using Microsoft.DurableTask;

public class Example : TaskOrchestrator<object?, object?>
{
    public override async Task<object?> RunAsync(TaskOrchestrationContext context, object? input)
    {
        Task t1 = context.CallActivityAsync("MyActivity", 1);
        Task t2 = context.CallActivityAsync("MyActivity", 2);
        await Task.WhenAll(t1, t2);
        return null;
    }
}

Miután ezt a vezénylést egy ügyfél kezdeményezte, az alkalmazás munkaelemek sorozataként dolgozza fel. Minden befejezett munkaelem frissíti a tevékenységközpont állapotát a véglegesítéskor. A lépések a következők:

  1. Az ügyfél egy új orchestráció indítását kéri a "123" példányazonosítóval. Miután az ügyfél befejezte ezt a kérést, a feladatközpont tartalmaz egy helyőrzőt a vezénylési állapothoz és egy példányüzenetet:

    Képernyőkép a feladatközpont állapotáról az első lépésben a vezénylési indítási kérelem után.

    A ExecutionStarted címke egyike a számos history eseménytípusnak, amely azonosítja a vezénylés történetében részt vevő különböző típusú üzeneteket és eseményeket.

  2. A feldolgozó végrehajt egy vezénylő munkaelemet az ExecutionStarted üzenet feldolgozásához. Meghívja a vezénylési függvényt, amely megkezdi a vezénylési kód végrehajtását. Ez a kód két tevékenységet ütemez, majd leállítja a végrehajtást, amikor az eredményre vár.

    Képernyőkép a feladatközpont állapotáról a második lépésben az első vezénylési munkaelem véglegesítése után.

    A futtatókörnyezet állapota most van Running, és a történelem rögzíti az első epizódot: a vezénylő elindult, a végrehajtás elindult, két feladat volt ütemezve, és a vezénylő befejezte az epizódot.

  3. A feldolgozó végrehajt egy tevékenység-munkaelemet az TaskScheduled üzenetek feldolgozásához. Meghívja a tevékenységfüggvényt a "2"-es bemenettel. Amikor a tevékenységfüggvény befejeződik, egy TaskCompleted üzenetet hoz létre, amely tartalmazza az eredményt.

    Képernyőkép a tevékenységközpont állapotáról az első tevékenység munkaelem véglegesítése után a 3. lépésben.

  4. A feldolgozó végrehajt egy vezénylő munkaelemet az TaskCompleted üzenet feldolgozásához. Ha a vezénylés továbbra is gyorsítótárazva van a memóriában, egyszerűen folytathatja a végrehajtást. Ellenkező esetben a dolgozó először újra lejátssza az előzményeket a folyamatelemek aktuális állapotának helyreállításához. Ezután folytatja az orchesztrációt, a tevékenység eredményét adva. Miután megkapta ezt az eredményt, a vezénylés továbbra is a másik tevékenység eredményére vár, így ismét leállítja a végrehajtást.

    Képernyőkép a feladatközpont állapotáról a második vezénylő munkaelem véglegesítése után a negyedik lépésben.

    Az előzmények rögzítik a második epizódot: a feladat befejeződött, és a vezénylő ismét szüneteltetett.

  5. A feldolgozó végrehajt egy tevékenység-munkaelemet a fennmaradó TaskScheduled üzenet feldolgozásához. Meghívja a tevékenységfüggvényt az "1" bemenettel.

    Képernyőkép a tevékenységközpont állapotáról a második tevékenység munkaelem véglegesítése után az 5. lépésben.

  6. A feldolgozó egy másik vezénylő munkaelemet hajt végre az TaskCompleted üzenet feldolgozásához. A második eredmény beérkezése után az orkesztráció befejeződik.

    Képernyőkép a feladatközpont állapotáról a végleges vezénylési munkaelem véglegesítése után a 6. lépésben.

    A futtatókörnyezet állapota most Completed, és a naplózás rögzíti a harmadik és az utolsó epizódot: a második feladat befejeződött, és a végrehajtás elkészült.

Megjegyzés:

A megjelenített ütemezés nem az egyetlen lehetséges. Ha például a második tevékenység korábban fejeződik be, mindkét TaskCompleted üzenetet egyetlen munkaelem dolgozza fel, ami három helyett csak két epizódot eredményez.

Tárolási ábrázolás

Minden tárolószolgáltató egy másik belső szervezetet használ a tárolóban lévő feladatközpontok megjelenítéséhez. Ha nem szükséges, a szervezet megértése segíthet a hibaelhárításban, illetve a teljesítmény, a méretezhetőség vagy a költségcélok elérésében.

A Durable Task SDK-k háttérrendszerként a Durable Task Schedulert használják, amely belsőleg kezeli a tevékenységközpont állapotát.

Tartós Feladatütemező szolgáltató

A Durable Task Scheduler egy teljes mértékben felügyelt háttérszolgáltató, amely az összes tevékenységközpont állapotát belsőleg tárolja. A saját (BYO) tárolószolgáltatókkal ellentétben nem kell beállítania vagy kezelnie semmilyen mögöttes tárolási infrastruktúrát. Minden ütemezőerőforrás (Microsoft.DurableTask/schedulers) dedikált számítási és memóriaerőforrásokkal rendelkezik, és tartalmazhat egy vagy több tevékenységközpontot (Microsoft.DurableTask/schedulers/taskHubs).

Mivel a Durable Task Scheduler belsőleg kezeli a tárolót, nem vizsgálhatja közvetlenül a mögöttes adatokat. Ehelyett használja a Durable Task Scheduler irányítópultot az orchestration példányok figyelésére és lekérdezésére.

A BYO-társzolgáltatók beállításairól és összehasonlításuk módjáról további információt a Durable Functions társzolgáltatók talál.

Azure társzolgáltató

A Azure Storage szolgáltató a tárolóban lévő feladatközpontot jelöli az alábbi összetevők használatával:

  • Két Azure tábla tárolja a példányállapotokat.
  • Egy Azure üzenetsor tárolja a tevékenységüzeneteket.
  • Egy vagy több Azure sor tárolja az instance üzeneteket. Az úgynevezett vezérlősorok mindegyike egy partíciót jelöl, amely az összes példányüzenet egy részhalmazához van rendelve a példányazonosító kivonata alapján.
  • Néhány extra blobtároló, amelyeket blobok bérlésére vagy nagyméretű adatüzenetek kezelésére használnak.

Egy feladatközpont xyzPartitionCount = 4 neve például a következő üzenetsorokat és táblákat tartalmazza:

Képernyőkép az Azure Storage-szolgáltató feladatközpontjának négy vezérlősort tartalmazó szervezetéről.

A következő szakaszok részletesebben ismertetik ezeket az összetevőket és szerepköreiket.

A feladatközpontok Azure Storage szolgáltató általi megjelenítéséről a Azure Storage szolgáltató dokumentációjában talál további információt.

Netherite tárolási szolgáltató (Kivezetés útvonal)

A Netherite az összes tevékenységközpont-állapotot meghatározott számú partícióra particionálja. A tárolóban ezek az erőforrások tárolják az adatokat:

  • Egy Azure Storage blobtároló, amely az összes blobot tartalmazza, partíció szerint csoportosítva.
  • Egy Azure tábla, amely a partíciókkal kapcsolatos közzétett metrikákat tartalmazza.
  • Egy Azure Event Hubs névtér, amely üzeneteket küld a partíciók között.

Egy feladatközpont mytaskhubPartitionCount = 32 neve például a tárolóban a következőképpen jelenik meg:

Képernyőkép a Netherite storage szervezetéről a feladatközponthoz 32 partícióval.

Megjegyzés:

A feladatközpont összes állapota a x-storage blobtárolóban van tárolva. A DurableTaskPartitions tábla és az Event Hubs névtér redundáns adatokat tartalmaz: ha a tartalom elveszik, azok automatikusan helyreállíthatók. Ezért nem kell konfigurálnia a Azure Event Hubs névteret az üzenetek alapértelmezett lejárati időn túli megőrzéséhez.

A Netherite egy naplón és ellenőrzőpontokon alapuló esemény-beszerzési mechanizmust használ a partíció aktuális állapotának ábrázolására. A blokkblobok és a lapblobok is tárolják az adatokat. Ezt a formátumot nem olvashatja közvetlenül a tárolóból, ezért a függvényalkalmazásnak futnia kell a példánytároló lekérdezésekor.

A Netherite storage-szolgáltató tevékenységközpontjaival kapcsolatos további információkért tekintse meg a Netherite storage-szolgáltató tevékenységközpont-információit.

MSSQL-tárolószolgáltató

A tevékenységközpont összes adata egyetlen relációs adatbázisban van tárolva az alábbi táblák használatával:

  • A dt.Instances és dt.History a táblák tárolják a példányállapotokat.
  • A dt.NewEvents tábla tárolja a példányüzeneteket.
  • A dt.NewTasks tábla tárolja a tevékenységüzeneteket.

Képernyőkép az MSSQL storage provider task hub szervezetéről adatbázistáblákkal.

Annak érdekében, hogy több tevékenységközpont egymástól függetlenül létezhessen ugyanabban az adatbázisban, minden tábla tartalmaz egy oszlopot TaskHub az elsődleges kulcs részeként. A másik két szolgáltatótól eltérően az MSSQL-szolgáltató nem rendelkezik partíciókkal.

Az MSSQL-tárolószolgáltató feladatközpontjaival kapcsolatos további információkért tekintse meg a Microsoft SQL (MSSQL) tárolószolgáltatójának Task Hub-információit.