במאמר הזה מוסבר איך להשתמש בבקרת זרימה עם הודעות שפורסמו בנושא.
מידע על בקרה על זרימת נתונים
יכול להיות שלקוח שמפרסם ינסה לפרסם הודעות מהר יותר מהקצב שבו הוא מסוגל לשלוח נתונים לשירות 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.
המשך
בדוגמה הבאה נעשה שימוש בגרסה הראשית של ספריית הלקוח של Pub/Sub ב-Go (v2). אם אתם עדיין משתמשים בספרייה של גרסה 1, כדאי לעיין במדריך להעברת נתונים לגרסה 2. כאן תוכלו למצוא רשימה של דוגמאות קוד שהוצאו משימוש בגרסה 1.
לפני שתנסו את הדוגמה הזו, פעלו לפי הוראות ההגדרה של Go במאמר מדריך למתחילים: שימוש בספריות לקוח. מידע נוסף מופיע במסמכי העזר של ה-API של Pub/Sub Go.
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
בדוגמה הבאה נעשה שימוש בגרסה 3 של ספריית הלקוח של Pub/Sub ב-Ruby. אם אתם עדיין משתמשים בספרייה v2, עיינו במדריך להעברת נתונים (מיגרציה) ל-v3. לרשימה של דוגמאות קוד ב-Ruby v2, עיינו ב דוגמאות הקוד שהוצאו משימוש.
לפני שתנסו את הדוגמה הזו, פעלו לפי הוראות ההגדרה של Ruby במאמר התחלה מהירה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Ruby API.