בדף הזה מוסבר על הרכיבים ברמה הגבוהה שמעורבים בבקשת Spanner ואיך כל רכיב יכול להשפיע על זמן האחזור.
בקשות Spanner API
הרכיבים ברמה הגבוהה שמשמשים ליצירת בקשה ל-Spanner API כוללים:
ספריות לקוח של Spanner, שמספקות שכבת הפשטה מעל gRPC ומטפלות בפרטי התקשורת עם השרת, כמו ניהול סשנים, עסקאות וניסיונות חוזרים.
ממשק הקצה של Google (GFE) הוא שירות תשתית שמשותף לכל Google Cloud השירותים, כולל Spanner. ממשק הקצה של Google (GFE) מוודא שכל החיבורים של Transport Layer Security (TLS) נעצרים ומיישם הגנות מפני התקפות מניעת שירות (DoS). מידע נוסף על GFE זמין במאמר שירות Google Front End.
הקצה הקדמי של Spanner API (AFE), שמבצע בדיקות שונות על בקשת ה-API (כולל אימות, הרשאה ובדיקות מכסה), ושומר על מצבי ביקורים ועסקאות.
מסד הנתונים של Spanner, שמבצע קריאות וכתיבות במסד הנתונים.
כשמבצעים קריאה לפרוצדורה מרוחקת (RPC) אל Spanner, ספריות הלקוח של Spanner מכינות את בקשת ה-API. לאחר מכן, בקשת ה-API עוברת דרך GFE ו-AFE של Spanner לפני שהיא מגיעה למסד הנתונים של Spanner.
על ידי מדידה והשוואה של השהיות של הבקשות בין רכיבים שונים לבין מסד הנתונים, אפשר לקבוע איזה רכיב גורם לבעיה. הזמני השהיה האלה כוללים את זמני השהיה של בקשות API של Spanner, של GFE ושל לקוחות מקצה לקצה, וגם של שאילתות.

בקטעים הבאים מוסבר כל סוג של זמן אחזור שמופיע בתרשים הקודם.
חביון מקצה לקצה
השהיית קצה לקצה היא משך הזמן (באלפיות השנייה) בין הבייט הראשון של בקשת Spanner API שהלקוח שולח למסד הנתונים (דרך GFE וממשק הקצה של Spanner API), לבין הבייט האחרון של התגובה שהלקוח מקבל ממסד הנתונים.

המדד
spanner.googleapis.com/client/operation_latencies מציין את הזמן שחלף בין הבייט הראשון של בקשת ה-API שנשלחה לבין הבייט האחרון של התגובה שהתקבלה. הנתונים האלה כוללים ניסיונות חוזרים שבוצעו על ידי ספריית הלקוח.
מידע נוסף מופיע במאמר בנושא צפייה במדדים של הצפנה מצד הלקוח וניהול שלהם.
זמן האחזור של GFE
זמן האחזור של ממשק הקצה של Google (GFE) הוא משך הזמן (במילישניות) שחלף מרגע שרשת Google קיבלה קריאה לפרוצדורה מרוחקת מהלקוח ועד לרגע שבו GFE קיבל את הבייט הראשון של התגובה. ההשהיה הזו לא כוללת את תהליך הלחיצה של TCP/SSL.

כל תגובה מ-Spanner (REST או gRPC) כוללת כותרת שמכילה את הזמן הכולל בין GFE לבין ה-backend (שירות Spanner) עבור הבקשה והתגובה. כך אפשר להבחין טוב יותר בין מקורות האחזור בין הלקוח לבין GFE.
המדד spanner.googleapis.com/client/gfe_latencies מתעד את זמן האחזור של GFE לבקשות Spanner ומציג אותו.
מידע נוסף מופיע במאמר בנושא צפייה במדדים של הצפנה מצד הלקוח וניהול שלהם.
חביון של בקשת Spanner API
זמן האחזור של בקשת Spanner API הוא משך הזמן (בשניות) שחולף מרגע ש-Spanner AFE מקבל את הבייט הראשון של בקשת API ועד לרגע שבו קצה קדמי של ה-API של Spanner שולח את הבייט האחרון של תגובה. החביון כולל את הזמן שנדרש לעיבוד בקשות API גם בקצה העורפי של Spanner וגם בשכבת ה-API. עם זאת, זמן האחזור הזה לא כולל את התקורה של הרשת או של שרת ה-proxy ההפוך בין הלקוחות לבין השרתים של Spanner.

המדד spanner.googleapis.com/api/request_latencies מתעד את זמן האחזור של Spanner AFE עבור בקשות Spanner ומציג אותו. מידע נוסף זמין במאמר בנושא מדדי Spanner.
זמן האחזור של השאילתה
זמן האחזור של שאילתה הוא משך הזמן (באלפיות שנייה) שנדרש להרצת שאילתות SQL במסד הנתונים של Spanner.

זמן האחזור של השאילתה זמין ב-API executeSql.
אם הפרמטר QueryMode מוגדר לערך WITH_STATS או WITH_PLAN_AND_STATS, התגובות יכללו את ResultSetStats של Spanner. ResultSetStats כולל את הזמן שחלף מאז הפעלת השאילתות במסד הנתונים של Spanner.
כדי לצלם את זמן האחזור של השאילתה ולהציג אותו באופן חזותי, אפשר לעיין במאמר בנושא צילום זמן האחזור של שאילתה באמצעות OpenTelemetry.
המאמרים הבאים
- איך מזהים נקודות השהיה ברכיבי Spanner