בחירה בין Cloud Tasks לבין Pub/Sub

אפשר להשתמש גם ב-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

המאמרים הבאים