Memahami Cloud Tasks

Halaman ini menjelaskan apa itu tugas dan antrean Cloud Tasks, serta kapan dan cara menggunakannya. Cloud Tasks memungkinkan Anda memisahkan tugas-tugas yang dapat dijalankan secara independen, di luar alur aplikasi utama, dan mengirimkannya untuk diproses secara asinkron menggunakan pengendali yang Anda buat. Karyawan independen ini disebut tugas. Misalnya, Anda perlu memperbarui database sebagai bagian dari pemrosesan permintaan pengguna, tetapi pembaruan dapat memakan waktu. Dengan mengurangi pemuatan detail tersebut sebagai tugas, Anda dapat kembali dari permintaan dengan lebih cepat.

Tugas yang dialihkan akan ditambahkan ke antrean, yang mempertahankan tugas hingga berhasil dieksekusi. Berdasarkan konfigurasi awal Anda, antrean juga dapat bertindak sebagai kontrol alur pengiriman. Anda akan membuat dan mengonfigurasi antrean yang kemudian dikelola oleh layanan Cloud Tasks. Setelah tugas ditambahkan, antrean akan mengirimkannya dan memastikan tugas tersebut diproses dengan andal oleh pekerja Anda. Kompleksitas yang terkait dengan proses tersebut, seperti biaya latensi yang ditampilkan kepada pengguna, error server, batasan konsumsi resource, dan pengelolaan percobaan ulang, ditangani oleh layanan ini.

Cloud Tasks dirancang untuk memberikan pengiriman "minimal satu kali". Artinya, jika tugas berhasil ditambahkan, antrean akan mengirimkannya setidaknya satu kali. Dalam beberapa situasi yang jarang terjadi, beberapa eksekusi tugas dapat dilakukan, sehingga kode Anda harus memastikan bahwa tidak ada efek samping berbahaya dari eksekusi berulang. Pengendali Anda harus idempoten.

Tugas itu sendiri terdiri dari nama unik dan informasi konfigurasi dan, secara opsional, data dari permintaan awal, yang disebut payload, yang diperlukan untuk memproses permintaan. Karena payload dikirim dalam isi permintaan, tugas yang menyertakan payload harus menggunakan POST atau PUT sebagai metode HTTP-nya.

Untuk mengakses layanan Cloud Tasks menggunakan Cloud Tasks API , Anda harus memiliki project Google Cloud.

Kasus penggunaan

Kasus penggunaan umum meliputi:

  • Mempercepat waktu respons pengguna dengan mendelegasikan operasi latar belakang yang berpotensi lambat, seperti update database kepada pekerja
  • Mempertahankan permintaan dalam konteks insiden produksi yang tidak terduga
  • Membantu lonjakan traffic yang lancar dengan menghapus tugas yang tidak berhubungan langsung dengan pengguna dari alur pengguna utama
  • Mengelola tarif panggilan API pihak ketiga

Antrean Cloud Tasks dengan target HTTP

Dalam kasus Target HTTP umum, layanan Cloud Tasks meneruskan permintaan tugas ke pekerja, yang terletak di endpoint HTTP umum, berdasarkan cara tugas dikonfigurasi. Endpoint ini dapat berada di Cloud Functions, Cloud Run, GKE, Compute Engine, atau bahkan server web lokal, berdasarkan cara tugas dikonfigurasi. Antrean ini mengirim permintaan dengan kecepatan yang dapat diandalkan dan dapat dikonfigurasi. Kedua cara ini menjamin eksekusi tugas yang andal. Setelah berhasil, semua pekerja harus mengirim kode respons HTTP (200-299) ke layanan Cloud Tasks sebelum batas waktu default 10 menit, dengan maksimum 30 menit. Jika respons yang berbeda dikirim, atau tidak ada respons, tugas akan dicoba lagi.

Antrean berbasis HTTP

Target harus mengelola penskalaan pekerja dan membersihkan tugas setelah selesai.

Jika target memerlukan autentikasi, Anda harus menyiapkan dua akun layanan, satu untuk aplikasi, klien, dan satu untuk antrean itu sendiri. Kedua akun harus telah diberi izin yang diperlukan, dan ID untuk akun layanan klien harus disertakan dalam permintaan tugas. Lihat Membuat tugas Target HTTP untuk mengetahui informasi selengkapnya.

Antrean Cloud Tasks dengan target App Engine

Cloud Tasks kompatibel dengan lingkungan App Engine berikut:

  • Runtime lingkungan standar App Engine generasi kedua
  • Lingkungan fleksibel App Engine

Pengguna runtime App Engine generasi pertama yang saat ini menggunakan Task Queue API dapat bermigrasi ke Cloud Tasks. Untuk mempelajari caranya, lihat Memigrasikan layanan paket lama. Pengguna runtime App Engine generasi pertama yang tidak menggunakan layanan tugas paket dapat melakukan upgrade ke runtime generasi kedua agar dapat menggunakan Cloud Tasks.

Untuk target App Engine, layanan Cloud Tasks juga meneruskan permintaan tugas ke pengendali, tetapi pekerja ini berada di dalam App Engine. Jadi, semua antrean yang menargetkan pengendali App Engine harus memiliki aplikasi App Engine. Pengendali harus dijalankan di region tempat aplikasi App Engine dijalankan. Region ini juga berfungsi sebagai parameter LOCATION_ID untuk permintaan Cloud Tasks Anda.

