Halaman ini menjelaskan cara mengonfigurasi antrean Cloud Tasks menggunakan perintah gcloud
dari Google Cloud CLI.
Ringkasan
Anda dapat mengonfigurasi antrean Cloud Tasks saat Anda membuat antrean atau kapan saja setelahnya, dan konfigurasi akan diterapkan ke semua tugas dalam antrean tersebut.
Ada tiga aspek dasar dalam mengonfigurasi antrean:
Pemilihan rute level antrean
Mengonfigurasi perutean pada tingkat antrean akan menggantikan perutean yang ditetapkan di tingkat tugas. Hal ini berguna jika Anda ingin menggunakan Cloud Tasks sebagai buffer di depan layanan target, atau jika Anda perlu mengubah pemilihan rute untuk semua tugas dalam antrean.
Perutean tingkat antrean berlaku untuk:
- Tugas yang saat ini dalam antrean
- Tugas yang ditambahkan ke antrean setelah perutean tingkat antrean ditetapkan
Batasan
Pemilihan rute level antrean tidak kompatibel dengan kunci enkripsi yang dikelola pelanggan (CMEK) Cloud Key Management Service (Cloud KMS). Jika CMEK diaktifkan, Anda tidak dapat:
- Membuat tugas pada antrean yang memiliki perutean tingkat antrean
- Menerapkan pemilihan rute tingkat antrean
Mengonfigurasi pemilihan rute tingkat antrean untuk tugas HTTP
Menerapkan pemilihan rute tingkat antrean
Anda dapat mengonfigurasi antrean untuk mengganti perutean tingkat tugas saat membuat antrean atau memperbarui antrean. Untuk mengonfigurasi pemilihan rute tingkat antrean, tetapkan parameter uriOverride
antrean ke rute yang Anda pilih. Jika Anda menerapkan perutean tingkat antrean sebagai update pada antrean yang ada, jeda antrean sebelum menerapkan perubahan, lalu tunggu satu menit setelah menerapkan perubahan untuk melanjutkan antrean. Diperlukan waktu hingga satu menit agar konfigurasi baru diterapkan, jadi menunggu untuk melanjutkan antrean membantu mencegah tugas dikirim dengan konfigurasi lama.
Memperbarui atau menghapus pemilihan rute tingkat antrean
Jeda antrean.
Konsol
Untuk menjeda antrean menggunakan Konsol Google Cloud:
Buka halaman antrean Cloud Tasks di konsol.
Pilih nama antrean yang ingin dijeda, lalu klik Jeda antrean.
Konfirmasi tindakan.
gcloud
gcloud tasks queues pause QUEUE_ID
Ganti
QUEUE_ID
dengan ID antrean Anda.Perbarui atau hapus pemilihan rute tingkat antrean.
Untuk memperbarui pemilihan rute tingkat antrean, tetapkan parameter
uriOverride
ke rute yang diperbarui.Untuk menghapus perutean tingkat antrean menggunakan REST atau RPC API:
REST API: Kirim permintaan
patch
untuk antrean dengan payload kosong dan parameterupdateMask
yang ditetapkan kehttpTarget
.RPC API: Kirim
updateQueueRequest
untuk antrean dengan payload kosong dan parameterupdate_mask
yang ditetapkan kehttp_target
.
Contoh berikut menggunakan REST API untuk mengupdate tugas host yang dirutekan:
curl -X PATCH -d @- -i \ -H "Authorization: Bearer ACCESS_TOKEN" \ -H "Content-Type: application/json" \ "https://cloudtasks.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/queues/QUEUE_ID?updateMask=httpTarget.uriOverride" << EOF { "httpTarget": {"uriOverride":{"host":"NEW_HOST"}} } EOF
Ganti kode berikut:
PROJECT_ID
: ID project Google Cloud Anda. Anda bisa mendapatkannya dengan menjalankan perintah berikut di terminal Anda:gcloud config get-value project
LOCATION
: Lokasi antrean Anda.QUEUE_ID
: ID antrean Anda.ACCESS_TOKEN
: Token akses Anda. Anda bisa mendapatkannya dengan menjalankan perintah berikut di terminal:gcloud auth application-default login
gcloud auth application-default print-access-token
NEW_HOST
: Host baru yang menjadi tujuan rute antrean Anda.
Tunggu satu menit.
Diperlukan waktu hingga satu menit agar konfigurasi baru diterapkan, sehingga menunggu untuk melanjutkan antrean membantu mencegah tugas dikirim dengan konfigurasi lama.
Lanjutkan antrean.
Konsol
Untuk melanjutkan antrean menggunakan Konsol Google Cloud:
Buka halaman antrean Cloud Tasks di konsol.
Pilih nama antrean yang ingin dijeda, lalu klik Lanjutkan antrean.
Konfirmasi tindakan.
gcloud
gcloud tasks queues resume QUEUE_ID
Ganti
QUEUE_ID
dengan ID antrean Anda.
Mengonfigurasi pemilihan rute tingkat antrean untuk tugas App Engine
Agar dapat mengonfigurasi perutean tingkat antrean untuk tugas-tugas App Engine, tetapkan parameter appEngineRoutingOverride
antrean ke layanan dan versi App Engine pilihan Anda.
Untuk menyiapkan perutean tingkat antrean non-default ini dan mengganti perutean tingkat tugas apa pun, Anda dapat menggunakan gcloud
:
gcloud tasks queues update QUEUE_ID\ --routing-override=service:SERVICE,version:VERSION
Ganti kode berikut:
SERVICE
: layanan pekerja App Engine yang bertanggung jawab untuk penanganan tugas.VERSION
: versi aplikasi.
Misalnya, jika Anda menyiapkan layanan pekerja SERVICE untuk menangani semua tugas dalam antrean, Anda dapat mengarahkan rute ke layanan tersebut dan versi default-nya:
gcloud tasks queues update QUEUE_ID \ --routing-override=service:SERVICE
Jelaskan antrean:
gcloud tasks queues describe QUEUE_ID --location=LOCATION
Ganti kode berikut:
QUEUE_ID
: ID antrean (nama pendeknya)LOCATION
: lokasi antrean
Output-nya akan terlihat seperti ini:
appEngineRoutingOverride: host: SERVICE.PROJECT_ID.appspot.com service: SERVICE name: projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID rateLimits: maxBurstSize: 100 maxConcurrentDispatches: 1000 maxDispatchesPerSecond: 500.0 retryConfig: maxAttempts: 100 maxBackoff: 3600s maxDoublings: 16 minBackoff: 0.100s state: RUNNING
Menghapus pemilihan rute tingkat antrean untuk target App Engine
Jika perutean tingkat antrean dihapus, perutean tingkat tugas berlaku untuk tugas yang saat ini berada dalam antrean dan tugas yang ditambahkan ke antrean di masa mendatang. Untuk menghapus perutean tingkat antrean, jalankan perintah berikut:
gcloud tasks queues update QUEUE_ID \ --clear-routing-override
Menentukan batas kapasitas
Anda dapat menetapkan tingkat maksimum dan jumlah tugas serentak yang dapat dikirim oleh antrean.
gcloud tasks queues update QUEUE_ID \ --max-dispatches-per-second=DISPATCH_RATE \ --max-concurrent-dispatches=MAX_RUNNING
Ganti kode berikut:
DISPATCH_RATE
: rasio pengiriman (ini adalah tarif saat token di bucket dimuat ulang). Dalam kondisi dengan aliran tugas yang relatif stabil, ini sama dengan tingkat pengiriman tugas.MAX_RUNNING
: jumlah tugas maksimum dalam antrean yang dapat dijalankan sekaligus.
Misalnya, jika membuat antrean tanpa menetapkan parameter apa pun, Anda dapat memperbarui jumlah maksimum tugas serentak dengan memanggil:
gcloud tasks queues update QUEUE_ID \ --max-concurrent-dispatches=MAX_CONCURRENT_DISPATCHES
Describe
antrean:
gcloud tasks queues describe QUEUE_ID --location=LOCATION
Ganti kode berikut:
QUEUE_ID
: ID antrean (nama pendeknya)LOCATION
: lokasi antrean
Output harus berupa:
name: projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID rateLimits: maxBurstSize: 100 maxConcurrentDispatches: MAX_CONCURRENT_DISPATCHES maxDispatchesPerSecond: 500.0 retryConfig: maxAttempts: 100 maxBackoff: 3600s maxDoublings: 16 minBackoff: 0.100s state: RUNNING
Menentukan kecepatan pemrosesan menggunakan perintah gcloud
dibandingkan menggunakan queue.yaml
Pendekatan Cloud Tasks API untuk menentukan kecepatan pemrosesan antrean sedikit berbeda dengan pendekatan yang diambil menggunakan upload file queue.yaml
, meskipun kedua metode tersebut menghasilkan antrean menggunakan mekanisme dasar yang sama.
Dalam kedua kasus tersebut, antrean menggunakan algoritma token bucket untuk mengontrol kecepatan eksekusi tugas. Setiap antrean bernama memiliki bucket yang menyimpan tokennya.
Setiap kali aplikasi Anda menjalankan sebuah tugas, token akan dihapus dari bucket.
Antrean akan terus memproses tugas sampai bucket-nya kehabisan token. Sistem akan mengisi ulang bucket dengan token baru secara terus-menerus berdasarkan tarif max_dispatches_per_second
yang Anda tentukan untuk antrean. Jika antrean Anda berisi tugas untuk diproses, dan bucket antrean berisi token, sistem secara bersamaan akan memproses tugas sebanyak jumlah token yang ada, hingga nilai max_concurrent_dispatches
yang telah Anda tetapkan.
Beban yang tidak merata dapat menyebabkan jumlah token dalam bucket meningkat secara signifikan, yang dapat menyebabkan burst pemrosesan saat burst permintaan masuk. Dalam
hal ini, antrean Anda mungkin mengalami tingkat pengiriman sebenarnya yang
melebihi kecepatan max_dispatches_per_second
, menghabiskan resource sistem, dan
bersaing dengan permintaan layanan pengguna. Jika Anda menggunakan antrean untuk mengelola kecepatan pengiriman berdasarkan SLA yang relatif lambat untuk layanan downstream, hal ini dapat menyebabkan error seperti HTTP 429
(Terlalu Banyak Permintaan) atau 503
(Layanan Tidak Tersedia).
Saat menggunakan metode Cloud Tasks API, Anda memiliki dua kolom untuk menentukan tingkat pengiriman antrean:
max_dispatches_per_second
max_concurrent_dispatches
Kolom ketiga,
max_burst_size
, dihitung oleh sistem berdasarkan nilai yang Anda tetapkan untuk
max_dispatches_per_second
.
Saat menggunakan metode queue.yaml
, Anda dapat menetapkan ketiga elemen:
max_concurrent_requests
, yang setara denganmax_concurrent_dispatches
rate
, yang setara denganmax_dispatches_per_second
bucket_size
, yang setara denganmax_burst_size
Dalam sebagian besar kasus, penggunaan metode Cloud Tasks API dan mengizinkan sistem menyetel max_burst_size
akan menghasilkan tingkat yang sangat efisien untuk mengelola burst permintaan. Namun, dalam beberapa kasus, terutama jika rasio yang diinginkan relatif lambat, baik menggunakan metode queue.yaml
untuk menetapkan bucket_size
secara manual ke nilai kecil, maupun menetapkan max_concurrent_dispatches
ke nilai kecil melalui Cloud Tasks API dapat memberi Anda lebih banyak kontrol.
Setel parameter percobaan ulang
Jika tugas tidak berhasil diselesaikan, Cloud Tasks akan mencoba kembali tugas tersebut dengan backoff eksponensial sesuai dengan parameter yang telah Anda tetapkan. Anda dapat menentukan frekuensi maksimum percobaan ulang tugas yang gagal dalam antrean, menetapkan batas waktu untuk percobaan ulang, dan mengontrol interval antar-percobaan.
gcloud tasks queues update QUEUE_ID \ --max-attempts=MAX_ATTEMPTS \ --min-backoff=MIN_INTERVAL \ --max-backoff=MAX_INTERVAL \ --max-doublings=MAX_DOUBLINGS \ --max-retry-duration=MAX_RETRY_DURATION
Ganti kode berikut:
MAX_ATTEMPTS
: jumlah maksimum percobaan untuk suatu tugas, termasuk upaya pertama. Anda dapat mengizinkan percobaan ulang tanpa batas dengan menetapkan tanda ini keunlimited
.MIN_INTERVAL
: jumlah waktu tunggu minimum untuk menunggu antar-upaya percobaan ulang. Nilai harus berupa string yang diakhiri dengan "s", seperti5s
.MAX_INTERVAL
: jumlah waktu tunggu maksimum di antara upaya percobaan ulang. Nilai harus berupa string yang diakhiri dengan "s", seperti5s
.MAX_DOUBLINGS
: jumlah maksimum interval antara percobaan ulang tugas yang gagal akan dilipatgandakan sebelum peningkatan menjadi konstan.MAX_RETRY_DURATION
: jumlah waktu maksimum untuk mencoba lagi tugas yang gagal, yang diukur dari saat tugas tersebut pertama kali dicoba. Nilai harus berupa string yang diakhiri dengan "s", seperti5s
.
Pastikan antrean Anda berhasil dikonfigurasi:
gcloud tasks queues describe QUEUE_ID --location=LOCATION
Ganti kode berikut:
QUEUE_ID
: ID antrean (nama pendeknya)LOCATION
: lokasi antrean
Langkah selanjutnya
- Pelajari cara membuat tugas Target HTTP.
- Pelajari cara membuat tugas App Engine.
- Pelajari cara menyiapkan Cloud Logging
- Pelajari lebih lanjut pengelolaan antrean di referensi RPC API.
- Pelajari lebih lanjut tentang pengelolaan antrean di referensi REST API.
- Lihat daftar lengkap perintah
gcloud
Cloud Tasks.