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


Azure Functions-forgatókönyvek

Gyakran építünk olyan rendszereket, amelyek kritikus eseményekre reagálnak. Akár webes API-t hoz létre, válaszol az adatbázis változásaira, feldolgozhatja az eseménystreameket vagy az üzeneteket, az Azure Functions használatával implementálhatja őket.

A függvények sok esetben integrálhatók a felhőszolgáltatások tömbjével, így funkciógazdag implementációkat biztosítanak. Az alábbiakban az Azure Functions gyakori (de egyáltalán nem teljes) forgatókönyveit ismertetjük.

Válassza ki a fejlesztési nyelvet a cikk tetején.

Fájlfeltöltések feldolgozása

A függvények többféleképpen is feldolgozhatók a blobtárolókban lévő vagy onnan kimenő fájlokhoz. Ha többet szeretne megtudni a blobtárolók aktiválási lehetőségeiről, tekintse meg a blobok használatát az ajánlott eljárások dokumentációjában.

Egy kereskedelmi megoldásban például a partnerrendszer fájlként küldheti el a termékkatalógus adatait a Blob Storage-ba. A blob által aktivált függvények segítségével ellenőrizheti, átalakíthatja és feldolgozhatja a fájlokat a fő rendszerbe feltöltéskor.

Az Azure Functions használatával végzett fájlfeltöltési folyamat ábrája.

Az alábbi oktatóanyagok egy Blob-eseményindítót (Event Grid-alapú) használnak a blobtárolóban lévő fájlok feldolgozásához:

A blob eseményindítójának használata például egy esemény-előfizetéssel a blobtárolókon:

[FunctionName("ProcessCatalogData")]
public static async Task Run([BlobTrigger("catalog-uploads/{name}", Source = BlobTriggerSource.EventGrid, Connection = "<NAMED_STORAGE_CONNECTION>")]Stream myCatalogData, string name, ILogger log)
{
    log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myCatalogData.Length} Bytes");

    using (var reader = new StreamReader(myCatalogData))
    {
        var catalogEntry = await reader.ReadLineAsync();
        while(catalogEntry !=null)
        {
            // Process the catalog entry
            // ...

            catalogEntry = await reader.ReadLineAsync();
        }
    }
}

Valós idejű stream- és eseményfeldolgozás

Olyan sok telemetriát hoz létre és gyűjt a rendszer a felhőalkalmazásokból, az IoT-eszközökből és a hálózati eszközökről. Az Azure Functions a gyakori elérésű útvonalként közel valós időben feldolgozhatja ezeket az adatokat, majd az Azure Cosmos DB-ben tárolhatja azokat egy elemzési irányítópulton való használatra.

A függvények alacsony késésű eseményindítókat is használhatnak, például az Event Gridet, valamint valós idejű kimeneteket, például a SignalR-t az adatok közel valós idejű feldolgozásához.

Valós idejű streamfolyamat diagramja az Azure Functions használatával.

Például az eseményközpontok eseményközpontból való olvasására és a kimeneti kötés használatára az eseményközpontba való íráshoz az események törlése és átalakítása után:

[FunctionName("ProcessorFunction")]
public static async Task Run(
    [EventHubTrigger(
        "%Input_EH_Name%",
        Connection = "InputEventHubConnectionString",
        ConsumerGroup = "%Input_EH_ConsumerGroup%")] EventData[] inputMessages,
    [EventHub(
        "%Output_EH_Name%",
        Connection = "OutputEventHubConnectionString")] IAsyncCollector<SensorDataRecord> outputMessages,
    PartitionContext partitionContext,
    ILogger log)
{
    var debatcher = new Debatcher(log);
    var debatchedMessages = await debatcher.Debatch(inputMessages, partitionContext.PartitionId);

    var xformer = new Transformer(log);
    await xformer.Transform(debatchedMessages, partitionContext.PartitionId, outputMessages);
}

Gépi tanulás és mesterséges intelligencia

Az adatfeldolgozás mellett az Azure Functions a modellekre is használható. Az Azure OpenAI kötésbővítmény segítségével egyszerűen integrálhatja az Azure OpenAI szolgáltatás funkcióit és viselkedését a függvénykódvégrehajtásokba.

A függvények csatlakozhatnak az OpenAI-erőforrásokhoz a szöveg- és csevegés befejezésének engedélyezéséhez, az asszisztensek használatához, valamint a beágyazások és szemantikai keresések használatához.

