נקודות זמן האחזור בבקשת Spanner

בדף הזה מוסבר על הרכיבים ברמה הגבוהה שמעורבים בבקשת 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.

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

דיאגרמת ארכיטקטורה של Spanner.

בקטעים הבאים מוסבר כל סוג של זמן אחזור שמופיע בתרשים הקודם.

קישוריות ישירה

תנועה של אפליקציות שעומדת בקריטריונים מסוימים יכולה להיות מנותבת ישירות אל Spanner, בלי לעבור דרך ממשק הקצה של Google‏ (GFE), וכך לשפר את הביצועים. אפשר להפעיל קישוריות ישירה לאפליקציות שעומדות בקריטריונים הבאים:

  • פועל ב-Compute Engine או ב-Google Kubernetes Engine.
  • משתמשים בנקודת הקצה הגלובלית.
  • ברשת שהוגדרו בה מסלולים וכללי חומת אש שמאפשרים לתעבורת נתונים יוצאת להגיע אל 34.126.0.0/18 ו-2001:4860:8040::/42.
  • הגרסאות של ספריות הלקוח שבהן נעשה שימוש:
    • Java: גרסה 6.111.0 ואילך.
    • Go: גרסה 1.88.0 ואילך.
  • לפרטי הכניסה שבהם אתם משתמשים באפליקציות יש הרשאה spanner.databases.get.

כדי להפעיל את התכונה הזו, צריך להגדיר את משתנה הסביבה GOOGLE_SPANNER_ENABLE_DIRECT_ACCESS ל-true או להשתמש בהגדרות של ספריית הלקוח (setEnableDirectAccess(true) ב-Java, ‏ ClientConfig.EnableDirectAccess ב-Go או מאפיין החיבור enableDirectAccess=true בדרייבר JDBC).

כדי לבדוק אם נעשה שימוש בקישוריות ישירה ל-Spanner, עוקבים אחרי תוויות השימוש במדדים בצד הלקוח.

חביון מקצה לקצה

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

דיאגרמת ארכיטקטורה של Spanner לציון זמן האחזור מקצה לקצה.

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

מידע נוסף מופיע במאמר בנושא צפייה במדדים של הצפנה מצד הלקוח וניהול שלהם.

זמן האחזור של GFE

זמן האחזור של ממשק הקצה של Google‏ (GFE) הוא משך הזמן (במילישניות) שחלף מרגע שרשת Google קיבלה קריאה לפרוצדורה מרוחקת מהלקוח ועד לרגע שבו ממשק הקצה של Google קיבל את הבייט הראשון של התגובה. השיהוי הזה לא כולל את לחיצת היד של TCP/SSL.

דיאגרמת ארכיטקטורה של Spanner לזמן האחזור של GFE.

כל תגובה מ-Spanner (REST או gRPC) כוללת כותרת שמכילה את הזמן הכולל בין GFE לבין ה-backend (שירות Spanner) עבור הבקשה והתגובה. כך קל יותר להבחין בין מקורות האחזור בין הלקוח לבין GFE.

המדד spanner.googleapis.com/client/gfe_latencies מתעד את זמן האחזור של GFE עבור בקשות Spanner ומציג אותו.

מידע נוסף מופיע במאמר בנושא צפייה במדדים של הצפנה מצד הלקוח וניהול שלהם.

חביון של בקשת Spanner API

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

דיאגרמת ארכיטקטורה של Spanner לזמן האחזור של בקשת API של Spanner.

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

זמן האחזור של השאילתה

זמן האחזור של שאילתה הוא משך הזמן (באלפיות השנייה) שנדרש להרצת שאילתות SQL במסד הנתונים של Spanner.

דיאגרמת ארכיטקטורה של Spanner לזמן אחזור של שאילתות.

זמן האחזור של השאילתה זמין עבור API‏ executeSql.

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

כדי ללכוד את זמן האחזור של השאילתה ולהציג אותו באופן חזותי, אפשר לעיין במאמר בנושא לכידת זמן האחזור של שאילתה באמצעות OpenTelemetry.

המאמרים הבאים