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