בדף הזה מוסבר על קריאות ממוקדות ב-Spanner ואיך משתמשים בהן.
קריאות מופנות ב-Spanner מאפשרות גמישות בניתוב של טרנזקציות לקריאה בלבד ושל קריאות בודדות לסוג רפליקה או לאזור ספציפיים בהגדרת מופע של שני אזורים או של מספר אזורים, או בהגדרה אזורית בהתאמה אישית עם אזורים אופציונליים לקריאה בלבד.
יתרונות
היתרונות של קריאות מופנות:
- שליטה רבה יותר בעומסי עבודה של איזון עומסים בכמה אזורים כדי להשיג ניצול אחיד יותר של CPU ולהימנע מהקצאת יתר של מופעי Spanner.
- הפעלת בידוד של עומסי עבודה. אתם יכולים להפנות את עומסי העבודה של ניתוח הנתונים וקריאות של סנכרון שינויים בזרמי נתונים אל רפליקות ספציפיות של Spanner כדי למזער את ההשפעה על עומסי עבודה של טרנזקציות שפועלים באותו מסד נתונים של Spanner.
פעולות נתמכות בשאילתות
| פעולות של שאילתות | האם יש תמיכה בקריאה מכוונת? |
|---|---|
| קריאה בעבר | כן |
| קריאה חזקה | כן |
| עסקת קריאה-כתיבה | לא |
אין תמיכה בקריאות ישירות בסוגי העדכונים בכמות גדולה read-write transactions ו-partitioned DML. הסיבה לכך היא שעסקאות קריאה-כתיבה צריכות לעבור עיבוד באזור הראשי. אם משתמשים בקריאות ישירות בעסקת קריאה-כתיבה, העסקה נכשלת עם שגיאת BAD_REQUEST.
מגבלות
יש הגבלות על קריאות מונחות ב-Spanner:
- אפשר להשתמש בקריאות מופנות רק במופע Spanner שנמצא בהגדרת מופע בשני אזורים, בהגדרת מופע במספר אזורים או בהגדרה אזורית בהתאמה אישית עם אזורים אופציונליים לקריאה בלבד.
- אי אפשר להשתמש בקריאות מופנות עם בקשות קריאה-כתיבה, כי בקשות כתיבה תמיד מוגשות על ידי אזור ראשי.
- אי אפשר להשתמש בקריאות ישירות במסוף Google Cloud או ב-Google Cloud CLI. הוא זמין באמצעות ממשקי REST ו-RPC וספריות הלקוח של Spanner.
- אפשר לציין עד 10 עותקים משוכפלים בקריאה מכוונת אחת.
לפני שמתחילים
לפני שמשתמשים בקריאות מונחות, כדאי לשים לב לנקודות הבאות:
- יכול להיות שיהיה עיכוב נוסף בתגובה לאפליקציה אם אתם מעבירים קריאות לרפליקה או לאזור אחרים, ולא לאזור הכי קרוב לאפליקציה.
- אפשר לנתב את התנועה לפי:
- שם האזור (לדוגמה:
us-central1). - סוג הרפליקה (הערכים האפשריים:
READ_ONLYו-READ_WRITE).
- שם האזור (לדוגמה:
- אפשרות המעבר האוטומטי לגיבוי בקריאות מופנות מופעלת כברירת מחדל. כשהאפשרות של מעבר אוטומטי לגיבוי מופעלת וכל העותקים המשוכפלים שצוינו לא זמינים או לא תקינים, Spanner מעביר את הבקשות לעותק משוכפל שלא נמצא ברשימה
includeReplicas. אם משביתים את האפשרות של מעבר אוטומטי לגיבוי וכל העותקים המשוכפלים שצוינו לא זמינים או לא תקינים, בקשת הקריאה המכוונת נכשלת.
פרמטרים של קריאה מודרכת
אם אתם משתמשים ב-API ל-REST או ל-RPC כדי לבצע קריאות ממוקדות, אתם צריכים להגדיר את השדות האלה בפרמטר directedReadOptions. אפשר לכלול רק אחד מהתגים includeReplicas או excludeReplicas, ולא את שניהם.
includeReplicas: מכיל קבוצה חוזרת שלreplicaSelections. הרשימה הזו מציינת את הסדר שבו צריך להתייחס לקריאות ישירות לאזורים ספציפיים או לסוגים של עותקים משוכפלים. אפשר לציין עד 10includeReplicas.
replicaSelections: מורכב מ-locationאו מרפליקהtypeשמשרת את בקשת הקריאות המכוונות. אם אתם משתמשים ב-includeReplicas, אתם צריכים לספק לפחות אחד מהשדות הבאים:
location: המיקום שבו מוגשת בקשת הקריאה המכוונת. המיקום חייב להיות אחד מהאזורים בהגדרה של שני אזורים או של כמה אזורים במסד הנתונים. אם המיקום לא נמצא באחד מהאזורים בהגדרה של שני אזורים או של מספר אזורים במסד הנתונים, הבקשות לא ינותבו כמצופה. במקום זאת, הן מוגשות מהאזור הקרוב ביותר. לדוגמה, אפשר להפנות קריאות למיקוםus-central1במסד נתונים בהגדרת מופע מרובה אזוריםnam6.אפשר גם לציין את הפרמטר
locationעם מחרוזת ליטרליתleaderאוnon-leader. אם מזינים את הערךleader, Spanner מפנה את הבקשות לרפליקה הראשית של מסד הנתונים. לעומת זאת, אם תזינו את הערך שלnon-leader, Spanner יבצע את הבקשה ברפליקה הקרובה ביותר שאינה רפליקת הלידר.
type: סוג הרפליקה שמשרתת את בקשת הקריאה המכוונת. הסוגים האפשריים כולליםREAD_WRITEו-READ_ONLY.
autoFailoverDisabled: כברירת מחדל, הערך הואFalse, כלומר מעבר אוטומטי לגיבוי מופעל. כשהאפשרות של מעבר אוטומטי לגיבוי מופעלת, וכל העותקים המשוכפלים שצוינו לא זמינים או לא תקינים, Spanner מעביר את הבקשות לעותק משוכפל מחוץ לרשימהincludeReplicas. אם משביתים את האפשרות של מעבר אוטומטי לגיבוי, וכל העותקים המשוכפלים שצוינו לא זמינים או לא תקינים, בקשת הקריאה המכוונת תיכשל. הערכים האפשריים כולליםTRUEלהשבתה ו-FALSEלהפעלה.
excludeReplicas: מכיל קבוצה חוזרת שלreplicaSelectionsשמוחרגת מבקשות להצגת מודעות. מערכת Spanner לא מעבירה בקשות לרפליקות ברשימה הזו.-
replicaSelections: המיקום או סוג הרפליקה שמוחרגים מהצגת הבקשה לקריאות מופנות. אם אתם משתמשים ב-excludeReplicas, אתם צריכים לספק לפחות אחד מהפרטים של השדות הבאים:-
location: המיקום שמוחרג מהצגת הבקשה לקריאות ישירות. -
type: סוג הרפליקה שמוחרג מהטיפול בבקשת קריאה ישירה. הסוגים האפשריים כולליםREAD_WRITEו-READ_ONLY.
-
-
כדי לראות דוגמה לגוף של בקשת REST, לוחצים על הכרטיסייה REST בקטע שימוש בקריאות מופנות.
שימוש בהקראה מודרכת
אתם יכולים להשתמש בספריות הלקוח של Spanner ובממשקי API ל-REST ול-RPC כדי לבצע קריאות ממוקדות.
ספריות לקוח
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
REST
אפשר להשתמש בממשקי ה-API הבאים ל-REST כדי לבצע קריאות ממוקדות:
לדוגמה, כדי לבצע קריאות ממוקדות ב-us-central1 באמצעות executeSQL:
בשדה session, מזינים:
projects/<VAR>PROJECT-ID</VAR>/instances/<VAR>INSTANCE-ID</VAR>/databases/<VAR>DATABASE-ID</VAR>/sessions/<VAR>SESSION-ID</VAR>מחליפים את מה שכתוב בשדות הבאים:
- PROJECT-ID: מזהה הפרויקט.
- INSTANCE-ID: מזהה המכונה.
- DATABASE-ID: מזהה מסד הנתונים.
- SESSION-ID: מזהה הסשן.
הערך
SESSION-IDמתקבל כשיוצרים סשן.
בקטע Request body (גוף הבקשה), משתמשים בערכים הבאים:
{ "directedReadOptions": { "includeReplicas": { "replicaSelections": [ { "location": "us-central1", } ] } }, "sql": "SELECT SingerId, AlbumId, AlbumTitle FROM Albums" }לוחצים על Execute. התשובה תציג את תוצאות השאילתה.
RPC
אפשר להשתמש בממשקי ה-API הבאים של RPC כדי לבצע קריאות ממוקדות:
מעקב
Spanner מספק מדד של זמן האחזור כדי לעזור לכם לעקוב אחרי פעילויות של קריאות ישירות במופעים. המדד זמין ב-Cloud Monitoring.
spanner.googleapis.com/api/read_request_latencies_by_serving_location
אפשר לסנן את המדד הזה באמצעות השדות /serving_location או /is_directed_read. השדה /serving location מציין את המיקום של שרת Spanner שממנו מוגשת הבקשה. השדה /is_directed_read מציין אם האפשרות של קריאות ישירות מופעלת.
רשימה מלאה של המדדים הזמינים מופיעה במאמר בנושא מדדים ל-Spanner.