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


Durable Functions-társzolgáltatók

A Durable Functions olyan Azure Functions-eseményindítók és kötések készlete, amelyek belsőleg a Durable Task Framework (DTFx) segítségével működnek. A DTFx számos háttértárszolgáltatót támogat, beleértve a Durable Functions által használt Azure Storage-szolgáltatót is. A Durable Functions 2.5.0-s verziótól kezdve a felhasználók konfigurálhatják a függvényalkalmazásaikat az Azure Storage-szolgáltatótól eltérő DTFx-tárolószolgáltatók használatára.

Feljegyzés

Számos függvényalkalmazás esetében a Durable Functions alapértelmezett Azure Storage-szolgáltatója valószínűleg elegendő, és a legegyszerűbben használható, mivel nincs szükség további konfigurációra. Vannak azonban olyan költségek, skálázhatóság és adatkezelési kompromisszumok, amelyek előnyben részesíthetik egy alternatív tárolószolgáltató használatát.

Két alternatív tárolószolgáltatót fejlesztettek ki a Durable Functions és a Durable Task Framework használatára, nevezetesen a Netherite tárolószolgáltatót és a Microsoft SQL Server (MSSQL) tárolószolgáltatót. Ez a cikk mindhárom támogatott szolgáltatót ismerteti, összehasonlítja őket egymással, és alapvető információkat nyújt a használatuk megkezdéséről.

Feljegyzés

Jelenleg nem lehet adatokat migrálni egyik tárolószolgáltatóból a másikba. Ha új társzolgáltatót szeretne használni, hozzon létre egy új, az új társzolgáltatóval konfigurált alkalmazást.

Azure Storage

Az Azure Storage a Durable Functions alapértelmezett tárolószolgáltatója. Üzenetsorokat, táblákat és blobokat használ a vezénylés és az entitásállapot megőrzéséhez. Blobokat és blobbérleteket is használ a partíciók kezeléséhez. A Durable Functions futtatókörnyezeti állapotának tárolására használt tárfiók sok esetben megegyezik az Azure Functions (AzureWebJobsStorage) által használt alapértelmezett tárfiókkal. A Durable Functionst azonban külön tárfiókkal is konfigurálhatja. Az Azure Storage-szolgáltató beépített a Durable Functions bővítménybe, és nem rendelkezik más függőségekkel.

Az Azure Storage-szolgáltató fő előnyei a következők:

  • Nincs szükség beállításra – a függvényalkalmazás beállítási felülete által létrehozott tárfiókot használhatja.
  • Legalacsonyabb költségű kiszolgáló nélküli számlázási modell – Az Azure Storage használatalapú díjszabási modellje teljes mértékben a használaton alapul (további információ).
  • Legjobb eszközkezelési támogatás – Az Azure Storage platformfüggetlen helyi emulációt kínál, és integrálható a Visual Studióval, a Visual Studio Code-tal és az Azure Functions Core Tools-tal.
  • A legfejlettebb – Az Azure Storage volt a Durable Functions eredeti és leginkább tesztelt tárolási háttérrendszere.
  • A társzolgáltatóhoz való csatlakozáshoz az identitás titkos kulcsok helyett való használatának támogatása.

Az Azure Storage-társzolgáltató DTFx-összetevőinek forráskódja az Azure/durabletask GitHub adattárban található.

Feljegyzés

Az Azure Storage-szolgáltató használatakor általános célú Azure Storage-fiókokra van szükség. Az összes többi tárfióktípus nem támogatott. Nagyon javasoljuk az örökölt v1-alapú általános célú tárfiókok használatát, mert az újabb v2-tárfiókok jelentősen drágábbak lehetnek a Durable Functions számítási feladataihoz. Az Azure Storage-fióktípusokról további információt a Tárfiókok áttekintési dokumentációjában talál.

Netherite

A Netherite Storage háttérrendszerét a Microsoft Research tervezte és fejlesztette ki. Az Azure Event Hubsot és a FASTER adatbázis-technológiát használja az Azure Page Blobok tetején. A Netherite kialakítása lehetővé teszi a vezénylések és entitások jelentősen nagyobb átviteli sebességű feldolgozását más szolgáltatókhoz képest. Egyes teljesítményteszt-forgatókönyvekben az átviteli sebesség az alapértelmezett Azure Storage-szolgáltatóhoz képest több mint nagyságrenddel növekedett.

