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