All Products
Search
Document Center

Function Compute:Pemanggilan asinkron

Last Updated:Apr 24, 2026

Untuk fungsi dengan logika berdurasi panjang, intensif sumber daya, atau rentan error, gunakan pemanggilan asinkron untuk meningkatkan responsivitas aplikasi dan menangani lonjakan traffic secara andal. Saat memanggil fungsi secara asinkron, Anda tidak perlu menunggu respons. Function Compute menyimpan permintaan dalam antrian internal untuk pemrosesan yang andal. Topik ini menjelaskan kasus penggunaan dan fitur umum pemanggilan asinkron.

Kasus penggunaan

Contoh kasus penggunaan pemanggilan asinkron meliputi:

  • Pemrosesan audio dan video

    Saat menggunakan Function Compute untuk beban kerja audio dan video, Anda sering menjalankan tugas yang memakan waktu seperti encoding, decoding, dan transcoding. Dengan memanggil tugas-tugas ini secara asinkron, mereka berjalan di latar belakang tanpa menghalangi front end, sehingga meningkatkan pengalaman pengguna. Untuk proyek berskala besar, Anda juga dapat membaginya menjadi beberapa tugas guna pemrosesan paralel atau mengonversi video ke beberapa format dengan memanggil beberapa fungsi secara asinkron, yang memperpendek waktu pemrosesan keseluruhan.

  • Pemrosesan ETL data

    Dalam alur kerja ekstrak, transformasi, dan muat (ETL), proses mengekstrak data dari sumber, mentransformasikannya, dan memuatnya ke sistem tujuan mungkin melibatkan beberapa operasi independen, seperti kueri database, I/O file, atau pembersihan data. Pemanggilan asinkron memungkinkan operasi-operasi tersebut berjalan secara paralel, sehingga mengurangi waktu pemrosesan dan meningkatkan kinerja sistem. Untuk tugas berdurasi panjang—seperti memproses set data besar atau transformasi data kompleks—pemanggilan asinkron memungkinkan tugas tersebut berjalan di latar belakang tanpa memblokir front end, sehingga meningkatkan pengalaman pengguna.

  • Mengembangkan aplikasi web

    Anda dapat menggunakan Function Compute bersama layanan cloud lainnya untuk membangun aplikasi web dengan cepat. Saat pengguna mengirim formulir, menjalankan kueri pencarian, atau memuat halaman yang kaya konten, pemanggilan asinkron mencegah halaman membeku akibat menunggu respons back-end yang lama. Pengguna tetap dapat berinteraksi dengan bagian lain halaman tanpa mengalami latensi yang terasa. Dalam skenario konkurensi tinggi—misalnya saat sejumlah besar pengguna mengakses aplikasi secara bersamaan—pemanggilan asinkron dapat mendistribusikan beban permintaan dan mencegah kelebihan beban layanan.

Pemanggilan tertunda

Anda dapat mengonfigurasi Function Compute untuk memicu pemanggilan asinkron setelah penundaan tertentu.

Tambahkan header permintaan HTTP x-fc-async-delay ke kode Anda. Nilainya harus dalam satuan detik dan berada dalam rentang (0, 3600). Function Compute memulai pengatur waktu saat eksekusi dipicu dan memanggil fungsi setelah penundaan yang ditentukan oleh x-fc-async-delay.

Kebijakan pengulangan

Mekanisme pemanggilan asinkron menyediakan penanganan error dan pengulangan bawaan. Jika suatu langkah gagal, sistem dapat menjadwalkan ulang tugas tersebut tanpa memengaruhi alur kerja keseluruhan. Saat pemanggilan fungsi asinkron gagal, Function Compute secara otomatis mengulangi pemanggilan tersebut.

Mekanisme pengulangan

Tabel berikut menjelaskan kebijakan pengulangan default untuk error umum.

Mengonfigurasi kebijakan pengulangan

