אפשר להשתמש גם ב-Cloud Tasks וגם ב-Pub/Sub כדי להטמיע העברת הודעות ואינטגרציה אסינכרונית, אבל למרות שהן פועלות בצורה דומה, הן לא זהות. המדריך הזה יעזור לכם לבחור את המוצר המתאים לתרחיש השימוש שלכם.
ההבדלים העיקריים
ההבדל העיקרי בין Pub/Sub לבין Cloud Tasks הוא אם הם משתמשים בהפעלה משתמעת או מפורשת.
Pub/Sub מפריד בין מפרסמי אירועים לבין המנויים שלהם. בעלי תוכן דיגיטלי לא צריכים לדעת שום דבר על המנויים שלהם. כתוצאה מכך, Pub/Sub לא מאפשר שליטה במסירת ההודעות מעבר להבטחה שהן יימסרו. התמיכה הזו מאפשרת הפעלה משתמעת: בעל אתר מפעיל את הביצוע של רכיב Subscriber רק על ידי פרסום אירוע.
לעומת זאת, ב-Cloud Tasks ההפעלה היא מפורשת. השליטה המלאה על ההפעלה נשארת בידי בעל האתר. בפרט, בעל תוכן דיגיטלי מציין נקודת קצה שאליה כל הודעה תימסר.
בנוסף, Cloud Tasks מספק כלים לניהול תורים ומשימות שלא זמינים למפרסמים ב-Pub/Sub, כולל:
- תזמון משלוח ספציפי
- אמצעי בקרה על שיעור מסירה
- ניסיונות חוזרים מדויקים שניתן להגדיר
- גישה למשימות ספציפיות בתור וניהול שלהן
- ביטול כפילויות ביצירת משימות
השוואה מפורטת בין התכונות
| תכונה | Cloud Tasks | Pub/Sub |
|---|---|---|
| שליחת נתונים באמצעות webhooks | כן | כן |
| התחייבות למסירה של הודעה אחת לפחות | כן | כן |
| ניסיונות חוזרים שניתנים להגדרה | כן | כן |
| ביטול כפילויות ביצירת משימות או הודעות | כן | לא |
| שליחה מתוזמנת | כן | לא |
| הזמנת משלוח | לא, סדר המשימות בתור נשמר כמיטב יכולתנו | כן, עם הזמנת מפתחות |
| אמצעי בקרה מפורשים של שיעורי המרה | כן | לקוחות של מינוי שליפה יכולים להטמיע בקרה על זרימת נתונים |
| שליפה באמצעות API | לא | כן |
| הוספה באצווה | כן | כן |
| כמה מטפלים או מנויים לכל הודעה | לא | כן |
| שמירת משימות והודעות | 31 ימים | עד 31 ימים |
| הגודל המקסימלי של משימה או הודעה | 1MB | 10MB |
| שיעור מסירה מקסימלי | 500 QPS/תור | אין מגבלה עליונה, בכפוף למכסות התפוקה האזוריות |
| זמינות גיאוגרפית | אזורי | עולמי |
| משך העיבוד המקסימלי של handler/subscriber של הודעות פוש | 30 דקות (HTTP) 10 דקות (התאמה אוטומטית לעומס ב-App Engine Standard) 24 שעות (שינוי גודל ידני או בסיסי ב-App Engine Standard) 60 דקות (App Engine Flexible) |
10 דקות לפעולות של שליחת נתונים |
| מספר התורים/המינויים | 1,000 לכל פרויקט לכל אזור, אפשר לקבל יותר באמצעות בקשה להגדלת מכסה | 10,000 לכל פרויקט |
הבדלים בהגדרת ניסיון חוזר
שירות Cloud Tasks מאפשר שליטה מדויקת בניסיונות חוזרים לביצוע משימות, כולל הגבלות ברורות על מספר הניסיונות ומשך הזמן. הדגש ב-Pub/Sub הוא על מסירה מהימנה, באמצעות השהיה מעריכית לפני ניסיון חוזר (exponential backoff) ותורים של הודעות שלא ניתן למסור (dead-letter queues, DLQ) כדי לנהל ניסיונות חוזרים של הודעות שלא אושרו.
| תכונה | Cloud Tasks | Pub/Sub |
|---|---|---|
| התמקדות בתרחיש לדוגמה | הבטחת ביצוע סופי של משימה ספציפית | איך מוודאים שההודעות מגיעות למנויים שאין להם קשר ישיר לערוץ |
| אמצעי בקרה ראשיים | הגדרת ניסיון חוזר ברמת התור וברמת המשימה | מדיניות ניסיון חוזר ותור להודעות שלא ניתן למסור (DLQ) ברמת המינוי |
| הפסקת הניסיונות החוזרים | מספר הניסיונות המקסימלי, משך הניסיון החוזר המקסימלי | אישור מסירה של הודעה, תפוגה של הודעה או העברה ל-DLQ |
| מספר ניסיונות מקסימלי | ניתן להגדרה באופן מפורש | באופן עקיף דרך מספר הניסיונות המקסימלי למסירה של תור להודעות שלא ניתן למסור |
| כוונון של מרווח ההמתנה | השהיה מינימלית/מקסימלית, הכפלה מקסימלית | השהיה המינימלית והמקסימלית לפני ניסיון חוזר (backoff) במדיניות השהיה מעריכית לפני ניסיון חוזר |
| ניסיונות חוזרים ללא הגבלה | אפשרי אם מוגדר, אבל מוגבל על ידי המגבלה המקסימלית של שמירת משימות | ברירת המחדל להודעות שלא אושרו עד לתפוגה, מופחתת על ידי DLQ |
המאמרים הבאים
- הגדרת ניתוב לתור, מגבלות וניסיונות חוזרים
- ניהול תורי משימות ומשימות
- הגדרת פרמטרים לניסיון חוזר של משימה
- ביטול כפילויות במשימות