מאמרי עזרה זה מספק מידע על שימוש בבקרה על זרימת נתונים עם הודעות שמתפרסמות בנושא.
מידע על בקרה על זרימת נתונים
יכול להיות שלקוח של בעל תוכן דיגיטלי ינסה לפרסם הודעות מהר יותר מהמהירות שבה הוא יכול לשלוח נתונים לשירות Pub/Sub. יש הרבה גורמים שמגבילים את הלקוחות, כולל:
- המעבד (CPU), ה-RAM וקיבולת הרשת של המכונה
- הגדרות רשת, כמו מספר הבקשות הפתוחות ורוחב הפס הזמין
- זמן האחזור של כל בקשת פרסום, שנקבע במידה רבה על ידי חיבורי הרשת בין שירות Pub/Sub, הלקוח ו- Google Cloud
אם קצב בקשות הפרסום חורג מהמגבלות האלה, הבקשות מצטברות בזיכרון עד שהן נכשלות עם שגיאת DEADLINE_EXCEEDED. הסיכוי לכך גבוה במיוחד כשעשרות אלפי הודעות מתפרסמות בלולאה, ויוצרות אלפי בקשות במילי-שניות.
כדי לאבחן את הבעיה הזו, אפשר לבדוק את המדדים בצד השרת ב-Monitoring. לא תוכלו לראות את הבקשות שנכשלו עם DEADLINE_EXCEEDED, אלא רק את הבקשות שהצליחו. שיעור הבקשות שמושלמות בהצלחה מציין את קיבולת התפוקה של מכונות הלקוח, ומספק בסיס להגדרת בקרת זרימה.
כדי לצמצם את הבעיות שקשורות לקצב הזרימה, צריך להגדיר את לקוח האפליקציה לשליחת הודעות עם בקרה על זרימת נתונים כדי להגביל את קצב בקשות הפרסום. אתם יכולים להגדיר את מספר הבייטים המקסימלי שמוקצה לבקשות בהמתנה, ואת המספר המקסימלי של הודעות בהמתנה שמותר. כדאי להגדיר את המגבלות האלה בהתאם לקיבולת התפוקה של מכונות הלקוח.
לפני שמתחילים
לפני שמגדירים את תהליך העבודה של הפרסום, צריך לוודא שביצעתם את המשימות הבאות:
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות לשימוש בבקרת זרימה, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד פרסום הודעות ב-Pub/Sub (roles/pubsub.publisher) בנושא.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
כדי ליצור או לעדכן נושאים ומינויים, צריך הרשאות נוספות.
שימוש בבקרה על זרימת נתונים בהודעות
אפשר להשתמש בבקרה על זרימת הנתונים של מקורות התנועה באמצעות ספריות הלקוח של Pub/Sub בשפות הבאות:
C++
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של C++ במאמר תחילת העבודה המהירה: שימוש בספריות לקוח. מידע נוסף זמין במאמרי העזרה של Pub/Sub C++ API.
המשך
בדוגמה הבאה נעשה שימוש בגרסה הראשית של ספריית הלקוח Go Pub/Sub (v2). אם אתם עדיין משתמשים בספרייה v1, כדאי לעיין במדריך להעברה לגרסה v2. כדי לראות רשימה של דוגמאות קוד מגרסה 1, אפשר לעיין ב דוגמאות הקוד שהוצאו משימוש.
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Go במאמר מדריך למתחילים: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Go API.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במאמר התחלה מהירה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Java API.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js במאמר הפעלה מהירה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Node.js API.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js במאמר הפעלה מהירה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Node.js API.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במאמר תחילת העבודה המהירה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של ה-API בשפת Python של Pub/Sub.
Ruby
בדוגמה הבאה נעשה שימוש בספריית הלקוח של Ruby Pub/Sub בגרסה 3. אם אתם עדיין משתמשים בספרייה v2, כדאי לעיין במדריך להעברה לגרסה v3. כדי לראות רשימה של דוגמאות קוד של Ruby v2, אפשר לעיין ב דוגמאות הקוד שהוצאו משימוש.
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Ruby במאמר תחילת העבודה המהירה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Ruby API.