Function Compute memungkinkan Anda menyesuaikan jumlah maksimum pengulangan dan masa aktif pesan maksimum.

  1. Login ke Function Compute console. Di panel navigasi kiri, pilih Function Management > Functions.

  2. Di bilah navigasi atas, pilih wilayah. Di halaman Functions, klik fungsi target.

  3. Di halaman detail fungsi, klik tab Tasks, lalu klik Task Mode di sebelah kanan Modify. Di panel Task Mode, atur parameter berikut. Setelah konfigurasi selesai, klik Deploy.

    Parameter

    Deskripsi

    Task Mode

    Menentukan apakah Task Mode diaktifkan untuk tugas asinkron. Untuk informasi selengkapnya, lihat Tugas asinkron.

    Maximum Retries

    Jumlah maksimum pengulangan untuk pemanggilan asinkron. Nilainya harus berupa bilangan bulat dari 0 hingga 8.

    Secara default, Function Compute mengulangi pemanggilan asinkron yang gagal sebanyak 3 kali. Anda dapat menyesuaikan jumlah pengulangan sesuai kebutuhan bisnis.

    Maximum Message Lifetime

    Masa aktif maksimum pesan dalam antrian pemanggilan asinkron. Nilainya harus berupa bilangan bulat dari 1 hingga 604.800. Nilai default adalah 86.400. Satuan: detik.

    Durasi ini dihitung sejak pemanggilan asinkron dipicu. Jika masa aktif pesan melebihi nilai yang dikonfigurasi, pesan tersebut akan dibuang. Pesan yang dibuang dicatat oleh metrik pemantauan Asynchronous Invocation Events di CloudMonitor. Untuk informasi lebih lanjut tentang metrik, lihat Metrik pemantauan.

Callback hasil

Saat Function Compute menerima permintaan pemanggilan asinkron, sistem menyimpan permintaan tersebut dan segera mengembalikan respons tanpa menunggu eksekusi permintaan. Untuk menyimpan permintaan yang dibuang setelah semua pengulangan gagal atau memberi notifikasi ke layanan downstream mengenai hasil pemanggilan asinkron, konfigurasikan fitur callback hasil. Setelah Anda mengonfigurasi layanan tujuan, Function Compute secara otomatis melakukan callback ke layanan yang sesuai berdasarkan hasil eksekusi saat pemanggilan asinkron selesai.

Cara kerja

Gambar berikut menunjukkan alur kerja callback hasil.

Kasus penggunaan

  • Simpan event yang dibuang untuk pemrosesan selanjutnya

    Saat permintaan asinkron gagal dan semua pengulangan gagal berdasarkan kebijakan yang dikonfigurasi, Function Compute membuang permintaan tersebut. Jika Anda telah mengonfigurasi tujuan kegagalan, Function Compute secara otomatis mendorong informasi konteks permintaan yang gagal ke layanan pesan seperti ApsaraMQ for RocketMQ untuk pemrosesan selanjutnya. Anda juga dapat menetapkan fungsi lain sebagai layanan tujuan. Dalam kasus ini, Function Compute secara otomatis mendorong informasi konteks permintaan yang gagal ke fungsi tersebut untuk menjalankan logika penanganan error kustom Anda.

  • Otomatis memberi notifikasi ke layanan downstream mengenai hasil eksekusi

    Setelah eksekusi berhasil, jika tujuan keberhasilan dikonfigurasi, sistem Function Compute secara otomatis mendorong konteks permintaan ke layanan tujuan downstream. Misalnya, jika Anda mengonfigurasi Function Compute untuk secara otomatis mengekstrak file ZIP yang diunggah ke OSS dan ingin menerima notifikasi pesan saat selesai, Anda dapat mengonfigurasi layanan tujuan callback hasil untuk fungsi target tersebut.

Layanan tujuan yang didukung

Jika hasil pemanggilan asinkron memenuhi kondisi yang dikonfigurasi, Function Compute mendorong konteks dan data permintaan ke layanan tujuan yang ditentukan. Anda dapat mengonfigurasi layanan tujuan berbeda untuk fungsi, alias, dan versi yang berbeda. Layanan tujuan berikut didukung untuk pemanggilan asinkron:

  • Simple Message Queue (formerly MNS)

  • Function Compute

  • EventBridge

  • ApsaraMQ for RocketMQ

Catatan
  • Anda hanya dapat mengonfigurasi instans seri 4.0 ApsaraMQ for RocketMQ sebagai layanan tujuan. Instans seri 5.0 tidak didukung.

  • Untuk informasi tentang batas muatan layanan tujuan, lihat Batas sumber daya runtime fungsi.

