全部产品
Search
文档中心

Function Compute:Pemanggilan Asinkron

更新时间:Oct 25, 2025

Jika fungsi Anda melibatkan logika yang memakan waktu, intensif sumber daya, atau rentan terhadap kesalahan, pemanggilan asinkron dapat sangat bermanfaat. Pemanggilan ini memungkinkan aplikasi Anda menangani lonjakan lalu lintas dengan efisiensi dan keandalan yang lebih tinggi. Saat sebuah fungsi dipanggil secara asinkron, Anda tidak perlu menunggu responsnya. Permintaan disimpan secara persisten dalam antrian internal Function Compute dan diproses secara andal di latar belakang. Topik ini menjelaskan skenario penggunaan dan fitur utama dari pemanggilan asinkron.

Kasus penggunaan

Berikut adalah contoh kasus penggunaan umum untuk pemanggilan asinkron:

  • Pengolahan audio dan video

    Function Compute dapat menangani file audio dan video secara efisien, di mana tugas seperti encoding, decoding, dan transkoding sering kali memakan waktu. Dengan memicu operasi ini secara asinkron, proses berlangsung di backend, memungkinkan antarmuka depan untuk terus berjalan tanpa penundaan — meningkatkan pengalaman pengguna. Selain itu, pemanggilan asinkron memungkinkan eksekusi bersamaan dari beberapa fungsi, mengurangi waktu pemrosesan keseluruhan. Sebagai contoh, proyek besar dapat dibagi menjadi beberapa subtugas untuk pemrosesan paralel, atau satu video dapat dikonversi ke berbagai format secara bersamaan.

  • Pengolahan ETL data

    Selama operasi ekstrak, transformasi, dan muat (ETL), tugas seperti kueri database, I/O file, dan pembersihan data sering kali independen dan dapat dieksekusi secara paralel. Pemanggilan asinkron memungkinkan proses ini berjalan bersamaan, secara signifikan mengurangi waktu pemrosesan dan meningkatkan kinerja sistem. Untuk tugas yang lebih kompleks atau intensif sumber daya, seperti transformasi data skala besar, pemanggilan asinkron memastikan pemrosesan backend tanpa memblokir antarmuka depan, menghasilkan pengalaman pengguna yang lebih lancar.

  • Pengembangan aplikasi web

    Function Compute terintegrasi dengan mulus dengan layanan cloud lainnya untuk membangun aplikasi web yang kuat. Pemanggilan asinkron membantu mencegah pembekuan halaman yang disebabkan oleh operasi backend yang panjang, seperti pengiriman formulir, kueri, atau pemuatan data besar. Ini memungkinkan pengguna untuk terus berinteraksi dengan komponen lain dari aplikasi tanpa gangguan. Dalam skenario dengan konkurensi tinggi — seperti ketika banyak pengguna mengakses aplikasi secara bersamaan — pemanggilan asinkron membantu mendistribusikan beban, melindungi layanan backend dari kelebihan beban.

Pemanggilan Tertunda

Dalam skenario tertentu, Anda mungkin memerlukan Function Compute untuk menunda eksekusi fungsi setelah mengirimkan permintaan pemanggilan asinkron. Untuk mencapai ini, Anda dapat menggunakan API atau SDK Function Compute untuk mengatur pemanggilan tertunda.

Cukup sertakan header permintaan HTTP x-fc-async-delay dalam kode permintaan Anda. Rentang valid untuk parameter ini adalah (0, 3600) detik. Function Compute akan memanggil fungsi setelah periode penundaan yang ditentukan telah berakhir.

Kebijakan Pengulangan

Penanganan kesalahan dan mekanisme pengulangan didukung dalam pemanggilan asinkron. Tugas dapat dijadwalkan ulang tanpa memengaruhi seluruh proses jika tugas gagal. Function Compute secara otomatis mengulang pemanggilan asinkron jika pemanggilan gagal.

Mekanisme Pengulangan

Tabel berikut menjelaskan mekanisme pengulangan default untuk kesalahan umum.

Jenis Kesalahan

Perilaku Server

Ditagih

Solusi

Kesalahan HandledInvocationError dan UnhandledInvocationError dari Function Compute

Secara default, Function Compute mengulang fungsi hingga tiga kali. Anda dapat mengubah jumlah pengulangan berdasarkan kebutuhan bisnis Anda.

Ditagih berdasarkan jumlah pemanggilan. Untuk informasi lebih lanjut, lihat Ikhtisar Penagihan.

