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.

Diagram of a file upload process using Azure Functions.

Az alábbi oktatóanyagok egy Event Grid-eseményindítót 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.

Diagram of a real-time stream process using Azure Functions.

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ó.

Egy TensorFlow-modellt meghívó vagy az Azure AI-szolgáltatásoknak beküldő függvények például feldolgozhatnak és osztályozhatnak egy képstreamet.

A függvények más szolgáltatásokhoz is csatlakozhatnak az adatok feldolgozásához és az AI-hoz kapcsolódó egyéb feladatok, például a szövegösszesítés végrehajtásához.

Diagram of a machine learning and AI process using Azure Functions.

Ü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.

Diagram of a scheduled task where a function cleans a database every 15 minutes deduplicating entries based on business logic.

[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.

Diagram of processing an HTTP request using Azure Functions.

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.

A combination diagram of a series of specific serverless workflows using Azure Functions.

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.

Diagram of a function being used to respond to database changes.

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.

Diagram of Azure Functions in a reliable message system.

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