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