A függvények tensorFlow-modellt vagy Azure AI-szolgáltatásokat is meghívhatnak a rendszerkép-adatfolyamok feldolgozásához és besorolásához.

Az Azure Functionst használó gépi tanulási és AI-folyamat ábrája.

Ütemezett tevékenységek futtatása

A Functions lehetővé teszi a kód futtatását egy ön által meghatározott cron-ütemezés alapján.

Megtudhatja, hogyan hozhat létre ütemezés szerint futó függvényt az Azure Portalon.

A pénzügyi szolgáltatások ügyféladatbázisa például 15 percenként elemezhető ismétlődő bejegyzések esetén, így elkerülhető, hogy több kommunikáció egyazon ügyfél felé érkezik.

Egy ütemezett tevékenység diagramja, amelyben egy függvény 15 percenként megtisztít egy adatbázist, és az üzleti logika alapján deduplikálja a bejegyzéseket.

[FunctionName("TimerTriggerCSharp")]
public static void Run([TimerTrigger("0 */15 * * * *")]TimerInfo myTimer, ILogger log)
{
    if (myTimer.IsPastDue)
    {
        log.LogInformation("Timer is running late!");
    }
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");

    // Perform the database deduplication
}

Méretezhető webes API létrehozása

A HTTP által aktivált függvény http-végpontot határoz meg. Ezek a végpontok olyan függvénykódot futtatnak, amely közvetlenül vagy kötésbővítmények használatával tud csatlakozni más szolgáltatásokhoz. A végpontokat webes API-ba írhatja.

A HTTP által aktivált függvényvégpontot webhook-integrációként is használhatja, például a GitHub webhookokat. Ily módon olyan függvényeket hozhat létre, amelyek adatokat dolgoznak fel a GitHub-eseményekből. További információ: GitHub-események monitorozása webhook használatával az Azure Functions használatával.

EGY HTTP-kérés Azure Functions használatával történő feldolgozásának diagramja.

Példákért tekintse meg a következőket:

[FunctionName("InsertName")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req,
    [CosmosDB(
        databaseName: "my-database",
        collectionName: "my-container",
        ConnectionStringSetting = "CosmosDbConnectionString")]IAsyncCollector<dynamic> documentsOut,
    ILogger log)
{
    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    string name = data?.name;

    if (name == null)
    {
        return new BadRequestObjectResult("Please pass a name in the request body json");
    }

    // Add a JSON document to the output container.
    await documentsOut.AddAsync(new
    {
        // create a random ID
        id = System.Guid.NewGuid().ToString(), 
        name = name
    });

    return new OkResult();
}

Kiszolgáló nélküli munkafolyamat létrehozása

A Függvények gyakran a kiszolgáló nélküli munkafolyamat-topológiák számítási összetevője, például a Logic Apps-munkafolyamatok. A Durable Functions bővítmény használatával hosszú ideig futó vezényléseket is létrehozhat. További információ: Durable Functions – áttekintés.

Az Azure Functionst használó konkrét kiszolgáló nélküli munkafolyamatok sorozatának kombinált diagramja.

Az adatbázis változásainak megválaszolása

Vannak olyan folyamatok, amelyekben előfordulhat, hogy a tárolt adatok módosításakor naplózni, naplózni vagy más műveletet kell végrehajtania. A függvények eseményindítói jó módot nyújtanak arra, hogy értesítést kapjon az ilyen művelet kezdeti változásairól.

Az adatbázis változásainak megválaszolására használt függvény diagramja.

Tekintse az alábbi példákat:

Megbízható üzenetrendszerek létrehozása

A Functions és az Azure üzenetkezelési szolgáltatások segítségével speciális eseményvezérelt üzenetkezelési megoldásokat hozhat létre.

Például az Azure Storage-üzenetsorok eseményindítóit használhatja a függvényvégrehajtások sorozatának összeláncolási módjaként. Vagy használjon service bus-üzenetsorokat és eseményindítókat egy online rendelési rendszerhez.

Az Azure Functions diagramja egy megbízható üzenetrendszerben.

Az alábbi cikk bemutatja, hogyan írhat kimenetet egy tárolási üzenetsorba.

Ezek a cikkek bemutatják, hogyan aktiválható egy Azure Service Bus-üzenetsorból vagy -témakörből.

Következő lépések