A Netherite storage-szolgáltató fő előnyei a következők:

  • A többi tárolószolgáltatóhoz képest jelentősen magasabb átviteli sebesség alacsonyabb költség mellett.
  • Támogatja az ár-teljesítmény optimalizálást, így igény szerint felskálázhatja a teljesítményt.
  • Legfeljebb 32 adatpartíciót támogat az Event Hubs Basic és Standard termékváltozatokkal.
  • Költséghatékonyabb, mint a többi szolgáltató a nagy átviteli sebességű számítási feladatokhoz.

A Netherite-tárhelyszolgáltató technikai részleteiről, beleértve a használatbavételt is, a Netherite dokumentációjában talál további információt. A Netherite storage-szolgáltató forráskódja a microsoft/durabletask-netherite GitHub adattárban található. A Netherite storage-szolgáltató részletesebb kiértékelése a következő kutatási tanulmányban is elérhető: Kiszolgáló nélküli munkafolyamatok a Durable Functions és a Netherite használatával.

Feljegyzés

A Netherite név a Minecraft világából származik.

Microsoft SQL Server (MSSQL)

A Microsoft SQL Server (MSSQL) tárolószolgáltatója minden állapotot megőriz egy Microsoft SQL Server-adatbázisban. Kompatibilis az SQL Server helyszíni és felhőalapú üzemelő példányaival, beleértve az Azure SQL Database-t is.

Az MSSQL storage-szolgáltató fő előnyei a következők:

  • Támogatja a leválasztott környezeteket – SQL Server-telepítés esetén nincs szükség Azure-kapcsolatra.
  • Több környezetben és felhőben, például az Azure-ban üzemeltetett és a helyszínen is hordozható.
  • Erős adatkonzisztencia, amely lehetővé teszi a biztonsági mentést/visszaállítást és a feladatátvételt adatvesztés nélkül.
  • Natív támogatás egyéni adattitkosításhoz (az SQL Server egyik funkciója).
  • Beépített tárolt eljárásokon keresztül integrálható a meglévő adatbázis-alkalmazásokkal.

Az MSSQL-tárolószolgáltató technikai részleteiről, többek között a használatbavételről a Microsoft SQL Provider dokumentációjában tudhat meg többet. Az MSSQL-tárolószolgáltató forráskódja a microsoft/durabletask-mssql GitHub adattárban található.

Alternatív tárolószolgáltatók konfigurálása

A másodlagos tárolószolgáltatók konfigurálása általában kétlépéses folyamat:

  1. Adja hozzá a megfelelő NuGet-csomagot a függvényalkalmazáshoz (ez a követelmény a bővítménycsomagokat használó alkalmazások esetében ideiglenes).
  2. Frissítse a host.json fájlt, és adja meg, hogy melyik társzolgáltatót szeretné használni.

Ha nincs explicit módon konfigurálva a társzolgáltató host.json, az Azure Storage-szolgáltató alapértelmezés szerint engedélyezve lesz.

Az Azure Storage-szolgáltató konfigurálása

Az Azure Storage-szolgáltató az alapértelmezett tárolószolgáltató, és nem igényel explicit konfigurációt, NuGet-csomaghivatkozásokat vagy bővítménycsomag-hivatkozásokat. A host.json konfigurációs lehetőségek teljes készletét itt találja az extensions/durableTask/storageProvider elérési út alatt.

Kapcsolatok

A connectionName host.json tulajdonsága a környezeti konfigurációra mutató hivatkozás, amely meghatározza, hogy az alkalmazásnak hogyan kell csatlakoznia az Azure Storage-hoz. A következőt határozhatja meg:

  • Egy kapcsolati sztring tartalmazó alkalmazásbeállítás neve. A kapcsolati sztring beszerzéséhez kövesse a tárfiók hozzáférési kulcsainak kezelése című témakörben ismertetett lépéseket.
  • Egy megosztott előtag neve több alkalmazásbeállításhoz, valamint identitásalapú kapcsolat definiálása.

Ha a konfigurált érték egy adott beállítás pontos egyezése, a többi beállítás előtagja pedig egyezik, akkor a rendszer a pontos egyezést használja. Ha nincs megadva érték a host.json, az alapértelmezett érték az "AzureWebJobsStorage".

Identitásalapú kapcsolatok

