Tutorial ini menunjukkan cara membuat antrean Cloud Tasks yang dapat mengatur laju eksekusi alur kerja.
Ada jumlah maksimum eksekusi alur kerja aktif
yang dapat terjadi secara serentak. Setelah batas ini tercapai, 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 tingkat eksekusi yang lebih baik.
Perlu diperhatikan bahwa Cloud Tasks dirancang untuk memberikan pengiriman "setidaknya satu kali"; tetapi, Workflows tidak memastikan pemrosesan permintaan duplikat dari Cloud Tasks tepat satu kali.
Dalam diagram berikut, alur kerja induk memanggil alur kerja turunan yang diatur oleh antrean Cloud Tasks yang menerapkan tingkat pengiriman.
Tujuan
Dalam tutorial ini, Anda akan:
- Buat antrean Cloud Tasks yang bertindak sebagai perantara antara alur kerja induk dan turunan.
- Buat dan deploy alur kerja turunan yang menerima data dari alur kerja induk.
- Buat dan deploy alur kerja induk yang menjalankan alur kerja turunan melalui antrean Cloud Tasks.
- Menjalankan alur kerja induk tanpa batas kapasitas pengiriman, yang memanggil eksekusi alur kerja turunan.
- Terapkan batas pengiriman ke antrean Cloud Tasks dan jalankan alur kerja induk.
- Perhatikan bahwa alur kerja turunan dijalankan pada kecepatan yang ditentukan melalui antrean Cloud Tasks.
Anda dapat menjalankan perintah berikut di Google Cloud Console atau dengan menggunakan Google Cloud CLI di terminal atau Cloud Shell.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
Batasan keamanan yang ditentukan oleh organisasi mungkin mencegah Anda menyelesaikan langkah-langkah berikut. Untuk mengetahui informasi pemecahan masalah, lihat Mengembangkan aplikasi di lingkungan Google Cloud yang terbatas.
Konsol
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API Cloud Tasks, Compute Engine, dan Workflows.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API Cloud Tasks, Compute Engine, dan Workflows.
- Di Konsol Google Cloud, buka halaman IAM untuk menetapkan izin bagi akun layanan default Compute Engine.
Akun layanan default Compute Engine dibuat otomatis setelah mengaktifkan atau menggunakan layanan Google Cloud yang menggunakan Compute Engine.
Untuk tujuan pengujian, Anda dapat melampirkan akun layanan ini ke alur kerja untuk mewakili identitasnya. Perhatikan format email yang akan digunakan saat membuat pemicu:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Ganti
PROJECT_NUMBER
dengan nomor project Google Cloud Anda. Anda dapat menemukan nomor project di halaman Welcome pada Konsol Google Cloud. - Pilih akun layanan default Compute Engine, lalu klik Edit principal di baris tersebut.
- Pada kotak dialog yang muncul, klik
- Di daftar Select a role, pilih Workflows > Workflows Invoker agar akun memiliki izin untuk memicu eksekusi alur kerja Anda.
- Dalam daftar Select a role, pilih Cloud Tasks > Cloud Tasks Enqueuer agar akun memiliki izin untuk membuat tugas.
Add another role dan tambahkan peran berikut:
- Klik Save.
gcloud
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API Cloud Tasks, Compute Engine, dan Workflows:
gcloud services enable cloudtasks.googleapis.com
compute.googleapis.com workflows.googleapis.com - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API Cloud Tasks, Compute Engine, dan Workflows:
gcloud services enable cloudtasks.googleapis.com
compute.googleapis.com workflows.googleapis.com Akun layanan default Compute Engine dibuat otomatis setelah mengaktifkan atau menggunakan layanan Google Cloud yang menggunakan Compute Engine.
Untuk tujuan pengujian, Anda dapat melampirkan akun layanan ini ke alur kerja untuk mewakili identitasnya. Perhatikan format email yang akan digunakan saat membuat pemicu:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Ganti
PROJECT_NUMBER
dengan nomor project Google Cloud Anda. Anda dapat menemukan nomor project dengan menjalankan perintah berikut:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
- Berikan
peran Workflows Invoker
(
roles/workflows.invoker
) pada project ke akun layanan default Compute Engine agar akun tersebut memiliki izin untuk memicu eksekusi alur kerja Anda.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/workflows.invoker
Ganti kode berikut:
PROJECT_ID
: project ID Google CloudPROJECT_NUMBER
: nomor project Google Cloud
- Berikan peran Cloud Tasks Enqueuer (
roles/cloudtasks.enqueuer
) pada project ke akun layanan default Compute Engine sehingga akun tersebut memiliki izin untuk membuat tugas.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/cloudtasks.enqueuer
Membuat antrean Cloud Tasks
Buat antrean Cloud Tasks yang dapat Anda gunakan di alur kerja induk, dan yang dapat Anda gunakan untuk mengatur laju eksekusi alur kerja.
Konsol
Di konsol Google Cloud, buka halaman Cloud Tasks:
Klik
Create push queue.Masukkan Nama antrean,
queue-workflow-child
.Pada daftar Region, pilih us-central1 (Iowa).
Klik Create.
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.Pada daftar Region, pilih us-central1 (Iowa).
Dalam daftar Akun layanan, pilih akun layanan default Compute Engine.
Klik Next.
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 di editor teks, lalu salin alur kerja berikut ke file tersebut.
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 untuk definisi alur kerja. Alat ini terdiri dari bagian-bagian berikut:
Peta yang digunakan untuk menetapkan konstanta yang merujuk ke alur kerja turunan dan nama antrean Cloud Tasks. Untuk mengetahui informasi selengkapnya, lihat Maps.
Loop
for
yang dijalankan untuk memanggil alur kerja turunan secara iteratif. Untuk informasi selengkapnya, lihat Iterasi.Langkah alur kerja yang membuat dan menambahkan tugas dalam jumlah besar 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.Pada daftar Region, pilih us-central1 (Iowa).
Dalam daftar Akun layanan, pilih akun layanan default Compute Engine.
Klik Next.
Di editor alur kerja, tempel definisi untuk alur kerja induk.
Klik Deploy.
gcloud
Buat file kode sumber untuk alur kerja Anda:
touch workflow-parent.yaml
Buka file kode sumber di editor teks dan tempelkan 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 kapasitas
Jalankan alur kerja induk untuk memanggil alur kerja turunan melalui antrean Cloud Tasks. Eksekusi memerlukan waktu sekitar 10 detik untuk selesai.
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 sedang 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, cantumkan empat eksekusi terakhir:
gcloud workflows executions list workflow-child --limit=4
Karena jumlah eksekusi (100 ) kurang dari batas serentak alur kerja, hasilnya harus 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 kapasitas 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 queue.
Di bagian Rate limit for task dispatches, untuk kolom Max dispatches, ketik 1.
Klik Save.
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 sedang 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 kapasitas 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, cantumkan empat eksekusi terakhir:
gcloud workflows executions list workflow-child --limit=4
Hasilnya akan mirip dengan berikut ini, dengan satu alur kerja dijalankan 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 rasio pengiriman satu eksekusi per detik.
Pembersihan
Jika Anda membuat project baru untuk tutorial ini, hapus project tersebut. Jika Anda menggunakan project yang ada dan ingin mempertahankannya tanpa perubahan yang ditambahkan dalam tutorial ini, hapus resource yang dibuat untuk tutorial.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus resource tutorial
Hapus alur kerja dan resource Cloud Tasks yang dibuat dalam tutorial ini:
Konsol
Untuk menghapus alur kerja tersebut, ikuti langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Workflows:
Dari daftar alur kerja, klik alur kerja untuk membuka halaman Detail alur kerja.
Klik
Delete.Ketik nama alur kerja, lalu klik Konfirmasi.
Untuk menghapus antrean Cloud Tasks, ikuti langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Cloud Tasks:
Pilih nama antrean yang ingin Anda hapus, lalu klik Hapus antrean.
Konfirmasi tindakan.
gcloud
Untuk menghapus alur kerja, jalankan perintah berikut:
gcloud workflows delete workflow-child gcloud workflows delete workflow-parent
Untuk menghapus antrean Cloud Tasks, jalankan perintah ini:
gcloud tasks queues delete queue-workflow-child
Langkah selanjutnya
- Untuk mempelajari lebih lanjut cara menggunakan Cloud Tasks untuk mengantrekan alur kerja dan mengeksekusinya secara asinkron, lihat Mengantrekan eksekusi alur kerja menggunakan Cloud Tasks.
- Untuk mempelajari sintaksis Workflows lebih lanjut, lihat Referensi sintaksis alur kerja.