Periksa kode Anda.

Batas atas konkurensi eksekusi terlampaui

Function Compute mengulang eksekusi fungsi hingga 5 jam dalam mode eksponensial biner mundur. Jika eksekusi fungsi Anda gagal, pengulangan dimulai 0,5 detik kemudian. Interval pengulangan berikutnya dihitung dalam mode eksponensial biner mundur, seperti 1 detik, 2 detik, 4 detik, dan 8 detik. Pengulangan berlangsung hingga 5 jam.

Tidak

Secara default, setiap Akun Alibaba Cloud dapat menjalankan hingga 100 instans di setiap wilayah. Kuota aktual yang ditampilkan di halaman Kuota Umum di konsol Quota Center yang berlaku. Anda dapat meningkatkan kuota di konsol Quota Center.

Kesalahan Internal

Tidak

Gabung dengan grup DingTalk (ID: 64970014484) untuk dukungan teknis.

Kekurangan sumber daya Function Compute

Tidak

Konfigurasikan Kebijakan Pengulangan

Anda dapat menentukan jumlah maksimum pengulangan dan masa hidup maksimum (TTL) untuk pesan di Function Compute.

  1. Masuk ke Konsol Function Compute. Di panel navigasi sisi kiri, klik Functions.

  2. Di bilah navigasi atas, pilih wilayah. Di halaman Functions, klik fungsi yang ingin Anda kelola.

  3. Di halaman Detail Fungsi, navigasikan ke tab Tasks. Di bagian Task Mode, klik Modify. Sesuaikan parameter berikut di panel Task Mode yang muncul, lalu klik Deploy untuk menyimpan perubahan Anda.

Parameter

Deskripsi

Task Mode

Menentukan apakah akan mengaktifkan mode tugas asinkron. Untuk informasi lebih lanjut, lihat Tugas Asinkron.

Maximum Retries

Jumlah maksimum pengulangan untuk pesan dalam pemanggilan asinkron. Nilai valid: [0,8].

Secara default, Function Compute mengulang tiga kali untuk pesan yang gagal dipicu secara asinkron. Anda dapat mengurangi atau menambah jumlah pengulangan pemanggilan asinkron berdasarkan kebutuhan bisnis Anda.

Maximum Message Lifetime

Masa hidup maksimum pesan dalam pemanggilan asinkron. Nilai valid: [1,604800]. Nilai default: 86400. Unit: detik.

Durasi ini dihitung dari waktu ketika pemanggilan asinkron dipicu. Jika masa hidup maksimum pesan berakhir, pesan tersebut dibuang. Pesan yang dibuang dilacak oleh metrik Acara Pemicu Pemanggilan Asinkron di CloudMonitor. Untuk informasi lebih lanjut, lihat Metrik Pemantauan.

Callback Hasil

Setelah menerima permintaan pemanggilan asinkron, Function Compute menyimpan permintaan tersebut dan segera mengembalikan respons tanpa menunggu permintaan selesai. Jika Anda ingin menyimpan permintaan yang gagal dieksekusi setelah diulang untuk jumlah maksimum yang ditentukan atau jika Anda ingin memberi tahu aplikasi hilir tentang hasil pemanggilan asinkron, Anda dapat mengonfigurasi panggilan balik hasil. Setelah Anda mengonfigurasi layanan tujuan untuk pemanggilan asinkron, Function Compute secara otomatis memicu panggilan balik ke layanan yang sesuai berdasarkan hasil eksekusi.

Cara Kerjanya

Gambar berikut menunjukkan proses panggilan balik hasil.

Skenario

  • Simpan acara yang dibuang untuk digunakan nanti

    Jika permintaan asinkron gagal dieksekusi setelah sistem mengulang permintaan berdasarkan kebijakan pengulangan, Function Compute membuang permintaan tersebut. Jika tujuan dikonfigurasi untuk pemanggilan yang gagal, Function Compute mendorong informasi konteks permintaan yang gagal ke layanan tujuan seperti ApsaraMQ for RocketMQ untuk pemrosesan selanjutnya. Anda juga dapat mengatur layanan tujuan ke fungsi lain. Function Compute secara otomatis mendorong informasi konteks permintaan yang gagal ke fungsi ini untuk mengeksekusi logika penanganan kesalahan kustom.

  • Beritahukan layanan hilir tentang hasil eksekusi

    Anda dapat mengonfigurasi tujuan untuk pemanggilan yang berhasil. Setelah permintaan berhasil dieksekusi, Function Compute mendorong informasi konteks permintaan ke layanan tujuan hilir. Misalnya, jika Anda menggunakan Function Compute untuk secara otomatis mengekstrak file ZIP yang diunggah ke Object Storage Service (OSS), Anda dapat mengonfigurasi panggilan balik hasil untuk fungsi ekstraksi jika Anda ingin menerima notifikasi setelah ekstraksi.