Ha a bővítmény és az Azure Storage-szolgáltató 2.7.0-s vagy újabb verzióját használja, ahelyett, hogy titkos kapcsolati sztring használ, az alkalmazás Microsoft Entra-identitást használhat. Ehhez meg kell határoznia a beállításokat egy közös előtag alatt, amely leképezi a connectionName tulajdonságot az eseményindító és a kötés konfigurációjában.

A Durable Functions identitásalapú kapcsolatának használatához konfigurálja a következő alkalmazásbeállításokat:

Tulajdonság Környezeti változó sablonja Leírás Példaérték
Blob szolgáltatás URI-ja <CONNECTION_NAME_PREFIX>__blobServiceUri A tárfiók blobszolgáltatásának adatsík URI-ja a HTTPS-séma használatával. <https:// storage_account_name.blob.core.windows.net>
Üzenetsor-szolgáltatás URI-ja <CONNECTION_NAME_PREFIX>__queueServiceUri A tárfiók üzenetsor-szolgáltatásának adatsík URI-ja a HTTPS-séma használatával. <https:// storage_account_name.queue.core.windows.net>
Table service URI <CONNECTION_NAME_PREFIX>__tableServiceUri A tárfiók táblaszolgáltatásának adatsík URI-ja a HTTPS-séma használatával. <https:// storage_account_name.table.core.windows.net>

További tulajdonságok is beállíthatók a kapcsolat testreszabásához. Tekintse meg az identitásalapú kapcsolatok gyakori tulajdonságait.

Az Azure Functions szolgáltatásban üzemeltetett identitásalapú kapcsolatok felügyelt identitást használnak. A rendszer alapértelmezés szerint a rendszer által hozzárendelt identitást használja, bár a felhasználó által hozzárendelt identitás megadható a credential tulajdonságokkal együtt clientID . Vegye figyelembe, hogy a felhasználó által hozzárendelt identitás erőforrás-azonosítóval való konfigurálása nem támogatott. Ha más környezetekben, például helyi fejlesztésben fut, a rendszer ehelyett a fejlesztői identitást használja, bár ez testre szabható. Lásd: Helyi fejlesztés identitásalapú kapcsolatokkal.

Engedély megadása az identitáshoz

Bármilyen identitást is használ, rendelkeznie kell a kívánt műveletek végrehajtásához szükséges engedélyekkel. A legtöbb Azure-szolgáltatás esetében ez azt jelenti, hogy egy szerepkört kell hozzárendelnie az Azure RBAC-ben beépített vagy egyéni szerepkörökkel, amelyek biztosítják ezeket az engedélyeket.

Fontos

A célszolgáltatás bizonyos engedélyeket közzétehet, amelyek nem minden környezethez szükségesek. Ahol lehetséges, tartsa be a minimális jogosultság elvét, és csak az identitáshoz szükséges jogosultságokat adja meg. Ha például az alkalmazásnak csak adatforrásból kell olvasnia, használjon olyan szerepkört, amely csak olvasási engedéllyel rendelkezik. Nem lenne helyénvaló olyan szerepkört hozzárendelni, amely lehetővé teszi az írást is a szolgáltatáshoz, mivel ez túlzott engedély lenne egy olvasási művelethez. Hasonlóképpen meg szeretné győződni arról, hogy a szerepkör-hozzárendelés csak az elolvasandó erőforrásokra terjed ki.

Létre kell hoznia egy szerepkör-hozzárendelést, amely futásidőben hozzáférést biztosít az Azure Storage-hoz. A tulajdonoshoz hasonló felügyeleti szerepkörök nem elegendőek. A Durable Functions bővítmény normál működésben való használatakor a következő beépített szerepkörök használata ajánlott:

Előfordulhat, hogy az alkalmazás további engedélyeket igényel az Ön által írt kód alapján. Ha az alapértelmezett viselkedést használja, vagy kifejezetten az "AzureWebJobsStorage" beállítást connectionName használja, további engedélyekkel kapcsolatos szempontokért tekintse meg a Csatlakozás a gazdagép tárolójához identitással című témakört.

A Netherite storage-szolgáltató konfigurálása

A Netherite storage-szolgáltató engedélyezéséhez konfigurációmódosításra van szükség a host.json. A C#-felhasználók számára további telepítési lépésre is szükség van.

host.json konfiguráció

Az alábbi host.json példa a Netherite storage-szolgáltató engedélyezéséhez szükséges minimális konfigurációt mutatja be.

