Sdílet prostřednictvím


Scénáře Azure Functions

Často vytváříme systémy pro reakci na řadu kritických událostí. Bez ohledu na to, jestli vytváříte webové rozhraní API, reagujete na změny databáze, zpracováváte streamy událostí nebo zprávy, můžete je použít k jejich implementaci.

V mnoha případech se funkce integruje s řadou cloudových služeb , aby poskytovala implementace s bohatými funkcemi. Níže jsou uvedené běžné (ale bez použití vyčerpávající) sady scénářů pro Azure Functions.

V horní části článku vyberte svůj vývojový jazyk.

Nahrání souboru procesu

Existuje několik způsobů, jak pomocí funkcí zpracovat soubory do kontejneru úložiště objektů blob nebo z kontejneru úložiště objektů blob. Další informace o možnostech aktivace v kontejneru objektů blob najdete v dokumentaci k osvědčeným postupům práce s objekty blob.

Například v maloobchodním řešení může partnerový systém odesílat informace o katalogu produktů jako soubory do úložiště objektů blob. Funkci aktivovanou objektem blob můžete použít k ověření, transformaci a zpracování souborů do hlavního systému při jejich nahrání.

Diagram procesu nahrání souboru pomocí Azure Functions

Následující kurzy používají trigger objektu blob (založený na Event Gridu) ke zpracování souborů v kontejneru objektů blob:

Například použití triggeru objektu blob s odběrem události v kontejnerech objektů blob:

[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();
        }
    }
}

Zpracování datových proudů a událostí v reálném čase

Tolik telemetrie se generuje a shromažďuje z cloudových aplikací, zařízení IoT a síťových zařízení. Služba Azure Functions může tato data zpracovávat téměř v reálném čase jako horká cesta a pak je ukládat do služby Azure Cosmos DB pro použití na řídicím panelu analýzy.

Vaše funkce můžou také používat triggery událostí s nízkou latencí, jako je Event Grid, a výstupy v reálném čase, jako je SignalR, ke zpracování dat téměř v reálném čase.

Diagram procesu datového proudu v reálném čase pomocí Azure Functions

Například použití triggeru centra událostí ke čtení z centra událostí a výstupní vazby pro zápis do centra událostí po debatě a transformaci událostí:

[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);
}

Strojové učení a AI

Kromě zpracování dat je možné službu Azure Functions použít k odvození modelů. Rozšíření vazby Azure OpenAI umožňuje snadno integrovat funkce a chování služby Azure OpenAI do provádění kódu funkce.

Funkce se můžou připojit k prostředkům OpenAI, aby umožňovaly dokončování textu a chatu, používaly asistenty a využívaly vkládání a sémantické vyhledávání.

Funkce může také volat model TensorFlow nebo služby Azure AI ke zpracování a klasifikaci datového proudu obrázků.

Diagram procesu strojového učení a umělé inteligence pomocí Azure Functions

Spouštění naplánovaných úloh

Funkce umožňují spouštět kód na základě plánu cron, který definujete.

Podívejte se, jak vytvořit funkci na webu Azure Portal, která běží podle plánu.

Databáze zákazníků s finančními službami může být například analyzována pro duplicitní položky každých 15 minut, aby se zabránilo více komunikacím, které se budou shodovat se stejným zákazníkem.

Diagram naplánované úlohy, kde funkce vyčistí databázi každých 15 minut, odstranění duplicitních dat na základě obchodní logiky

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

Vytvoření škálovatelného webového rozhraní API

Aktivovaná funkce HTTP definuje koncový bod HTTP. Tyto koncové body spouští kód funkce, který se může připojit k jiným službám přímo nebo pomocí rozšíření vazeb. Koncové body můžete vytvořit do webového rozhraní API.

Koncový bod funkce aktivovaný protokolem HTTP můžete použít také jako integraci webhooku, jako jsou webhooky GitHubu. Tímto způsobem můžete vytvářet funkce, které zpracovávají data z událostí GitHubu. Další informace najdete v tématu Monitorování událostí GitHubu pomocí webhooku se službou Azure Functions.

Diagram zpracování požadavku HTTP pomocí Azure Functions

Příklady najdete v následujících tématech:

[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();
}

Vytvoření bezserverového pracovního postupu

Funkce jsou často výpočetní komponentou v topologii bezserverového pracovního postupu, jako je pracovní postup Logic Apps. Pomocí rozšíření Durable Functions můžete také vytvářet dlouhotrvající orchestrace. Další informace najdete v tématu Durable Functions – přehled.

Kombinovaný diagram řady konkrétních bezserverových pracovních postupů využívajících Azure Functions

Reakce na změny databáze

V případě změn uložených dat může být potřeba protokolovat, auditovat nebo provádět nějakou jinou operaci. Triggery funkcí poskytují dobrý způsob, jak získat oznámení o změnách dat při počáteční operaci.

Diagram funkce, která se používá k reagování na změny databáze

Zvažte následující příklady:

Vytváření spolehlivých systémů zpráv

Pomocí funkcí se službami zasílání zpráv Azure můžete vytvářet pokročilá řešení zasílání zpráv řízená událostmi.

Triggery můžete například použít ve frontách Azure Storage jako způsob, jak zřetězit řadu spuštění funkcí. Nebo použijte fronty a triggery služby Service Bus pro online systém objednávek.

Diagram služby Azure Functions ve spolehlivém systému zpráv

Následující článek ukazuje, jak zapisovat výstup do fronty úložiště.

V těchto článcích se dozvíte, jak aktivovat z fronty nebo tématu služby Azure Service Bus.

Další kroky