Layanan Tujuan yang Didukung untuk Pemanggilan Asinkron

Jika Anda mengonfigurasi tujuan untuk pemanggilan asinkron suatu fungsi, Function Compute mengirimkan konteks dan data permintaan ke layanan yang ditentukan ketika hasil pemanggilan asinkron memenuhi kondisi yang ditentukan. Anda dapat mengonfigurasi layanan tujuan yang 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

Perhatikan item berikut saat Anda mengonfigurasi layanan tujuan untuk pemanggilan asinkron:

  • Konten acara yang dikirim ke tujuan untuk pemanggilan asinkron

    Kode sampel berikut memberikan contoh konten acara ketika tujuan untuk pemanggilan asinkron adalah Simple Message Queue (formerly MNS), Function Compute, atau ApsaraMQ for RocketMQ.

    {
      "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

    Cap waktu 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 eksekusi pemanggilan asinkron. Nilai lebih dari 1 menunjukkan bahwa Function Compute mengulang eksekusi tersebut.

    requestPayload

    Muatan awal dari permintaan fungsi.

    responseContext

    Konteks respons.

    responseContext.statusCode

    Kode status sistem yang dikembalikan. Kode status selain 200 menunjukkan bahwa terjadi kesalahan sistem.

    responseContext.functionError

    Pesan kesalahan pemanggilan.

    responsePayload

    Muatan awal yang dikembalikan setelah fungsi dieksekusi.

    Kode sampel berikut memberikan contoh konten acara ketika tujuan untuk pemanggilan asinkron adalah EventBridge. Untuk informasi lebih lanjut, lihat Ikhtisar.

    {
        "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

    Item berikut mencantumkan batas ukuran muatan untuk layanan tujuan yang berbeda:

  • Penghindaran Loop

    Saat Anda mengonfigurasi tujuan untuk pemanggilan asinkron, pastikan bahwa pemanggilan loop tidak terjadi. Sebagai contoh, sebuah loop terjadi jika Anda mengonfigurasi Fungsi B sebagai tujuan untuk pemanggilan asinkron yang berhasil dari Fungsi A dan mengonfigurasi Fungsi A sebagai tujuan untuk pemanggilan asinkron yang berhasil dari Fungsi B. Pemanggilan asinkron dan eksekusi Fungsi A dapat memulai loop tak terbatas di mana Fungsi A dan Fungsi B terus-menerus saling memanggil.

Konfigurasikan Layanan Tujuan untuk Pemanggilan Asinkron

  1. Masuk ke Konsol Function Compute. Di panel navigasi sisi kiri, klik Functions.

  2. Di bilah navigasi atas, pilih wilayah. Di halaman Functions, klik fungsi yang ingin Anda kelola.

  3. Di halaman Detail Fungsi, navigasikan ke tab Tasks. Di bagian Task Destination, klik Modify. Sesuaikan parameter berikut di panel Task Destination yang muncul, lalu klik Deploy untuk menyimpan perubahan Anda.

    • Konfigurasikan tujuan untuk pemanggilan yang berhasil:

      Di panel Destination for Successful Invocations, atur Invoke Other Services upon Success ke Enable dan konfigurasikan parameter Layanan Tujuan. Tabel berikut menjelaskan parameter-parameter tersebut.

      Parameter

      Deskripsi

      Destination Service

      Function Compute. Jika Anda memilih Function Compute dari daftar drop-down Layanan Tujuan, Anda harus mengonfigurasi parameter berikut:

      • Function Name: nama fungsi.

      • Version or Alias: alias atau versi fungsi.

      Simple Message Queue (formerly MNS). Jika Anda memilih Simple Message Queue (formerly MNS) dari daftar drop-down Layanan Tujuan, Anda harus mengonfigurasi parameter berikut:

      • Destination Type: jenis tujuan yang menerima hasil dari pemanggilan yang berhasil. Nilai valid:

        • Queue

          Model pesan berbasis antrian menyediakan layanan konsumsi pesan yang andal dan bersamaan. Setiap pesan dalam antrian hanya dapat dikonsumsi oleh satu klien.

        • Topic

          Model pesan berbasis topik digunakan untuk mengirim pesan dari satu klien penerbit ke beberapa klien pelanggan. Topik SMQ dapat didorong sebagai pesan menggunakan beberapa metode.

      • Queue: nama antrian Simple Message Queue (formerly MNS). Parameter ini diperlukan jika Anda mengatur parameter Jenis Tujuan ke Queue.

      • Topic: nama topik Simple Message Queue (formerly MNS). Parameter ini diperlukan jika Anda mengatur parameter Jenis Tujuan ke Topic.

      ApsaraMQ for RocketMQ. Jika Anda memilih ApsaraMQ for RocketMQ dari daftar drop-down Layanan Tujuan, Anda harus mengonfigurasi parameter berikut:

      • Instances: instans tujuan.

      • Topic: topik tujuan.

      EventBridge. Jika Anda memilih EventBridge dari daftar drop-down Layanan Tujuan, Anda harus mengonfigurasi parameter Custom Event Bus.

    • Konfigurasikan tujuan untuk pemanggilan yang gagal:

      Di panel Destination for Failed Invocations, atur Invoke Other Services upon Failure ke Enable. Kemudian, konfigurasikan parameter Layanan Tujuan.

Tangani Kegagalan Panggilan Balik

Jika peran yang dikonfigurasi untuk fungsi tidak memiliki izin pada layanan tujuan atau layanan tujuan tidak tersedia, panggilan balik ke layanan tujuan mungkin gagal. Anda dapat menangani kegagalan tersebut berdasarkan metrik dan log yang disediakan oleh Function Compute. Tabel berikut menjelaskan kesalahan umum dan tindakan sistem yang sesuai.

Kode status HTTP

Deskripsi

Tindakan sistem

5xx

Permintaan dibatasi atau terjadi kesalahan konten.

Function Compute secara otomatis mengulang panggilan balik dalam mode eksponensial mundur. Interval pengulangan awal adalah 500 milidetik, dan durasi pengulangan maksimum adalah 30 menit.

4xx

Anda tidak memiliki izin yang diperlukan, parameter permintaan salah, atau badan pesan permintaan melebihi batas layanan tujuan. Contoh parameter permintaan yang salah adalah bahwa sumber daya untuk layanan tujuan yang ditentukan oleh parameter permintaan telah dihapus.

Sistem mengembalikan kesalahan dan mencatat pesan kesalahan.

Metrik Panggilan Balik

Saat panggilan balik gagal, Function Compute mencatat metrik yang sesuai dan menampilkannya di konsol. Anda dapat masuk ke Konsol Function Compute. Di panel navigasi sisi kiri, pilih Advanced Features > Monitoring Metrics. Di kolom Function Name, klik nama fungsi yang ingin Anda kelola.

Metrik

Deskripsi

FunctionDestinationErrors

Jumlah permintaan yang gagal memicu tujuan yang ditentukan selama eksekusi fungsi. Statistik dikumpulkan setiap menit atau setiap jam.

FunctionDestinationSucceed

Jumlah permintaan yang berhasil memicu tujuan yang ditentukan selama eksekusi fungsi. Statistik dikumpulkan setiap menit atau setiap jam.

Untuk informasi lebih lanjut tentang metrik, lihat Metrik Pemantauan.

Tanya Jawab Umum

Bagaimana cara saya memicu pemanggilan asinkron suatu fungsi?

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

  • Masuk ke Konsol Function Compute, temukan fungsi yang diinginkan dan pilih Invoke the function in asynchronous mode di tab Tests.

    image

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

  • Gunakan Serverless Devs untuk mengonfigurasi pemanggilan asinkron. Atur nilai parameter invocation-type ke Async. Untuk informasi lebih lanjut, lihat Panggil fungsi.

  • Buat pemicu yang mendukung pemanggilan asinkron. Untuk informasi lebih lanjut, lihat Picu tugas menggunakan acara.

  • Picu melalui HTTP atau domain kustom. Dalam hal ini, atur header permintaan X-Fc-Invocation-Type ke Async. Sebagai contoh:

    curl -v -H "X-Fc-Invocation-Type: Async" https://example.cn-shenzhen.fcapp.run/$path

Apa yang Harus Dilakukan Selanjutnya

Jika Anda ingin mendapatkan informasi status setiap fase dari permintaan asinkron, Anda dapat mengaktifkan mode tugas. Untuk informasi lebih lanjut, lihat Tugas Asinkron.