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 proses pengunggahan file menggunakan Azure Functions.

Tutorial berikut menggunakan pemicu Blob (berbasis 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 proses streaming real time menggunakan 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. Ekstensi pengikatan Azure OpenAI memungkinkan dengan mudah mengintegrasikan fitur dan perilaku layanan Azure OpenAI ke dalam eksekusi kode fungsi Anda.

Fungsi dapat terhubung ke sumber daya OpenAI untuk mengaktifkan penyelesaian teks dan obrolan, menggunakan asisten, dan memanfaatkan penyematan dan pencarian semantik.

Fungsi mungkin juga memanggil model TensorFlow atau layanan Azure AI untuk memproses dan mengklasifikasikan aliran gambar.

Diagram pembelajaran mesin dan proses AI menggunakan 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 tugas terjadwal di mana fungsi membersihkan database setiap 15 menit mendeduplikasi entri berdasarkan logika bisnis.

[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 pemrosesan permintaan HTTP menggunakan 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.

Diagram kombinasi dari serangkaian alur kerja tanpa server tertentu menggunakan 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 fungsi yang digunakan untuk merespons perubahan database.

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 Azure Functions dalam sistem pesan yang andal.

Artikel berikut menunjukkan cara menulis output ke antrean penyimpanan.

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

Langkah berikutnya