Konfigurasi tujuan pemanggilan asinkron mencakup hal-hal berikut:

  • Konten event untuk tujuan pemanggilan asinkron

    Saat Simple Message Queue (formerly MNS), Function Compute, atau ApsaraMQ for RocketMQ menjadi tujuan pemanggilan fungsi asinkron, konten event memiliki format berikut.

    {
      "timestamp": 1660120276975,
      "requestContext": {
        "requestId": "xxx",
        "functionArn": "acs:fc:{regionid}:{accountid}:functions/xxxx",
           "condition": "FunctionResourceExhausted", 
            "approximateInvokeCount": 3
      },
      "requestPayload": "",
      "responseContext": {
        "statusCode": 200,
        "functionError": ""
      },
      "responsePayload": ""
    }

    Tabel 1. Deskripsi parameter

    Parameter

    Deskripsi

    timestamp

    Timestamp pemanggilan.

    requestContext

    Konteks permintaan.

    requestContext.requestId

    ID permintaan pemanggilan asinkron.

    requestContext.functionArn

    Nama Sumber Daya Alibaba Cloud (ARN) dari fungsi yang dipanggil secara asinkron.

    requestContext.condition

    Kode kesalahan pemanggilan.

    requestContext.approximateInvokeCount

    Jumlah kali pemanggilan asinkron dieksekusi. Nilai lebih dari 1 menunjukkan bahwa Function Compute telah mengulangi pemanggilan tersebut.

    requestPayload

    Muatan asli permintaan fungsi.

    responseContext

    Konteks respons.

    responseContext.statusCode

    Kode status sistem yang dikembalikan oleh pemanggilan fungsi. Jika kode status bukan 200, terjadi error sistem.

    responseContext.functionError

    Pesan kesalahan dari pemanggilan.

    responsePayload

    Muatan asli yang dikembalikan oleh eksekusi fungsi.

    Saat EventBridge digunakan sebagai tujuan pemanggilan fungsi asinkron, event memiliki format berikut. Untuk informasi selengkapnya, lihat Ikhtisar Event.

    {
        "datacontenttype": "application/json",
        "aliyunaccountid": "143xxxx",
        "data": {
            "requestContext": {
                "condition": "",
                "approximateInvokeCount": 1,
                "requestId": "0fcb7f0c-xxxx",
                "functionArn": "acs:fc:{regionid}:{accountid}:functions/xxxx"
            },
            "requestPayload": "",
            "responsePayload": "",
            "responseContext": {
                "functionError": "",
                "statusCode": 200
            },
            "timestamp": 1660120276975
        },
        "subject": "acs:fc:{regionid}:{accountid}:functions/xxxx",
        "source": "acs:fc",
        "type": "fc:AsyncInvoke:succeeded",
        "aliyunpublishtime": "2021-01-03T09:44:31.233Asia/Shanghai",
        "specversion": "1.0",
        "aliyuneventbusname": "xxxxxxx",
        "id": "ecc4865xxxxxx",
        "time": "2021-01-03T01:44:31Z",
        "aliyunregionid": "cn-shanghai-vpc",
        "aliyunpublishaddr": "199.99.xxx.xxx"
    }
  • Batas muatan

    Batas muatan maksimum untuk layanan tujuan yang didukung adalah sebagai berikut:

    • Simple Message Queue (formerly MNS): 64 KB

    • Function Compute: tunduk pada batas yang dijelaskan dalam Batas sumber daya runtime fungsi.

    • EventBridge: 64 KB

    • ApsaraMQ for RocketMQ: 4 MB

  • Hindari loop pemanggilan

    Saat mengonfigurasi tujuan untuk eksekusi asinkron, hindari membuat loop pemanggilan. Misalnya, Anda mengonfigurasi Function B sebagai tujuan untuk pemanggilan sukses Function A, dan Function A sebagai tujuan untuk pemanggilan sukses Function B. Dalam kasus ini, jika Anda memicu Function A secara asinkron dan eksekusinya berhasil, loop pemanggilan dari A ke B lalu kembali ke A dapat terjadi.

Mengonfigurasi layanan tujuan

  1. Login ke Function Compute console. Di panel navigasi kiri, pilih Function Management > Functions.

  2. Di bilah navigasi atas, pilih wilayah. Di halaman Functions, klik fungsi target.

  3. Di halaman detail fungsi, klik tab Tasks, lalu klik Edit di sebelah kanan Modify. Di panel Task destination, atur parameter berikut. Setelah konfigurasi selesai, klik Deploy.

    • Mengonfigurasi tujuan keberhasilan

      Atur Invoke Other Services upon Success ke Enable, lalu konfigurasi layanan tujuan untuk eksekusi yang berhasil. Parameter dijelaskan sebagai berikut:

      Parameter

      Deskripsi

      Destination Service

      Function Compute. Saat Anda memilih Function Compute sebagai layanan tujuan, Anda harus mengonfigurasi parameter berikut:

      • Function name: Tentukan nama fungsi tujuan.

      • Version or alias: Tentukan alias atau versi fungsi.

      Simple Message Queue (formerly MNS). Saat Anda memilih Simple Message Queue (formerly MNS) sebagai layanan tujuan, Anda harus mengonfigurasi parameter berikut:

      • Destination type: Pilih jenis tujuan. Nilai yang valid:

        • Queue:

        • Topic:

      • Queue: Pilih nama antrian Simple Message Queue (formerly MNS). Parameter ini wajib jika Anda mengatur Queue ke Queue.

      • Topic: Pilih nama topik Simple Message Queue (formerly MNS). Parameter ini wajib jika Anda mengatur Topic ke Topic.

      ApsaraMQ for RocketMQ. Jika Anda memilih ApsaraMQ for RocketMQ sebagai layanan tujuan, Anda harus mengonfigurasi parameter berikut:

      • Instance: Pilih instans tujuan.

      • Topic: Pilih topik tujuan.

      EventBridge. Jika Anda memilih EventBridge sebagai layanan tujuan, Anda harus menentukan Custom event bus.

    • Mengonfigurasi tujuan kegagalan

      Atur Invoke Other Services upon Failure ke Enable, lalu konfigurasi layanan tujuan untuk eksekusi yang gagal. Parameternya sama dengan tujuan keberhasilan.

