Untuk pemanggilan fungsi asinkron, Anda dapat mengaktifkan mode tugas guna memproses permintaan. Mode ini memungkinkan pelacakan dan penyimpanan status setiap tahap pemanggilan, sehingga memberikan kontrol dan observabilitas yang lebih baik. Topik ini menjelaskan latar belakang, keterbatasan, serta fitur-fitur tugas asinkron.
Latar Belakang
Setelah mengaktifkan tugas asinkron, Anda dapat:
Mencatat transisi status secara rinci, seperti Enqueued, Succeeded, dan Failed, untuk setiap pemanggilan fungsi.
Mengelola siklus hidup permintaan fungsi, termasuk menghentikan tugas asinkron yang sedang berjalan.
Tugas asinkron menyimpan informasi status dengan menambahkan latensi minimal pada pemanggilan dan eksekusi fungsi. Anda tidak dikenai biaya atas latensi tersebut. Untuk informasi selengkapnya tentang penagihan Function Compute, lihat Ikhtisar penagihan.
Keterbatasan
Keterbatasan kasus penggunaan
Tugas asinkron menawarkan lebih banyak fitur tetapi juga menimbulkan overhead sistem. Kami menyarankan untuk menonaktifkan mode tugas dalam skenario berikut:
Aplikasi Anda sangat sensitif terhadap latensi end-to-end permintaan dan memerlukan latensi rata-rata kurang dari 100 ms.
Anda perlu melakukan pemanggilan asinkron dengan laju ribuan permintaan per detik (RPS) atau lebih tinggi.
Keterbatasan wilayah
Tugas asinkron didukung di wilayah-wilayah berikut: Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Qingdao), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Ulanqab), Tiongkok (Shenzhen), Tiongkok (Chengdu), Tiongkok (Hong Kong), Singapura, Inggris (London), AS (Silicon Valley), AS (Virginia), Jerman (Frankfurt), Malaysia (Kuala Lumpur), Indonesia (Jakarta), Thailand (Bangkok), Jepang (Tokyo), dan Korea Selatan (Seoul).
Periode retensi
Anda dapat mengkueri status tugas yang dibuat dalam 7 hari terakhir.
Perbandingan dengan pekerjaan Kubernetes
Untuk menjalankan tugas asinkron, Anda dapat menggunakan fitur tugas asinkron Function Compute atau pekerjaan Kubernetes. Function Compute menyediakan platform siap pakai berarsitektur tanpa server untuk menjalankan tugas asinkron yang lebih efisien, terkontrol, dan mudah diamati. Tabel berikut membandingkan kedua metode tersebut.
Fitur | Tugas Function Compute | Pekerjaan Kubernetes |
Kasus penggunaan | Cocok untuk tugas real-time yang berlangsung puluhan milidetik maupun tugas offline yang berlangsung puluhan jam. | Cocok untuk tugas offline dengan workload tetap dan kebutuhan rendah terhadap kecepatan pengiriman serta performa real-time. |
Observabilitas tugas | Didukung. Menyediakan fitur observabilitas lengkap, termasuk log, metrik seperti jumlah tugas dalam antrian, durasi jalur tugas, dan kueri status tugas. | Memerlukan integrasi manual perangkat lunak open source. |
Scaling otomatis instans tugas | Didukung. Secara otomatis menskalakan instans berdasarkan jumlah tugas dalam antrian dan pemanfaatan sumber daya. | Memerlukan implementasi scaling dan load balancing secara manual dengan antrian tugas, yang menambah kompleksitas. |
Kecepatan penskalaan instance | Tingkat milidetik. | Tingkat menit. |
Pemanfaatan sumber daya instans | Anda hanya perlu memilih tipe instans yang sesuai. Instans diskalakan secara otomatis, dan Anda ditagih berdasarkan durasi pemrosesan tugas aktual, sehingga menghasilkan pemanfaatan sumber daya yang tinggi. | Anda harus menentukan tipe dan jumlah instans saat mengirimkan pekerjaan. Auto scaling dan load balancing sulit diimplementasikan, sehingga mengakibatkan pemanfaatan sumber daya yang rendah. |
Throughput pengiriman tugas | Satu pengguna dapat mengirimkan puluhan ribu tugas per detik. | Satu kluster dapat memulai maksimal beberapa ratus pekerjaan per detik. |
Pengiriman terjadwal atau tertunda | Didukung. | Menyokong pengiriman terjadwal tetapi tidak mendukung pengiriman tertunda. |
Deduplikasi tugas | Didukung. | Tidak didukung. |
Jeda atau lanjutkan eksekusi tugas | Didukung. | Hanya didukung di Kubernetes 1.21 dan versi setelahnya. |
Hentikan tugas tertentu | Didukung. | Dukungan terbatas. Tugas dihentikan secara tidak langsung dengan menghentikan instans tugas. |
Pembatasan kecepatan tugas | Didukung. Pembatasan kecepatan dapat dikonfigurasi pada granularitas berbeda, seperti tingkat pengguna atau fungsi. | Tidak didukung. |
Callback hasil otomatis | Didukung. | Tidak didukung. |
Biaya pengembangan dan O&M | Anda hanya perlu mengimplementasikan logika pemrosesan tugas. | Memerlukan pemeliharaan kluster Kubernetes. |
Manajemen tugas
Status tugas asinkron
Untuk setiap pemanggilan tugas, Function Compute mencatat transisi status dan memungkinkan kueri status secara real-time. Anda dapat melihat status spesifik suatu tugas dengan menggunakan SDK atau Konsol Function Compute. Suatu tugas dapat berada dalam salah satu status berikut:
Status | Deskripsi |
Enqueued | Pesan asinkron sedang dalam antrian dan menunggu diproses. |
Processed | Pesan asinkron telah dikeluarkan dari antrian dan menunggu pemanggilan. |
Running | Tugas sedang dieksekusi pada sebuah instans. |
Succeeded | Tugas berhasil diselesaikan. |
Failed | Tugas gagal. |
Stopped | Tugas telah dihentikan secara manual. |
Stopping | Sistem sedang memproses permintaan manual untuk menghentikan tugas. |
Expired | Waktu hidup (TTL) pesan telah habis sebelum sempat diproses, sehingga pesan tersebut dibuang. |
Invalid | Tugas tidak dapat dieksekusi dan kini berada dalam status tidak valid, misalnya karena fungsi atau layanan telah dihapus. |
Retrying | Pemanggilan asinkron sedang dicoba ulang karena terjadi kesalahan eksekusi. Setelah percobaan ulang dimulai, status akan berubah menjadi Running. |
Panggil operasi API GetAsyncTask untuk mendapatkan detail eksekusi tugas, atau panggil operasi API ListAsyncTasks untuk memfilter tugas berdasarkan status.
Kelola tugas
Konsol
Aktifkan tugas saat pembuatan fungsi
Login ke Konsol Function Compute. Di panel navigasi kiri, pilih .
Di bilah navigasi atas, pilih wilayah. Pada halaman Function, klik Create Function.
Pada kotak dialog pop-up, pilih Task Function dan klik Create {title}. Pada halaman Create {title}, atur nama fungsi lalu klik Create.
Untuk informasi selengkapnya tentang parameter konfigurasi, lihat Buat fungsi tugas.
Setelah fungsi dibuat, buka halaman detail fungsi dan klik tab Tasks. Mode tugas diaktifkan secara default.
Aktifkan tugas untuk fungsi yang sudah ada
Anda harus membuat fungsi terlebih dahulu. Untuk informasi selengkapnya, lihat Buat fungsi.
Login ke Konsol Function Compute. Di panel navigasi kiri, pilih .
Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi target.
Pada halaman detail fungsi, klik tab Tasks, lalu klik Modify di samping Task Mode.
Pada panel Task Mode, atur Task Mode ke Disable dan klik Deploy.
Memulai atau menghentikan Tugas
Login ke Konsol Function Compute. Di panel navigasi kiri, pilih .
Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi target.
Pada halaman detail fungsi, klik tab Tasks, lalu klik Submit Task. Pada kotak dialog yang muncul, pilih metode pembuatan ID tugas dan tentukan waktu eksekusi tugas, lalu klik OK.
Anda juga dapat mengklik ikon panah
di samping Submit Task dan memilih Configure Test Parameters dari daftar drop-down. Untuk fungsi event, parameter dilewatkan sebagai muatan event. Untuk fungsi HTTP, parameter dilewatkan sebagai parameter HTTP untuk mensimulasikan pengiriman tugas.Pada daftar tugas di bawah, Anda dapat melihat Task Status, Task ID, dan Instance ID. Anda juga dapat login ke instans tersebut.
API
Konfigurasi mode tugas
Untuk mengaktifkan mode tugas, panggil operasi API PutFunctionAsyncInvokeConfig dan atur parameter asyncTask ke true. Semua pemanggilan asinkron berikutnya untuk fungsi tersebut akan menggunakan mode tugas.
{
"asyncTask": true
}Meskipun mode tugas telah diaktifkan, Anda tetap dapat memanggil fungsi secara sinkron. Mode tugas hanya berlaku untuk pemanggilan asinkron.
Picu fungsi secara asinkron
Untuk memicu tugas asinkron, panggil operasi API InvokeFunction dan atur header x-fc-invocation-type ke Async. Untuk menetapkan ID tugas kustom, sertakan header HTTP x-fc-async-task-id dalam permintaan. Untuk informasi selengkapnya, lihat Deduplikasi tugas.
Lihat tugas
Setelah mengirimkan tugas, Anda dapat memanggil operasi API GetAsyncTask untuk mengkueri status atau catatan eksekusinya.
Jika Anda perlu menemukan tugas yang sesuai dengan kata kunci atau kondisi tertentu, Anda dapat memanggil operasi API ListAsyncTasks.
Hentikan tugas
Untuk menghentikan tugas yang sedang berjalan, panggil operasi API StopAsyncTask dengan TaskID-nya. Anda dapat menggunakan TaskID kustom yang Anda berikan atau menemukan ID tersebut dengan memanggil operasi API ListAsyncTasks.
Pemicu event
Anda dapat memicu tugas asinkron dengan membuat pemicu yang mendukung pemanggilan asinkron. Pemicu berikut mendukung fitur ini:
Pemicu yang terintegrasi dengan EventBridge, termasuk:
PentingPastikan bahwa Invocation Method untuk pemicu HTTP dan pemicu yang terintegrasi dengan EventBridge diatur ke Async Invocation.
Deduplikasi tugas
Untuk mencegah eksekusi ganda, Function Compute memungkinkan Anda menetapkan ID unik global untuk setiap tugas. Jika pengiriman tugas gagal, misalnya karena timeout, Anda dapat mencoba ulang permintaan tersebut dengan aman menggunakan ID tugas yang sama. Untuk informasi selengkapnya tentang perilaku percobaan ulang, lihat kebijakan retry.
Function Compute menggunakan TaskID unik global untuk deduplikasi. Kami menyarankan agar Anda menentukan TaskID untuk setiap pengiriman tugas dan menggunakannya untuk percobaan ulang jika terjadi timeout atau kegagalan lainnya. Function Compute menolak pengiriman berikutnya dengan TaskID duplikat dengan error 409.
Function Compute juga menyediakan konsep RequestID. Jika Anda menetapkan RequestID tetapi tidak menetapkan TaskID, sistem secara otomatis menetapkan TaskID ke RequestID. Saat menggunakan tugas asinkron, kami menyarankan agar Anda menetapkan TaskID tanpa menetapkan RequestID.
Tetapkan TaskID
Anda dapat mengirimkan tugas dari Function Compute console, menggunakan Serverless Devs, atau dengan memanggil operasi API. Untuk menetapkan TaskID, tentukan header x-fc-async-task-id dalam permintaan pemanggilan.
Untuk contoh kode cara menetapkan TaskID saat memicu tugas, lihat Contoh Kode (Situs Internasional).
Pemantauan tugas
Anda dapat menggunakan metrik pemantauan yang disediakan oleh Function Compute untuk mendapatkan pembaruan status real-time untuk tugas asinkron serta segera mendeteksi kesalahan, timeout, dan pengecualian lainnya.
Prasyarat
Fungsi telah dibuat. Untuk informasi selengkapnya, lihat Buat fungsi.
Prosedur
Login ke Konsol Function Compute. Di panel navigasi kiri, pilih .
Di bilah navigasi atas, pilih wilayah. Pada halaman Function, klik fungsi target.
Pada halaman detail fungsi, klik tab Monitoring untuk melihat metrik terkait pemanggilan asinkron dan penggunaan sumber daya untuk instans tugas asinkron. Untuk informasi selengkapnya tentang metrik pemantauan, lihat Metrik pemantauan.
Klik tab Function Metrics untuk melihat metrik terkait pemanggilan asinkron, seperti Asynchronous Invocation Processing (count), Asynchronous Invocation Processing Latency (ms), Asynchronous Invocation Trigger Events (count), dan Asynchronous Requests Backlogs (count).
Klik tab Instance Metrics untuk melihat penggunaan sumber daya tingkat instans untuk tugas asinkron.
CatatanSebelum Anda dapat melihat metrik tingkat instans, Anda harus mengaktifkan fitur logging. Untuk informasi selengkapnya, lihat Konfigurasi logging.
Tetapkan aturan peringatan untuk metrik.
Untuk memantau metrik seperti penggunaan memori atau penggunaan vCPU, klik ikon lonceng
di pojok kanan atas grafik metrik. Anda akan diarahkan ke panel Buat Aturan Peringatan Berbasis Metrik. Atur kondisi peringatan dan ambang batas sesuai petunjuk, lalu klik OK.Gambar berikut menunjukkan contoh konfigurasi aturan peringatan. Dalam contoh ini, jika jumlah backlog pemanggilan asinkron untuk suatu fungsi lebih besar dari atau sama dengan 5, peringatan tingkat menengah dikirimkan 24/7 ke kontak yang ditentukan melalui DingTalk, email, telepon, dan webhook.