Tugas dirutekan berdasarkan cara tugas (atau, yang lebih jarang, antrean itu sendiri) dikonfigurasi. Antrean mengirimkan permintaan dengan kecepatan yang dapat diandalkan dan dapat dikonfigurasi. Mereka menjamin eksekusi tugas yang dapat diandalkan - setelah berhasil, semua pekerja harus mengirim kode respons HTTP (200-299) ke layanan Cloud Tasks, dalam instance ini sebelum batas waktu berdasarkan jenis penskalaan instance layanan: 10 menit untuk penskalaan otomatis atau hingga 24 jam untuk penskalaan manual. Jika respons yang berbeda dikirim, atau tidak ada respons, tugas akan dicoba lagi.

Antrean berbasis App Engine

Karena pengendali adalah bagian dari App Engine, layanan Cloud Tasks sendiri dapat melakukan banyak pengelolaan proses untuk tugas tersebut, dengan meningkatkan dan menurunkan skala pekerja sehubungan dengan traffic dan menghapus tugas saat selesai.

Wilayah yang didukung menurut target

Jika target Anda adalah endpoint HTTP/S, Cloud Tasks tersedia di semua region Google Cloud yang didukung untuk Cloud Tasks.

Jika target Anda adalah aplikasi App Engine yang berada dalam project saat ini:

  • Tugas yang menargetkan App Engine hanya dapat dibuat di region App Engine project.

  • Project Google Cloud hanya dapat berisi satu aplikasi App Engine, dan region tempat aplikasi App Engine berada tidak dapat diubah setelah aplikasi dibuat.

  • App Engine bersifat regional, artinya infrastruktur yang menjalankan aplikasi Anda terletak di region tertentu. Jika ingin mendistribusikan komputasi dan antrean di beberapa region, Anda harus menargetkan endpoint HTTP/S.

  • Jika tidak menggunakan App Engine sebagai target, Anda tidak perlu men-deploy aplikasi App Engine, dan dapat menonaktifkan semua aplikasi App Engine yang ada.

Workflows

Alur kerja umumnya adalah sebagai berikut:

  1. Anda membuat pekerja untuk memproses tugas.
  2. Anda membuat antrean.
  3. Anda membuat tugas secara terprogram dan menambahkannya ke antrean.
  4. Layanan Cloud Tasks menampilkan OK ke aplikasi asal. Hal ini menunjukkan bahwa tugas telah berhasil ditulis ke penyimpanan Cloud Tasks, sehingga permintaan pembuatan tugas memiliki ketersediaan yang tinggi dan tahan lama.
  5. Tugas diteruskan ke pekerja.
  6. Worker memproses tugas.
  7. Untuk menyelesaikan urutan, pekerja akan menampilkan kode status berhasil 2xx ke layanan Cloud Tasks.

Setelah tugas diserahkan ke antrean, tidak ada data yang tersedia untuk permintaan awal.

Fitur

Dengan Cloud Tasks, Anda dapat mengirim item pekerjaan asinkron dengan kontrol berikut:

  • Menjadwalkan waktu pengiriman tertentu
  • Mengelola tarif pengiriman
  • Mengonfigurasi perilaku percobaan ulang
  • Mengakses dan mengelola setiap tugas dalam antrean
  • Aktifkan penghapusan duplikat tugas

Persyaratan

Tabel berikut menampilkan istilah utama yang menjelaskan aspek perilaku Cloud Tasks.

Masa Berlaku Definisi
antrean Kumpulan tugas dengan jenis target yang sama yang dikelola oleh satu konfigurasi.
jenis target Di mana dan bagaimana tugas diproses.
pekerja Layanan yang memproses tugas.
mencoba Upaya untuk menjalankan tugas.
percobaan pengiriman Saat Cloud Tasks telah mengirimkan tugas ke targetnya.
respons percobaan Respons dari pekerja yang menunjukkan bahwa pekerjaan yang terkait dengan tugas berhasil atau gagal.
retry Upaya beberapa kali untuk menjalankan tugas. Jumlah percobaan ulang ditetapkan melalui RetryConfig.
batas kapasitas Batas kapasitas untuk antrean.

Metrik

Metrik Google Tasks yang telah ditentukan berikut tersedia menggunakan Cloud Monitoring.

Jenis metrik
Nama tampilan
Jenis, Jenis, Unit
Label
Deskripsi
api/request_count
Permintaan API
DELTA, INT64, 1
Jumlah panggilan Cloud Tasks API.
api_method: Metode API yang dipanggil (misalnya, CreateTask).
response_code: Kode respons kanonis sebagai string (misalnya, 'ok').
queue/depth
Kedalaman antrean BETA
GAUGE, INT64, 1
Jumlah tugas dalam antrean. Dibuat sampelnya setiap 60 detik. Setelah pengambilan sampel, data tidak akan terlihat selama maksimal 120 detik.
queue/task_attempt_count
Jumlah upaya tugas
DELTA, INT64, 1
Hitungan jumlah tugas yang coba dikirimkan oleh antrean, yang dipecah menurut kode respons tugas.
response_code: Kode respons kanonis sebagai string (misalnya, 'ok').
queue/task_attempt_delays
Penundaan upaya tugas
DELTA, DISTRIBUTION, ms
Penundaan antara setiap waktu upaya yang dijadwalkan dan waktu upaya sebenarnya.