בקרת בו-זמניות היא תכונה שזמינה בספריית הלקוח ברמה גבוהה של Pub/Sub. אפשר גם להטמיע בקרת בו-זמניות משלכם כשמשתמשים בספרייה ברמה נמוכה.
התמיכה בבקרת בו-זמניות תלויה בשפת התכנות של ספריית הלקוח. בשפות תכנות שתומכות בשרשורים מקבילים, כמו C++, Go ו-Java, ספריות הלקוח בוחרות כברירת מחדל את מספר השרשורים.
יכול להיות שהבחירה הזו לא תהיה אופטימלית לאפליקציה שלכם. לדוגמה, אם אפליקציית המנוי לא עומדת בקצב של נפח ההודעות הנכנסות ולא מוגבלת על ידי CPU, צריך להגדיל את מספר השרשורים. במקרים של פעולות עיבוד הודעות שדורשות הרבה משאבי CPU, יכול להיות שכדאי להקטין את מספר השרשורים.
בדף הזה מוסבר על הרעיון של בקרת בו-זמניות ואיך מגדירים את התכונה הזו ללקוחות האפליקציה הרשומה. כדי להגדיר את לקוחות בעלי האתרים שלכם לבקרת בו-זמניות, אפשר לעיין במאמר בנושא בקרת בו-זמניות.
הגדרות של בקרת בו-זמניות
יכול להיות שערכי ברירת המחדל של משתני בקרת בו-זמניות והשמות של המשתנים יהיו שונים בספריות לקוח שונות. מידע נוסף זמין במאמרי העזרה של ה-API.
לדוגמה, בספריית הלקוח של Java, השיטות להגדרת בקרת בו-זמניות הן setParallelPullCount(), setExecutorProvider(), setSystemExecutorProvider() ו-setChannelProvider().
הפונקציה setParallelPullCount() מאפשרת לכם להחליט כמה שידורים לפתוח. אפשר לפתוח עוד מקורות נתונים אם לקוח המנוי יכול לטפל ביותר נתונים מאלה שנשלחים במקור נתונים יחיד, שהוא 10MBps.
setExecutorProvider() מאפשרת להתאים אישית את ספק ה-executor שמשמש לעיבוד הודעות. לדוגמה, אפשר לשנות את ספק ה-executor לספק שמחזיר executor יחיד ומשותף עם מספר מוגבל של threads בכמה לקוחות מנויים. ההגדרה הזו עוזרת להגביל את מספר השרשורים שנוצרים. המספר הכולל של השרשורים שמשמשים לבקרה על פעולות מקבילות תלוי בספק של מנהל השרשורים שמועבר בספריית הלקוח ובמספר המשיכות המקבילות.
setSystemExecutorProvider() מאפשרת להתאים אישית את ספק המבצעים שמשמש לניהול חוזים. בדרך כלל לא מגדירים את הערך הזה, אלא אם רוצים להשתמש באותו ספק של מפעיל ב-
setExecutorProviderוב-setSystemExecutorProvider. לדוגמה, אפשר להשתמש באותו ספק של מפעיל אם יש לכם מספר מינויים עם תפוקה נמוכה. שימוש באותו ערך מגביל את מספר השרשורים בלקוח.setChannelProvider() מאפשרת להתאים אישית את ספק הערוץ שמשמש לפתיחת חיבורים ל-Pub/Sub. בדרך כלל לא מגדירים את הערך הזה, אלא אם רוצים להשתמש באותו ערוץ בכמה לקוחות של מינויים. שימוש חוזר בערוץ ביותר מדי לקוחות עלול לגרום לשגיאות
GOAWAYאוENHANCE_YOUR_CALM. אם השגיאות האלה מופיעות ביומנים של האפליקציה או ביומני Cloud, צריך ליצור עוד ערוצים.
דוגמאות קוד לבקרת בו-זמניות
C++
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של C++ במאמר תחילת העבודה: שימוש בספריות לקוח. מידע נוסף זמין במאמרי העזרה של Pub/Sub C++ API.
המשך
בדוגמה הבאה נעשה שימוש בגרסה הראשית של ספריית הלקוח Go Pub/Sub (v2). אם אתם עדיין משתמשים בספרייה v1, כדאי לעיין במדריך להעברת נתונים ל-v2. כדי לראות רשימה של דוגמאות קוד מגרסה 1, אפשר לעיין ב דוגמאות הקוד שהוצאו משימוש.
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Go במאמר מדריך למתחילים: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Go API.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במאמר תחילת העבודה המהירה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Java API.
Ruby
בדוגמה הבאה נעשה שימוש בספריית הלקוח של Ruby Pub/Sub בגרסה 3. אם אתם עדיין משתמשים בספרייה v2, כדאי לעיין במדריך להעברה ל-v3. כדי לראות רשימה של דוגמאות קוד של Ruby v2, אפשר לעיין ב דוגמאות הקוד שהוצאו משימוש.
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Ruby במאמר תחילת העבודה המהירה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Ruby API.
חלודה
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Rust במאמר מדריך מהיר: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Rust API.
המאמרים הבאים
אפשר לקרוא על אפשרויות משלוח אחרות שאפשר להגדיר למינוי: