בדף הזה מוסבר על קריאות מונחות ב-Spanner ואיך משתמשים בהן.
קריאות מופנות ב-Spanner מאפשרות גמישות בהפניית טרנזקציות לקריאה בלבד וקריאות בודדות לסוג רפליקה או לאזור ספציפיים במסגרת הגדרת מופע של שני אזורים או של מספר אזורים, או במסגרת הגדרה אזורית בהתאמה אישית עם אזורים אופציונליים לקריאה בלבד.
יתרונות
היתרונות של קריאות מופנות:
- שליטה רבה יותר בעומסי עבודה של איזון עומסים בכמה אזורים כדי להשיג ניצול אחיד יותר של CPU ולמנוע הקצאת יתר של מופעי Spanner.
- הפעלת בידוד עומסי עבודה. אתם יכולים להפנות את עומסי העבודה של ניתוח הנתונים וקריאות של סנכרון שינויים בזרמי נתונים לשכפולים ספציפיים של Spanner כדי למזער את ההשפעה על עומסי עבודה של טרנזקציות שפועלים באותו מסד נתונים של Spanner.
פעולות נתמכות בשאילתות
| פעולות של שאילתות | האם יש תמיכה בקריאה מכוונת? |
|---|---|
| קריאה בעבר | כן |
| קריאה חזקה | כן |
| עסקת קריאה-כתיבה | לא |
אין תמיכה בקריאות ישירות בטרנזקציות של קריאה וכתיבה ובסוגים של עדכונים בכמות גדולה כמו חלוקה למחיצות של 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#
המשך
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מתקבל כשיוצרים סשן.
בקטע גוף הבקשה, משתמשים בערכים הבאים:
{ "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.