Bagikan melalui


Skenario Azure Functions

Seringkali kami membangun sistem untuk bereaksi terhadap serangkaian kejadian penting. Baik Anda membangun API web, menanggapi perubahan database, memproses aliran peristiwa atau pesan, Azure Functions dapat digunakan untuk mengimplementasikannya.

Dalam banyak kasus, fungsi terintegrasi dengan berbagai layanan cloud untuk menyediakan penerapan yang kaya akan fitur. Berikut ini adalah serangkaian skenario umum (tetapi tidak lengkap) untuk Azure Functions.

Pilih bahasa pengembangan Anda di bagian atas artikel.

Memproses unggahan file

Ada beberapa cara untuk menggunakan fungsi untuk memproses file ke dalam atau di luar kontainer penyimpanan blob. Untuk mempelajari selengkapnya tentang opsi pemicu pada kontainer blob, lihat Bekerja dengan blob dalam dokumentasi praktik terbaik.

Misalnya, dalam solusi ritel, sistem mitra dapat mengirimkan informasi katalog produk sebagai file ke penyimpanan blob. Anda dapat menggunakan fungsi yang dipicu blob untuk memvalidasi, mengubah, dan memproses file ke dalam sistem utama saat diunggah.

Diagram of a file upload process using Azure Functions.

Tutorial berikut menggunakan pemicu Event Grid untuk memproses file dalam kontainer blob:

Misalnya, menggunakan pemicu blob dengan langganan peristiwa pada kontainer 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();
        }
    }
}

Aliran real time dan pemrosesan peristiwa

Begitu banyak telemetri yang dihasilkan dan dikumpulkan dari aplikasi cloud, perangkat IoT, dan perangkat jaringan. Azure Functions dapat memproses data tersebut mendekati real-time sebagai jalur panas, lalu menyimpannya di Azure Cosmos DB untuk digunakan di dasbor analitik.

Fungsi Anda juga dapat menggunakan pemicu peristiwa latensi rendah, seperti Event Grid, dan output real time seperti SignalR untuk memproses data mendekati real-time.

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

Misalnya, menggunakan pemicu pusat aktivitas untuk membaca dari pusat aktivitas dan pengikatan output untuk menulis ke pusat aktivitas setelah berdebat dan mengubah peristiwa:

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

Pembelajaran mesin dan AI

Selain pemrosesan data, Azure Functions dapat digunakan untuk menyimpulkan model.

Misalnya, fungsi yang memanggil model TensorFlow atau mengirimkannya ke layanan Azure AI dapat memproses dan mengklasifikasikan aliran gambar.

Fungsi juga dapat tersambung ke layanan lain untuk membantu memproses data dan melakukan tugas terkait AI lainnya, seperti ringkasan teks.

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

Jalankan tugas terjadwal

Functions memungkinkan Anda menjalankan kode berdasarkan jadwal cron yang Anda tentukan.

Lihat cara Membuat fungsi di portal Azure yang berjalan sesuai jadwal.

Database pelanggan layanan keuangan, misalnya, dapat dianalisis untuk entri duplikat setiap 15 menit untuk menghindari beberapa komunikasi yang keluar ke pelanggan yang sama.

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
}

Membangun API web yang dapat diskalakan

Fungsi yang dipicu HTTP menentukan titik akhir HTTP. Titik akhir ini menjalankan kode fungsi yang dapat terhubung ke layanan lain secara langsung atau dengan menggunakan ekstensi pengikatan. Anda dapat menyusun titik akhir ke dalam API berbasis web.

Anda juga dapat menggunakan titik akhir fungsi yang dipicu HTTP sebagai integrasi webhook, seperti webhook GitHub. Dengan cara ini, Anda dapat membuat fungsi yang memproses data dari peristiwa GitHub. Untuk mempelajari selengkapnya, lihat Memantau peristiwa GitHub dengan menggunakan webhook dengan Azure Functions.

Diagram of processing an HTTP request using Azure Functions.

Misalnya, lihat yang berikut ini:

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

Bangun alur kerja tanpa server

Functions sering menjadi komponen komputasi dalam topologi alur kerja tanpa server, seperti alur kerja Logic Apps. Anda juga dapat membuat orkestrasi yang berjalan lama menggunakan ekstensi Durable Functions. Untuk informasi selengkapnya, lihat Ringkasan Durable Functions.

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

Merespons perubahan database

Ada proses di mana Anda mungkin perlu mencatat, mengaudit, atau melakukan beberapa operasi lain saat data tersimpan berubah. Pemicu fungsi memberikan cara yang baik untuk mendapatkan pemberitahuan tentang perubahan data pada operasi awal seperti itu.

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

Perhatikan contoh berikut:

Membuat sistem pesan yang andal

Anda dapat menggunakan Functions dengan layanan olahpesan Azure untuk membuat solusi olahpesan berbasis peristiwa tingkat lanjut.

Misalnya, Anda dapat menggunakan pemicu pada antrean Azure Storage sebagai cara untuk menyatukan serangkaian eksekusi fungsi. Atau gunakan antrean dan pemicu bus layanan untuk sistem pemesanan online.

Diagram of Azure Functions in a reliable message system.

Artikel berikut menunjukkan cara menulis output ke antrean penyimpanan.

Dan artikel ini menunjukkan cara memicu dari antrean atau topik Azure Bus Layanan.

Langkah berikutnya