Memahami Cloud Tasks

Halaman ini menjelaskan apa yang dimaksud dengan tugas dan task queue Cloud Tasks, serta kapan dan cara menggunakannya. Cloud Tasks memungkinkan Anda memisahkan bagian-bagian pekerjaan yang dapat dilakukan secara independen, di luar alur aplikasi utama, dan mengirimkannya untuk diproses secara asinkron, menggunakan pengendali yang Anda buat. Bagian pekerjaan independen ini disebut tugas. Misalnya, Anda perlu memperbarui database sebagai bagian dari pemrosesan permintaan pengguna, tetapi pembaruan dapat memerlukan waktu. Dengan memindahkan detail tersebut sebagai tugas, Anda dapat kembali dari permintaan dengan lebih cepat.

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

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

Tugas itu sendiri terdiri dari nama unik dan informasi konfigurasi, dan, secara opsional, data apa pun 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 ke pekerja
  • Mempertahankan permintaan dalam konteks insiden produksi yang tidak terduga
  • Membantu memperlancar lonjakan traffic dengan menghapus tugas yang tidak ditampilkan kepada pengguna dari alur pengguna utama
  • Mengelola tarif panggilan API pihak ketiga

Antrean Cloud Tasks dengan target HTTP

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

Antrean berbasis HTTP

Target harus mengelola pekerja penskalaan dan membersihkan tugas setelah selesai.

Jika target Anda memerlukan autentikasi, Anda harus menyiapkan dua akun layanan, satu untuk aplikasi, klien, dan satu untuk antrean itu sendiri. Kedua akun tersebut 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 generasi kedua lingkungan standar App Engine
  • Lingkungan fleksibel App Engine

Pengguna runtime generasi pertama App Engine yang saat ini menggunakan Task Queue API dapat bermigrasi ke Cloud Tasks. Untuk mempelajari caranya, lihat Bermigrasi dari paket layanan lama. Pengguna runtime generasi pertama App Engine yang tidak menggunakan layanan tugas paket dapat mengupgrade ke runtime generasi kedua untuk menggunakan Cloud Tasks.

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

Tugas dirutekan berdasarkan cara tugas (atau, lebih jarang, antrean itu sendiri) dikonfigurasi. Antrean mengirim permintaan dengan kecepatan yang andal dan dapat dikonfigurasi. Fungsi ini menjamin eksekusi tugas yang andal - setelah berhasil, semua pekerja harus mengirim kode respons HTTP (200-299) ke layanan Cloud Tasks, dalam hal 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 ulang.

Antrean berbasis App Engine

Karena pengendali adalah bagian dari App Engine, layanan Cloud Tasks itu sendiri dapat melakukan sebagian besar pengelolaan proses untuk tugas, menskalakan pekerja ke atas dan ke bawah sehubungan dengan traffic, serta menghapus tugas saat tugas tersebut 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, yang berarti 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 Anda dapat menonaktifkan 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 sangat tersedia dan tahan lama.
  5. Tugas diteruskan ke pekerja.
  6. Worker memproses tugas.
  7. Untuk menyelesaikan urutan, pekerja menampilkan kode status keberhasilan 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 rasio penayangan
  • Mengonfigurasi perilaku percobaan ulang
  • Mengakses dan mengelola setiap tugas dalam antrean
  • Mengaktifkan penghapusan duplikat tugas

Persyaratan

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

Istilah Definisi
antrean Kumpulan tugas dengan jenis target yang sama yang dikelola oleh satu konfigurasi.
jenis target Tempat dan cara tugas diproses.
pekerja Layanan yang memproses tugas.
percobaan Upaya untuk menjalankan tugas.
mencoba pengiriman Momen saat Cloud Tasks telah mengirim tugas ke targetnya.
respons upaya Respons dari pekerja yang menunjukkan bahwa pekerjaan yang terkait dengan tugas berhasil atau gagal diselesaikan.
coba lagi Beberapa upaya untuk menjalankan tugas. Jumlah percobaan ulang ditetapkan melalui RetryConfig.
batas kapasitas Batas kapasitas untuk antrean.

Metrik

Metrik Google Tasks standar berikut tersedia menggunakan Cloud Monitoring.

Jenis metrik
Nama tampilan
Jenis, Tipe, Unit
Deskripsi
Label
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 percobaan tugas
DELTA, INT64, 1
Jumlah tugas yang telah dicoba dikirim oleh antrean, yang dikelompokkan berdasarkan 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 percobaan terjadwal dan waktu percobaan yang sebenarnya.