אתם יכולים להשתמש ב-Cloud Tasks כדי להוסיף תהליך עבודה לתור ולהריץ אותו באופן אסינכרוני.
שירות Cloud Tasks כולל את אמצעי הבקרה הבאים:
- תזמון של זמני אספקה ספציפיים
- ניהול תעריפי משלוח
- הגדרת אופן הפעולה של ניסיון חוזר
- גישה למשימות ספציפיות בתור וניהול שלהן
- הפעלת ביטול כפילויות של משימות
לדוגמה, אמצעי הבקרה האלה יכולים להיות שימושיים לניהול בקשות שמפעילות תהליך עבודה ועלולות לחרוג מהמגבלות של Workflows באופן לא צפוי. אם מגדירים תור של Cloud Tasks עם מגבלות קצב וניסיונות חוזרים, אפשר לוודא שכל הבקשות האלה יובילו להפעלות של תהליכי עבודה.
מידע נוסף זמין במאמר הסבר על Cloud Tasks.
שימו לב לנקודות הבאות:
כדאי לבסס את מגבלת הקצב על המגבלה של Workflows עבור בקשות כתיבה של Execution API. אם צריך, אפשר לבקש לשנות את רוב המכסות במסוף Google Cloud . מידע נוסף על התאמות של מכסת השימוש
שירות Cloud Tasks מתוכנן לספק מסירה של בקשות "לפחות פעם אחת". עם זאת, שירות Workflows לא מבטיח עיבוד של בקשות כפולות מ-Cloud Tasks בדיוק פעם אחת.
כדי להסיר עיכובים בהרצה ולמקסם את התפוקה, אפשר להפעיל את התכונה 'הצטברות של בקשות להרצה' ב-Workflows. הפעלות שהצטברו בתור יורצו אוטומטית ברגע שמכסת ההפעלות המקבילות תהיה זמינה. מידע נוסף מופיע במאמר ניהול של הצטברות בקשות להפעלה.
לפני שמתחילים
- אם אין לכם עדיין תהליך עבודה שאתם רוצים להוסיף לתור, אתם יכולים ליצור אחד.
מפעילים את Cloud Tasks API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים
הוספת משימה לתור לביצוע תהליך עבודה
יוצרים חשבון שירות כדי ש-Cloud Tasks יוכל לשלוח בקשות ל-Workflows API:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
מחליפים את
SERVICE_ACCOUNT_NAMEבשם באורך של 6 עד 30 תווים. הוא יכול להכיל תווים אלפאנומריים באותיות קטנות ומקפים. אחרי שיוצרים חשבון שירות, אי אפשר לשנות את השם שלו.כדי לאפשר לחשבון המשתמש שיריץ את הפקודות של Cloud Tasks לפעול כחשבון שירות לניהול זהויות והרשאות גישה (IAM), צריך להקצות תפקיד שמאפשר לחשבון המשתמש להתחזות לחשבון השירות.
נותנים לחשבון השירות החדש את התפקיד workflows.invoker כדי שלחשבון תהיה הרשאה להפעיל את תהליך העבודה:
gcloud projects add-iam-policy-binding PROJECT_NAME \ --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com \ --role roles/workflows.invoker
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NAME: השם של Google Cloud הפרויקט. -
SERVICE_ACCOUNT_NAME: השם של חשבון השירות שיצרתם קודם.
-
אם עדיין אין לכם תור של Cloud Tasks, צרו תור.
יוצרים משימה שמכוונת לנקודת הקצה של ה-HTTP של תהליך העבודה, באמצעות חשבון השירות שיצרתם קודם לאימות:
gcloud tasks create-http-task \ --queue="QUEUE_ID" \ --url="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_NAME/locations/REGION_NAME/workflows/WORKFLOW_NAME/executions" \ --body-content="{\"argument\": \"DOUBLE_ESCAPED_JSON_STRING\"}" \ --oauth-service-account-email="SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com"
מחליפים את מה שכתוב בשדות הבאים:
-
QUEUE_ID: המזהה שהקציתם לתור של Cloud Tasks. לדוגמה:my-queue. -
PROJECT_NAME: השם של Google Cloudהפרויקט. -
REGION_NAME: האזור שבו נמצא תהליך העבודה, למשלus-central1. -
WORKFLOW_NAME: השם של תהליך העבודה שרוצים ליצור לו משימה. -
DOUBLE_ESCAPED_JSON_STRING: קידוד JSON של הארגומנטים שמעבירים. המירכאות הכפולות בתוך המחרוזת המצוטטת מסומנות בתו בריחה (escape) באמצעות קו נטוי הפוך (\). לדוגמה:--body-content="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}" -
SERVICE_ACCOUNT_NAME: השם של חשבון השירות שיצרתם קודם.
המשימה נוצרת ונוספת לתור של Cloud Tasks. המשימה נשארת בתור עד שהביצוע של תהליך העבודה מתחיל ומוחזר קוד סטטוס HTTP
2xx. בשלב הזה, Cloud Tasks מחשיב את המשימה כהושלמה.-
המאמרים הבאים
- מדריך: שימוש בתור של Cloud Tasks כדי ליצור מאגר זמני של הרצות של תהליכי עבודה
- ניהול תורי משימות ומשימות
- ניהול של הצטברות בקשות להפעלה
- העברת ארגומנטים של זמן ריצה בבקשת ביצוע