Callback gagal

Callback ke layanan tujuan dapat gagal karena izin tidak mencukupi atau layanan tidak tersedia. Function Compute menyediakan metrik dan log terkait yang dapat Anda gunakan untuk troubleshooting. Tabel berikut menjelaskan error umum dan perilaku sistem yang sesuai.

Kode kesalahan

Penyebab

Perilaku sistem

5xx

Throttling atau error konten.

Sistem Function Compute secara otomatis mengulangi dengan backoff eksponensial. Interval pengulangan awal adalah 500 ms, dan durasi pengulangan maksimum adalah 30 menit.

4xx

Izin tidak mencukupi, parameter permintaan tidak valid (misalnya, sumber daya tujuan dihapus), atau badan permintaan melebihi batas layanan tujuan.

Mengembalikan error dan mencatat informasi error.

Metrik callback hasil

Jika callback ke layanan tujuan gagal, Function Compute mencatat metrik yang sesuai di konsol. Anda dapat login ke Function Compute console. Di panel navigasi kiri, pilih . Lalu, di daftar Function Name, klik nama fungsi target untuk melihat metriknya.

Nama metrik

Deskripsi

Destination Invocation Errors (FunctionDestinationErrors)

Jumlah upaya gagal memanggil tujuan untuk pemanggilan fungsi asinkron. Metrik ini diagregasi berdasarkan jumlah per menit atau per jam.

Destination Invocation Successes (FunctionDestinationSucceed)

Jumlah upaya berhasil memanggil tujuan untuk pemanggilan fungsi asinkron. Metrik ini diagregasi berdasarkan jumlah per menit atau per jam.

Untuk informasi lebih lanjut tentang metrik pemantauan, lihat Metrik Pemantauan.

FAQ

Bagaimana cara memicu pemanggilan asinkron?

Anda dapat menggunakan salah satu metode berikut untuk memanggil fungsi secara asinkron di Function Compute:

  • Login ke Function Compute console, temukan fungsi target, buka tab Test, pilih I want to make the call asynchronously., lalu klik Test Function.

  • Panggil API InvokeFunction dan atur parameter x-fc-invocation-type ke Async.

  • Gunakan Serverless Devs untuk mengonfigurasi pemanggilan asinkron. Atur parameter invocation-type ke Async. Untuk informasi selengkapnya, lihat Invoke a function.

  • Buat pemicu yang mendukung pemanggilan asinkron untuk memicu fungsi secara asinkron. Untuk informasi selengkapnya, lihat Pemanggilan berbasis event.

  • Saat menggunakan pemicu HTTP atau domain kustom untuk pemanggilan, atur header permintaan X-Fc-Invocation-Type ke Async, seperti pada contoh berikut.

    curl -v -H "X-Fc-Invocation-Type: Async" https://example.cn-shenzhen.fcapp.run/$path
    Catatan
    • Memanggil Fungsi Web: Misalnya, jika Anda menggunakan Flask dan ingin menguji fungsi Python dengan rute yang didefinisikan sebagai @app.route('/test'), ganti $path dengan test. Saat menguji fungsi Python dengan rute yang didefinisikan sebagai @app.route('/'), panggil langsung titik akhir publik pemicu HTTP.

    • Memanggil Fungsi Event: Panggil langsung titik akhir publik pemicu HTTP.

Langkah selanjutnya

Untuk melacak status permintaan asinkron di setiap tahap, aktifkan Task Mode. Untuk informasi selengkapnya, lihat Tugas asinkron.