Orkestrasi tugas
Integrasikan dengan CloudFlow untuk menggunakan pemanggilan fungsi asinkron dalam alur kerja tugas kompleks berskala besar. Anda dapat menggunakan state seperti Pass, Map, dan Parallel untuk mengorkestrasikan tugas asinkron Function Compute. CloudFlow mengoordinasikan eksekusi secara andal sesuai langkah-langkah yang telah ditentukan, melacak transisi status setiap tugas, dan menerapkan logika retry Anda sesuai kebutuhan untuk memastikan alur kerja selesai dengan sukses. Untuk informasi selengkapnya, lihat Integrasi dengan Function Compute.
Prasyarat
Buat tugas asinkron. Untuk informasi selengkapnya, lihat Manajemen tugas.
Berikan akses CloudFlow ke Function Compute. Untuk informasi selengkapnya, lihat Gunakan role fungsi untuk memberikan izin Function Compute mengakses layanan cloud lainnya.
Prosedur
Login ke Konsol CloudFlow. Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, klik Workflows. Pada halaman Workflows, klik Create Workflow.
Pada kotak dialog Create Workflow, pilih metode dan mode pembuatan alur kerja.
CloudFlow mendukung dua mode alur kerja: Standard dan Express. Untuk informasi selengkapnya tentang kedua mode tersebut, lihat Alur kerja Standard dan Express. Untuk informasi selengkapnya tentang pembuatan alur kerja, lihat Buat alur kerja dari kanvas kosong.
Edit alur kerja yang baru saja Anda buat.
Definisikan alur.
Anda dapat menggunakan editor CloudFlow Studio atau editor YAML. Contoh ini menggunakan editor YAML.
Di pojok kanan atas halaman detail alur, klik YAML. Masukkan bahasa definisi alur di editor kode di sebelah kiri, lalu klik Save.
Berikut adalah contohnya:
Type: StateMachine Name: MyFlow SpecVersion: v1 StartAt: InvokeFunction States: - Type: Task Name: InvokeFunction Action: FC:InvokeFunction TaskMode: RequestComplete Parameters: invocationType: Async resourceArn: acs:fc:us-west-1:103435468****:functions/func-i1****/LATEST End: trueKonfigurasikan peran eksekusi.
Di pojok kanan atas halaman detail alur, klik Configure Workflow. Pilih Execution Role, lalu klik Save.
CatatanPastikan role yang Anda konfigurasikan untuk alur dilengkapi kebijakan AliyunFCInvocationAccess.
Pada halaman detail alur, Anda dapat mengklik Execute di pojok kanan atas untuk menguji alur kerja.