בדף הזה מתואר איך מתבצעת שכפול נתונים ב-Spanner, סוגי העותקים השכפולים השונים של Spanner והתפקידים שלהם בפעולות קריאה וכתיבה, והיתרונות של השכפול.
סקירה כללית
Spanner משכפל אוטומטית ברמת הבייט. כפי שמתואר במאמר Life of Spanner Reads and Writes, Spanner ממנף את היכולת הזו במערכת הקבצים הבסיסית שעליה הוא מבוסס. Spanner כותב שינויים במסד הנתונים לקבצים במערכת הקבצים הזו, ומערכת הקבצים דואגת לשכפול ולשחזור הקבצים כשמכונה או דיסק נכשלים.
למרות שמערכת הקבצים המבוזרת שעליה מבוסס Spanner כבר מספקת רפליקציה ברמת הבייט, Spanner גם משכפל נתונים כדי לספק את היתרונות הנוספים של זמינות נתונים ומיקום גיאוגרפי. ברמה גבוהה, כל הנתונים ב-Spanner מאורגנים בשורות. Spanner יוצר כמה עותקים, או רפליקות, של השורות האלה, ואז מאחסן את הרפליקות האלה באזורים גיאוגרפיים שונים. Spanner משתמש בתכנית שכפול סינכרוני שמבוססת על Paxos, שבה עותקים משוכפלים עם זכות הצבעה מצביעים על כל בקשת כתיבה לפני שהכתיבה מתבצעת. התכונה הזו של רפליקציה סינכרונית גלובלית מאפשרת לקרוא את הנתונים העדכניים ביותר מכל רפליקה של Spanner לקריאה-כתיבה או לקריאה בלבד.
Spanner יוצר רפליקות של כל פיצול של מסד הנתונים. פיצול מכיל טווח של שורות סמוכות, שמוזמנות לפי המפתח הראשי. כל הנתונים בפיצול מאוחסנים פיזית יחד ברפליקה, ו-Spanner משרת כל רפליקה מתוך אזור כשל עצמאי. מידע נוסף מופיע במאמר סקירה כללית על סכימות.
קבוצה של פיצולים מאוחסנת ומשוכפלת באמצעות Paxos. בכל קבוצת רפליקות של Paxos, רפליקה אחת נבחרת לשמש כמנהיג. עותקים משוכפלים של הלידר מטפלים בפעולות כתיבה, ועותקים משוכפלים לקריאה ולכתיבה או לקריאה בלבד יכולים לטפל בבקשת קריאה בלי לתקשר עם הלידר. אם מתבקשת קריאה חזקה, בדרך כלל מתבצעת התייעצות עם הלידר כדי לוודא שהרפליקה לקריאה בלבד קיבלה את כל השינויים האחרונים. כדי לעקוב אחרי קצב השינוי וכמות הנתונים שמשוכפלים מהרפליקה הראשית לרפליקות חוצות האזורים בהגדרת המופע, אפשר לעיין במאמר בנושא מעקב אחרי שכפול נתונים.
היתרונות של שכפול ב-Spanner
היתרונות של שכפול ב-Spanner כוללים:
זמינות הנתונים: כשיש יותר עותקים של הנתונים, הם זמינים יותר ללקוחות שרוצים לקרוא אותם. בנוסף, Spanner יכול עדיין לשרת פעולות כתיבה גם אם חלק מהרפליקות לא זמינות, כי נדרש רוב של רפליקות מצביעות כדי לבצע פעולת כתיבה.
מיקום גיאוגרפי: היכולת למקם נתונים באזורים וביבשות שונים באמצעות Spanner מאפשרת למקם את הנתונים קרוב יותר מבחינה גיאוגרפית למשתמשים ולשירותים שזקוקים להם, וכך הגישה אליהם מהירה יותר.
חוויה של מסד נתונים יחיד: Spanner יכול לספק חוויה של מסד נתונים יחיד בגלל השכפול הסינכרוני ומודל העקביות הגלובלי החזק שלו.
פיתוח אפליקציות קל יותר: מכיוון ש-Spanner תואם ל-ACID ומציע מודל עקביות חזק גלובלי, מפתחים שעובדים עם Spanner לא צריכים להוסיף לאפליקציות שלהם לוגיקה נוספת כדי להתמודד עם מודל עקביות הדרגתי, ולכן פיתוח האפליקציות והתחזוקה שלהן מהירים וקלים יותר.
סוגי רפליקות
ב-Spanner יש שלושה סוגים של רפליקות: רפליקות לקריאה ולכתיבה, רפליקות לקריאה בלבד ורפליקות של עדים. האזורים והטופולוגיות של השכפול שמרכיבים את ההגדרות של מופע הבסיס הם קבועים:
- הגדרות בסיסיות של מופעים באזור יחיד (אזורי) משתמשות רק בעותקים משוכפלים לקריאה ולכתיבה.
- הגדרות בסיסיות של מופע בשני אזורים משתמשות ברפליקות לקריאה ולכתיבה וברפליקות מסוג Witness.
- הגדרות בסיסיות של מכונות וירטואליות במספר אזורים משתמשות בשילוב של כל שלושת סוגי הרפליקות.
אתם יכולים ליצור הגדרות מותאמות אישית של מופעים ולהוסיף רפליקות לקריאה בלבד להגדרות של מופעים אזוריים ורב-אזוריים.
בטבלה הבאה מפורטים סוגי העותקים של Spanner והמאפיינים שלהם:
| סוג הרפליקה | יכולים להצביע | יכול להפוך לראש קהילה | יכול להציג קריאות | אפשר להגדיר את הרפליקה באופן ידני |
|---|---|---|---|---|
| קריאה וכתיבה | כן | כן | כן | לא |
| קריאה בלבד | לא | לא | כן | כן* |
| עד | כן | לא | לא | לא |
* מידע נוסף זמין במאמר בנושא יצירת מכונה עם הגדרת מכונה בהתאמה אישית.
עותקים לקריאה ולכתיבה
עותקים לקריאה ולכתיבה תומכים גם בקריאה וגם בכתיבה. העותקים האלה:
- שמירה של עותק מלא של הנתונים.
- הצגת קריאות.
- יכולים להצביע אם לבצע פעולת כתיבה.
- להשתתף בבחירות להנהגה.
- עומדים בדרישות להפוך לראש קהילה.
- הם סוג הרפליקה היחיד שמשמש במופעים אזוריים.
עותקים משוכפלים לקריאה בלבד
רפליקות לקריאה בלבד תומכות בקריאות בלבד, ולא בכתיבות. הרפליקות האלה לא מצביעות על מנהיגים או על ביצוע כתיבות, ולכן הן מאפשרות לכם להגדיל את קיבולת הקריאה בלי להגדיל את גודל הקוורום שנדרש לכתיבות. עותקים לקריאה בלבד:
- שמירה של עותק מלא של הנתונים, שמשוכפל מהרפליקה הראשית לקריאה ולכתיבה.
- לא משתתפים בהצבעה כדי לבצע פעולות כתיבה. לכן, המיקום של העותקים לקריאה בלבד אף פעם לא משפיע על זמן האחזור של הכתיבה.
- לא עומדים בדרישות להפוך לראש קהילה.
- הצגת קריאות.
- אפשר להגדיל את המודל באופן לא סימטרי. מידע נוסף מופיע במאמר שינוי גודל אוטומטי אסימטרי לקריאה בלבד.
אם העותק הוא העותק הקרוב ביותר לאפליקציה, בדרך כלל אפשר להשתמש בו לקריאות לא עדכניות בלי לבצע נסיעה הלוך ושוב לאזור הראשי, בהנחה שהנתונים לא עדכניים לפחות 15 שניות. אפשר גם להשתמש בקריאות מופנות כדי להפנות עסקאות לקריאה בלבד וקריאות בודדות לסוג מסוים של רפליקה או לאזור מסוים בהגדרת מופע מרובה אזורים. מידע נוסף זמין במאמר בנושא קריאה מודרכת.
יכול להיות שקריאות חזקות ידרשו הלוך ושוב לרפליקה של הלידר. המסע הלוך ושוב נועד רק לניהול המשא ומתן על חותמת הזמן, ולא לשליחת הנתונים בפועל מהשרת הראשי. המשא ומתן על חותמת הזמן הוא פעולה יעילה מבחינת השימוש במעבד במנהל, ובדרך כלל הנתונים כבר בדרך. התקשורת הזו מטופלת באופן אוטומטי על ידי המערכת.
מידע נוסף על קריאות לא עדכניות וקריאות חזקות זמין בקטע קריאות.
עותקים משוכפלים אופציונליים לקריאה בלבד
אתם יכולים ליצור הגדרת מופע אזורית או רב-אזורית בהתאמה אישית ולהוסיף רפליקות אופציונליות לקריאה בלבד כדי להרחיב את הקריאות ולתמוך בקריאות לא עדכניות עם זמן אחזור נמוך. הרפליקה שנוספה עם הרשאת קריאה בלבד צריכה להיות באזור שלא נכלל בהגדרת מכונת הבסיס המוגדרת מראש. רשימת האזורים האופציונליים לקריאה בלבד שאפשר להוסיף מופיעה בעמודה Optional Region בקטע Regional available configurations וגם בקטע תצורות זמינות במספר אזורים. אם לא מופיע המיקום שבחרתם לשכפול לקריאה בלבד, אתם יכולים לבקש אזור חדש לשכפול אופציונלי לקריאה בלבד.
כל העותקים המשוכפלים האופציונליים לקריאה בלבד כפופים לעלויות של קיבולת מחשוב, אחסון ושכפול.בנוסף, הוספה של רפליקות לקריאה בלבד להגדרת מכונה בהתאמה אישית לא משנה את הסכמי ה-SLA של Spanner בהגדרת המכונה.
אם בוחרים להוסיף רפליקה לקריאה בלבד ליבשת שנמצאת ביבשת אחרת מהאזור הראשי, מומלץ להוסיף לפחות שתי רפליקות לקריאה בלבד. כך אפשר לשמור על זמן אחזור נמוך לקריאה במקרה שאחת מהרפליקות לקריאה בלבד לא תהיה זמינה.
מומלץ לבדוק את עומסי העבודה של הביצועים במופעים שאינם מיועדים לייצור, בהתאם להגדרת המופע המותאם אישית. אפשר לעיין בלוח הבקרה של מדד ההשוואה של זמן האחזור והתפוקה בין אזורים כדי לראות נתונים של זמן האחזור החציוני בין אזורים. לדוגמה, אם יוצרים הגדרת מופע מותאמת אישית עם הגדרת הבסיס של eur6 במספר אזורים ועם העתק אופציונלי לקריאה בלבד ב-us-east1, זמן האחזור הצפוי של קריאה חזקה עבור לקוח ב-us-east1 הוא כ-100 אלפיות השנייה, בגלל זמן הלוך ושוב לאזור הראשי ב-europe-west4. קריאות לא עדכניות עם רמת עדכניות מספקת לא כרוכות בזמן הלוך ושוב, ולכן הן מהירות הרבה יותר. אפשר גם להשתמש בתובנות לגבי נעילות ובתובנות לגבי טרנזקציות כדי לזהות טרנזקציות שמובילות לזמני אחזור ארוכים.
הוראות להוספת רפליקות אופציונליות לקריאה בלבד מופיעות במאמר יצירת הגדרת מופע בהתאמה אישית.
עותקים של עדים
עותקים של עדים לא תומכים בפעולות קריאה, אבל הם משתתפים בהצבעה על אישור פעולות כתיבה. הרפליקות האלה מקלות על השגת קוורומים לכתיבה בלי משאבי האחסון והמחשוב שנדרשים לרפליקות לקריאה ולכתיבה כדי לאחסן עותק מלא של הנתונים ולשרת קריאות. העתקים של עדים:
- משמשים במופעים של שני אזורים ומספר אזורים.
- לא לשמור עותק מלא של הנתונים.
- לא להציג קריאות.
- הצבעה אם לבצע פעולות כתיבה.
- להשתתף בבחירת מנהיג אבל לא להיות כשיר להפוך לרפליקה של מנהיג.
תפקיד העותקים המשוכפלים בפעולות כתיבה וקריאה
בקטע הזה מוסבר התפקיד של העותקים המשוכפלים בפעולות כתיבה וקריאה ב-Spanner. ההסבר הזה עוזר להבין למה Spanner משתמש בעותקים משוכפלים של עדים בהגדרות של שני אזורים ומספר אזורים.
בכתיבה
בקשות כתיבה של לקוחות תמיד מעובדות קודם בעותק הראשי, גם אם יש עותק משני שקרוב יותר ללקוח, או אם העותק הראשי מרוחק מהלקוח מבחינה גיאוגרפית. אם אתם משתמשים בהגדרת מופע של אזור כפול או של כמה אזורים, ואפליקציית הלקוח שלכם ממוקמת באזור שאינו האזור הראשי, Spanner משתמש בניתוב שמודע לאזור הראשי כדי לנתב באופן דינמי עסקאות של קריאה וכתיבה, וכך להקטין את זמן האחזור במסד הנתונים. מידע נוסף זמין במאמר בנושא ניתוב שמודע למוביל.
רפליקת המנהיג רושמת ביומן את פעולת הכתיבה הנכנסת ומעבירה אותה במקביל לרפליקות האחרות שעומדות בדרישות להצבעה על פעולת הכתיבה הזו. כל עותק רפליקה שעומד בדרישות משלים את פעולת הכתיבה, ואז שולח בחזרה לשרת הראשי הצבעה לגבי השאלה אם לאשר את פעולת הכתיבה. פעולת הכתיבה מתבצעת כשרוב העותקים המשוכפלים (או הקוורום של פעולות הכתיבה) מסכימים לבצע אותה. ברקע, כל העותקים שנותרו (שאינם עותקים של עדים) מתעדים את הפעולה. אם עותק משוכפל לקריאה-כתיבה או לקריאה בלבד לא מצליח לרשום כתיבות, הוא יכול לבקש את הנתונים החסרים מעותק משוכפל אחר כדי לקבל עותק מלא ועדכני של הנתונים.
ב-Reads
בקשות קריאה של לקוחות עשויות להתבצע או לדרוש תקשורת עם רפליקת המנהיג, בהתאם למצב הבו-זמניות של בקשת הקריאה.
קריאות שהן חלק מטרנזקציה של קריאה-כתיבה מוגשות מהעותק הראשי, כי העותק הראשי שומר על הנעילות שנדרשות כדי לאכוף את האפשרות להסדרה.
יכול להיות ששיטות קריאה יחידות (קריאה מחוץ להקשר של טרנזקציה) וקריאות בטרנזקציות לקריאה בלבד ידרשו תקשורת עם הלידר, בהתאם למצב המקבילות של הקריאה. מידע נוסף על מצבי מקבילות זמין במאמר סוגי קריאה.
בקשות קריאה חזקות יכולות להישלח לכל רפליקה לקריאה ולכתיבה או לקריאה בלבד. אם הבקשה מגיעה לרפליקה שהיא לא הרפליקה הראשית, הרפליקה הזו צריכה לתקשר עם הרפליקה הראשית כדי לבצע את פעולת הקריאה.
בקשות קריאה לא עדכניות מועברות לרפליקה הקרובה ביותר שזמינה לקריאה בלבד או לקריאה וכתיבה, ושעודכנה עד לחותמת הזמן של הבקשה. זו יכולה להיות רפליקת הלידר אם הלידר הוא הרפליקה הקרובה ביותר ללקוח שהנפיק את בקשת הקריאה.
מעקב אחרי שכפול נתונים
אתם יכולים לעקוב אחרי קצב השינוי וכמות הנתונים שמשוכפלים מהרפליקה הראשית לרפליקות באזורים שונים בהגדרת המופע. קצב השינוי הוא בבייטים לשנייה, וכמות הנתונים היא בבייטים. כדי לעשות את זה, משתמשים במדד המעקב Cross region replicated bytes (instance/cross_region_replicated_bytes_count).
כדי לראות את המדד הזה במסוף Google Cloud :
במסוף Google Cloud , עוברים אל Monitoring:
בתפריט הניווט, בוחרים באפשרות Metrics explorer (כלי לבחירת מדדים).
בשדה מדד, לוחצים על התפריט הנפתח בחירת מדד.
בשדה Filter by resource or metric name (סינון לפי שם המשאב או המדד), בוחרים באפשרות Cloud Spanner Instance > Instance > Cross region replicated bytes (מופע Cloud Spanner > מופע > בייטים משוכפלים בין אזורים), ואז לוחצים על Apply (החלה).
המדד הזה זמין רק בקטע מדדים פעילים אם יש פעילות שכפול בין אזורים במופע שלכם. אחרת, הוא יופיע בקטע מדדים לא פעילים. כברירת מחדל, בממשק המשתמש הנתונים מסוננים ומוצגים רק מדדים פעילים. מבטלים את הסימון של התיבה פעיל כדי לראות מדדים פעילים ולא פעילים.
בתרשים מוצג קצב השינוי (בבייט לשנייה) של נתונים משוכפלים בכל מופעי Spanner בטווח הזמן שצוין.
אופציונלי: כדי להציג את כמות הנתונים (בבייטים) שמשוכפלת במקום את קצב השינוי:
- בשדה Aggregation (צבירה), לוחצים על התפריט הנפתח Sum (סכום) ובוחרים באפשרות Configure aligner (הגדרת כלי ההתאמה).
- בשדה פונקציית התאמה, לוחצים על התפריט הנפתח שיעור ובוחרים באפשרות דלתא.
בוחרים באפשרות טבלה או גם וגם כסוג הטבלה במקום באפשרות 'תרשים'.
בטבלה מוצגת כמות הנתונים (בבייטים) ששוכפלו בטווח הזמן שצוין.
אופציונלי: כדי לראות את השימוש במופע או במאפיין מסוים:
- בשדה Filter (מסנן) מוסיפים מסננים, כמו מזהה מופע, מזהה מסד נתונים, אזור מקור, אזור יעד או תג.
- לוחצים על הוספת מסנן כדי להוסיף כמה מסננים.
Google Cloud כאן אפשר לראות את הרשימה המלאה של המדדים. Google Cloud
המאמרים הבאים
- מידע נוסף על הגדרות של מופעים
- איך יוצרים ומנהלים מופעים
- איך יוצרים ומנהלים הגדרות של מופעים
- מידע נוסף על מיקום גיאוגרפי ואזוריםGoogle Cloud