{
  "version": "2.0",
  "extensions": {
    "durableTask": {
      "storageProvider": {
        "type": "Netherite",
        "storageConnectionName": "AzureWebJobsStorage",
        "eventHubsConnectionName": "EventHubsConnection"
      }
    }
  }
}

További részletes beállítási utasításokért tekintse meg a Netherite első lépéseket ismertető dokumentációját.

A Netherite bővítmény telepítése (csak.NET esetén)

Feljegyzés

Ha az alkalmazás bővítménycsomagokat használ, ezt a szakaszt figyelmen kívül kell hagynia, mivel a bővítménycsomagok nem igénylik a manuális bővítménykezelést.

Telepítenie kell a Netherite bővítmény legújabb verzióját a NuGetre. Ez általában azt jelenti, hogy hivatkozik rá a .csproj fájlban, és felépíti a projektet.

A telepíteni kívánt bővítménycsomag a használt .NET-feldolgozótól függ:

Az MSSQL-tárolószolgáltató konfigurálása

Az MSSQL-tárolószolgáltató engedélyezéséhez konfigurálási módosításra van szükség a host.json. A C#-felhasználók számára további telepítési lépésre is szükség van.

host.json konfiguráció

Az alábbi példa az MSSQL-tárolószolgáltató engedélyezéséhez szükséges minimális konfigurációt mutatja be.

{
  "version": "2.0",
  "extensions": {
    "durableTask": {
      "storageProvider": {
        "type": "mssql",
        "connectionStringName": "SQLDB_Connection"
      }
    }
  }
}

Részletesebb beállítási utasításokért tekintse meg az MSSQL-szolgáltató első lépéseket ismertető dokumentációját.

A Durable Task MSSQL bővítmény telepítése (csak.NET esetén)

Feljegyzés

Ha az alkalmazás bővítménycsomagokat használ, ezt a szakaszt figyelmen kívül kell hagynia, mivel a bővítménycsomagok nem igénylik a manuális bővítménykezelést.

Telepítenie kell az MSSQL-tárolószolgáltató bővítményének legújabb verzióját a NuGetre. Ez általában azt jelenti, hogy hivatkozik rá a .csproj fájlban, és felépíti a projektet.

A telepíteni kívánt bővítménycsomag a használt .NET-feldolgozótól függ:

Tárolószolgáltatók összehasonlítása

A különböző támogatott tárolószolgáltatók között számos jelentős kompromisszum áll fenn. Az alábbi táblázat segít megérteni ezeket a kompromisszumokat, és eldönteni, hogy melyik tárolószolgáltató a legjobb az Igényeinek.

Társzolgáltató Azure Storage Netherite MSSQL
Hivatalos támogatási állapot ✅ Általánosan elérhető (GA) ✅ Általánosan elérhető (GA) ✅ Általánosan elérhető (GA)
Külső függőségek Azure Storage-fiók (általános célú v1) Azure-eseményközpontok
Azure Storage-fiók (általános célú)
SQL Server 2019 vagy Azure SQL Database
Helyi fejlesztési és emulációs lehetőségek Azurite v3.12+ (platformfüggetlen) Támogatja a feladatközpontok memórián belüli emulációját (további információ) SQL Server Developer Edition (windowsos, linuxos és Docker-tárolókat támogat)
Feladatközpont konfigurálása Explicit Explicit Implicit alapértelmezés szerint (további információ)
Maximális átviteli sebesség Mérsékelt Nagyon magas Mérsékelt
Maximális vezénylés/entitás-felskálázás (csomópontok) 16 32 n/a
Maximális tevékenységskálázás (csomópontok) n/a 32 n/a
KEDA 2.0 skálázási támogatás
(további információ)
❌ Nem támogatott ❌ Nem támogatott ✅Az MSSQL-skálázó használata támogatott (további információ)
Bővítménycsomagok támogatása (non-.NET alkalmazásokhoz ajánlott) ✅ Teljes mértékben támogatott ✅ Teljes mértékben támogatott ✅ Teljes mértékben támogatott
Az ár-teljesítmény konfigurálható? ❌ Nem ✅ Igen (Event Hubs termékváltozatok és termékváltozatok) ✅ Igen (SQL vCPU-k)
Leválasztott környezeti támogatás ❌ Azure-kapcsolat szükséges ❌ Azure-kapcsolat szükséges ✅ Teljes mértékben támogatott
Identitásalapú kapcsolatok ✅ Teljes mértékben támogatott ❌ Nem támogatott ⚠️ Futásidejű skálázást igényel

Következő lépések