Tutorial ini menunjukkan cara membuat antrean Cloud Tasks yang dapat mengatur kecepatan eksekusi alur kerja.
Ada jumlah maksimum eksekusi alur kerja aktif yang dapat terjadi secara bersamaan. Setelah kuota ini habis, dan jika
penumpukan eksekusi
dinonaktifkan, atau jika kuota untuk eksekusi yang tertunda telah tercapai, setiap eksekusi baru akan gagal dengan kode status HTTP 429 Too many requests
. Dengan mengaktifkan antrean Cloud Tasks untuk menjalankan alur kerja turunan pada kecepatan yang Anda tentukan, Anda dapat menghindari masalah terkait kuota Workflows dan mencapai kecepatan eksekusi yang lebih baik.
Perhatikan bahwa Cloud Tasks dirancang untuk memberikan pengiriman "setidaknya sekali"; namun, Workflows tidak memastikan pemrosesan permintaan duplikat yang tepat satu kali dari Cloud Tasks.
Dalam diagram berikut, alur kerja induk memanggil alur kerja turunan yang diatur oleh antrean Cloud Tasks yang menerapkan kecepatan pengiriman.
Membuat antrean Cloud Tasks
Buat antrean Cloud Tasks yang dapat Anda gunakan dalam alur kerja induk dan yang memungkinkan Anda mengatur kecepatan eksekusi alur kerja.
Konsol
Di konsol Google Cloud , buka halaman Cloud Tasks:
Klik
Buat antrean push.Masukkan Nama antrean,
queue-workflow-child
.Di daftar Region, pilih us-central1 (Iowa).
Klik Buat.
gcloud
QUEUE=queue-workflow-child LOCATION=us-central1 gcloud tasks queues create $QUEUE --location=$LOCATION
Membuat dan men-deploy alur kerja turunan
Alur kerja turunan dapat menerima dan memproses data dari alur kerja induk. Buat dan deploy alur kerja turunan yang melakukan hal berikut:
- Menerima
iteration
sebagai argumen - Tidur selama 10 detik untuk menyimulasikan beberapa pemrosesan
Menampilkan string setelah eksekusi berhasil
Konsol
Di konsol Google Cloud , buka halaman Workflows.
Klik
Buat.Masukkan nama,
workflow-child
, untuk alur kerja baru.Di daftar Region, pilih us-central1 (Iowa).
Dalam daftar Service account, pilih Compute Engine default service account.
Klik Berikutnya.
Di editor alur kerja, masukkan definisi berikut untuk alur kerja Anda:
Klik Deploy.
gcloud
Buat file kode sumber untuk alur kerja Anda:
touch workflow-child.yaml
Buka file kode sumber Anda di editor teks dan salin alur kerja berikut ke file.
Deploy alur kerja:
gcloud workflows deploy workflow-child \ --source=workflow-child.yaml \ --location=us-central1 \ --service-account=
PROJECT_NUMBER
-compute@developer.gserviceaccount.com
Membuat dan men-deploy alur kerja induk
Alur kerja induk menjalankan beberapa cabang alur kerja turunan menggunakan loop
for
.
Salin kode sumber yang menentukan alur kerja induk:
Alur kerja terdiri dari bagian berikut:
Peta yang digunakan untuk menetapkan konstanta yang merujuk ke alur kerja turunan dan nama antrean Cloud Tasks. Untuk mengetahui informasi selengkapnya, lihat bagian Maps.
Loop
for
yang dieksekusi untuk memanggil alur kerja turunan secara iteratif. Untuk mengetahui informasi selengkapnya, lihat Iterasi.Langkah alur kerja yang membuat dan menambahkan sejumlah besar tugas ke antrean Cloud Tasks untuk menjalankan alur kerja turunan. Untuk mengetahui informasi selengkapnya, lihat Konektor Cloud Tasks API.
Deploy alur kerja:
Konsol
Di konsol Google Cloud , buka halaman Workflows:
Klik
Buat.Masukkan nama,
workflow-parent
, untuk alur kerja baru.Di daftar Region, pilih us-central1 (Iowa).
Dalam daftar Service account, pilih Compute Engine default service account.
Klik Berikutnya.
Di editor alur kerja, tempelkan definisi untuk alur kerja induk.
Klik Deploy.
gcloud
Buat file kode sumber untuk alur kerja Anda:
touch workflow-parent.yaml
Buka file kode sumber Anda di editor teks dan tempel definisi untuk alur kerja induk.
Deploy alur kerja:
gcloud workflows deploy workflow-parent \ --source=workflow-parent.yaml \ --location=us-central1 \ --service-account=
PROJECT_NUMBER
-compute@developer.gserviceaccount.com
Menjalankan alur kerja induk tanpa batas kecepatan
Jalankan alur kerja induk untuk memanggil alur kerja turunan melalui antrean Cloud Tasks. Eksekusi akan memerlukan waktu sekitar 10 detik untuk diselesaikan.
Konsol
Di konsol Google Cloud , buka halaman Workflows:
Di halaman Workflows, klik alur kerja workflow-parent untuk membuka halaman detailnya.
Di halaman Workflow details, klik play_arrow Execute.
Klik Execute lagi.
Saat alur kerja induk berjalan, kembali ke halaman Workflows, lalu klik alur kerja workflow-child untuk membuka halaman detailnya.
Klik tab Executions.
Anda akan melihat eksekusi alur kerja turunan, yang berjalan pada waktu yang sama, mirip dengan berikut ini:
gcloud
Menjalankan alur kerja:
gcloud workflows run workflow-parent \ --location=us-central1
Untuk memverifikasi bahwa eksekusi alur kerja dipicu, buat daftar empat eksekusi terakhir:
gcloud workflows executions list workflow-child --limit=4
Karena jumlah eksekusi (100) berada di bawah batas serentak Workflows, hasilnya akan mirip dengan berikut ini. Masalah kuota dapat muncul jika Anda mengirimkan ribuan eksekusi secara bersamaan.
NAME: projects/620278351741/locations/us-central1/workflows/workflow-child/executions/1570d06e-d133-4536-a859-b7b6a1a85524 STATE: ACTIVE START_TIME: 2023-07-27T00:56:15.093934448Z END_TIME: NAME: projects/620278351741/locations/us-central1/workflows/workflow-child/executions/82724960-7d92-4961-aa2c-a0f0be46212c STATE: ACTIVE START_TIME: 2023-07-27T00:56:14.903007626Z END_TIME: NAME: projects/620278351741/locations/us-central1/workflows/workflow-child/executions/598126fb-37f9-45bc-91d8-aea7d795d702 STATE: ACTIVE START_TIME: 2023-07-27T00:56:14.698260524Z END_TIME: NAME: projects/620278351741/locations/us-central1/workflows/workflow-child/executions/d2e9960b-f93f-4df4-a594-3e7e5c2be53f STATE: ACTIVE START_TIME: 2023-07-27T00:56:14.503818840Z END_TIME:
Anda telah membuat dan men-deploy alur kerja yang memanggil 100 iterasi alur kerja turunan.
Menjalankan alur kerja induk dengan batas kapasitas
Terapkan batas frekuensi satu pengiriman per detik ke antrean Cloud Tasks, lalu jalankan alur kerja induk.
Konsol
Di konsol Google Cloud , buka halaman Cloud Tasks:
Klik queue-workflow-child, antrean Cloud Tasks yang Anda buat, lalu klik Edit antrean.
Di bagian Rate limits for task dispatches, untuk kolom Max dispatches, ketik 1.
Klik Simpan.
Buka halaman Workflows:
Klik alur kerja workflow-parent untuk membuka halaman detailnya.
Di halaman Workflow details, klik play_arrow Execute.
Klik Execute lagi.
Saat alur kerja induk berjalan, kembali ke halaman Workflows, lalu klik alur kerja workflow-child untuk membuka halaman detailnya.
Klik tab Executions.
Anda akan melihat eksekusi alur kerja turunan, yang berjalan pada satu permintaan per detik, mirip dengan berikut ini:
gcloud
Perbarui antrean Cloud Tasks untuk menerapkan batas frekuensi satu pengiriman per detik:
gcloud tasks queues update $QUEUE \ --max-dispatches-per-second=1 \ --location=us-central1
Menjalankan alur kerja:
gcloud workflows run workflow-parent \ --location=us-central1
Untuk memverifikasi bahwa eksekusi alur kerja dipicu, buat daftar empat eksekusi terakhir:
gcloud workflows executions list workflow-child --limit=4
Hasilnya akan mirip dengan berikut, dengan satu alur kerja yang dieksekusi per detik:
NAME: projects/620278351741/locations/us-central1/workflows/workflow-child/executions/becf4957-9fb2-40d9-835d-0ff2dd0c1249 STATE: ACTIVE START_TIME: 2023-07-27T01:07:24.446361457Z END_TIME: NAME: projects/620278351741/locations/us-central1/workflows/workflow-child/executions/6c1e7c4b-7ac6-4121-b351-1e2d56d10903 STATE: ACTIVE START_TIME: 2023-07-27T01:07:23.448213989Z END_TIME: NAME: projects/620278351741/locations/us-central1/workflows/workflow-child/executions/f2ba5027-af40-4cd3-8cd0-b8033bcc6211 STATE: ACTIVE START_TIME: 2023-07-27T01:07:22.431485914Z END_TIME: NAME: projects/620278351741/locations/us-central1/workflows/workflow-child/executions/ecc61ee5-fe87-49eb-8803-89dba929f6c8 STATE: ACTIVE START_TIME: 2023-07-27T01:07:21.443466369Z END_TIME:
Anda telah berhasil men-deploy alur kerja yang memanggil 100 iterasi alur kerja turunan dengan kecepatan pengiriman satu eksekusi per detik.