רוב יישומי המסחר האלקטרוני הם בעלי אפס סובלנות לזמן השבתה. כל השפעה על משאבי היישום יכולה להשפיע על מדדי הזמינות הכוללים של האתר. מסד הנתונים Azure Cosmos הוא אחד ממסדי הנתונים NoSQL המרכזיים בשימוש בתעשייה. למרות שמסד הנתונים Azure Cosmos עצמו מספק זמינות מינימלית של 99.99% עבור אזור אחד ללא אזור זמינות, כיצד נוכל לשפר עוד יותר את זמינות מסד הנתונים עם האפשרויות הזמינות ב-Azure Cosmos?
קריאה וכתיבה מרובות אזורים
קריאות באזורים בודדים ישפיעו על הזמינות ויובילו גם לנקודת כישלון אחת. לכן, יישומים עם עומס קריאה צריכים לפחות להפעיל קריאה מרובת אזורים, אף על פי שכתיבה מרובת אזורים אינה אופציה עבור יישום. אבל, כתיבה מרובת אזורים מספקת זמינות גבוהה יותר עבור יישומים עם עומס קריאה וכתיבה.
עם יכולת כתיבה מרובת אזורים, אתה יכול להפעיל שכפול רב-מאסטר, שבו כל האזורים המוגדרים יכולים לשמש כנקודות כתיבה.
שיטות עבודה מומלצות
- בחר אזורים הקרובים יותר לאזור שבו היישום מופעל.
- הגדר מספר אזורים מועדפים על פי דרישות היישום כדי לשפר את הזמינות.
- הגדר יותר מאזור מועדף אחד ביישום עבור קריאות וכתיבות כדי לשפר את הזמינות ולהפחית את השיהוי.
- הגדר את האזורים המועדפים בסדר האזורים הנוכחיים או הקרובים ביותר של היישום קודם ברשימה.
יישום מופעל במערב ארה"ב 2
//הגדר את היישום המופעל במערב ארה"ב 2 כפי שמוצג למטה
import com.azure.cosmos.CosmosClientBuilder;
import com.azure.cosmos.CosmosClient;
// ...
CosmosClientBuilder clientBuilder = new CosmosClientBuilder()
.setEndpoint(accountEndpoint)
.setKey(accountKey)
.setPreferredRegions(Arrays.asList("West US 2", "East US"));
CosmosClient client = clientBuilder.buildClient();
//
יישום מופעל במזרח ארה"ב
//להגדיר את האפליקציה שפורסמה במזרח ארצות הברית כך
import com.azure.cosmos.CosmosClientBuilder;
import com.azure.cosmos.CosmosClient;
// ...
CosmosClientBuilder clientBuilder = new CosmosClientBuilder()
.setEndpoint(accountEndpoint)
.setKey(accountKey)
.setPreferredRegions(Arrays.asList( "East US","West US 2"));
CosmosClient client = clientBuilder.buildClient();
//
מסקנה
למרות שאפשרות כתיבה וקריאה מרחבים מרובים יכולה לספק זמינות גדולה יותר, להגדיר את פעולות הקריאה והכתיבה של האפליקציה קרוב יותר לאזור בו היא מופצת ולספק יותר מאזור קודם אחד יכול לעזור לאפליקציה לחזור מיד לאזור הזמין בלי כל התערבות ידנית.
רמות עדכניות
בחר רמות עדכניות בהתאם לדרישות האפליקציה. ציפיות עדכניות גבוהות יכולות להוביל לזמינות מופחתת. אם האפליקציה דורשת עדכניות חזקה של הנתונים, וודא כי היא יכולה להתמודד עם איחורים גבוהים אפשריים. להפך, אם עדכניות חלשה מתקבלת, האפליקציה יכולה להרוויח מספקות גבוהה וזמינות משופרת.
מסקנה
בחירת רמת עדכניות הנכונה תלויה באופן בלעדי בצורך של האפליקציה, ולמרות שיתכן שיהיה השפעה על זמינות של עדכניות חזקה, כולליות של האפליקציה בסך הכל לא תיפגע מבחירת רמות עדכניות חזקות.
כישלון
כישלון ידני
מפתחים או אנשי צוות יכולים להתחבר לפורטל ולבצע כישלון ידני לאזור הבא הזמין במהלך תקלה באזור שבו האפליקציה מחוברת כרגע. למרות שאפשרות זו נותנת זמינות במידה מסוימת, היא דורשת התערבות ידנית לביצוע כישלון, דבר שיכול להשפיע על מדדי הזמינות הכוללים של האתר בכלל.
כישלון באחריות השירות
אפשור ניהול החלפת השירות מאפשר לקוסמוס להחליף באופן אוטומטי לאזור הבא הזמין ביותר בהתאם לעדיפות שהוגדרה בפורטל. אפשרות זו מסירה את הצורך בשינויים ביישום במהלך ההחלפה.
מסקנה
אמנם שניהם מספקים זמינות מוגברת, הגמישות של נפילת תקן ניהול ההחלפה מתן אפשרות לעבור לאזור הבא הזמין מבלי לדאוג לפרטי פרסום היישום.
מפתח חלוקה ואינדקסים
- הגדרת מפתח חלוקה ב-Azure Cosmos DB חיונית לפני הפעלת כל יישום עליו. Cosmos DB יעיל ביישומים המבוססים קריאה, לכן חשוב לשקול את קריטריוני החיפוש ולהגדיר את השאילתות לקריאת רשומות ממסד הנתונים לפני שמשולב את Cosmos DB ביישום שלך.
- כברירת מחדל, כל פריט באמצעי Cosmos DB מופעל באופן אוטומטי. עם זאת, הכחשה של פריטים או שדות מסוימים מאינדיקסציה יכולה לעזור להפחתת צריכת יחידות בקשה (RUs). חשוב כמו שכן להוסיף שדות לאינדוקס כפי שהוספת אינדקסים על שדות שאינם נדרשים להיות באינדקס.
- להימנע מאחסון פריטים בגודל גדול במיוחד ב-Azure Cosmos DB.
- למזער שאילות צולבות חלוקות ככל האפשר.
- לוודא שהשאילות כוללות מסננים לשיפור היעילות.
- להימנע משאילות כתפי מפתח זהות; לממש שכבת מטמון על מקרים שימוש כאלו.
אוטוסקייל של כוח
Azure Cosmos DB תומך גם בכוח סטנדרטי (ידני) ובאוטוסקייל של תפוקה ברמת המיכל.
תפוקה ידנית
היישום קובע את ה-RU/s המותר, ובקשות שמגיעות למגבלה של RU/s יוגבלו למשך הזמן שנקבע. נדרשת התערבות ידנית כדי להגדיל את הקיבולת.
קיבולת אוטומטית
היישום יכול להגדיר את הקיבולת המקסימלית שהוא תומך בה, וקוסמוס מתכוונן אוטומטית על בסיס התנועה המתקבלת. כאשר חורגים מהקיבולת האוטומטית, בקשות יוגבלו למשך הזמן שנקבע.
סיכום
אם כי שניהם מספקים זמינות מוגברת, קיבולת אוטומטית מעניקה את הגמישות להתמודד עם תנועה משתנה מבלי להגביל או להשפיע על הזמינות.
גיבוי ושחזור
Azure Cosmos DB מאפשרת גיבויים תקופתיים כברירת מחדל לכל החשבונות
גיבוי תקופתי
גיבויים מתבצעים באופן תקופתי עבור כל דקה מוגדרת עם ערך מינימלי של שעה אחת ומקסימלי של 24 שעות. זה גם מספק אפשרויות לשמור את אחסון הגיבוי במצב יתר על גבי רמה גיאוגרפית, אזורית או מקומית. צוות היישום צריך לפנות לתמיכה כדי לשחזר את הגיבוי.
גיבוי מתמשך
אפשרות הגיבוי המתמשך שומרת את אחסון הגיבוי בבסיס הנתונים של קוסמוס באזור המוגדר, ומאפשרת שמירה של נתונים מה-7 ימים האחרונים או מה-30 ימים האחרונים. זה גם מספק שחזור בנקודה בזמן.
סיכום
בחירה בגיבוי מתמשך מבטיחה שחזור מהיר יותר של בסיס הנתונים. זה מסלק את הצורך באינטראקציות חוזרות עם התמיכה לשחזור בסיס הנתונים ומאפשר ליישומים לשחזר אותו לכל אזור (היכן שהגיבויים קיימים) בנקודת זמן ספציפית.
בסיכום, בעוד מדדי זמינות חיוניים לכל אפליקציה, הם מגיעים בעלות. אפשרויות שמציעות זמינות גבוהה יותר מהתצורה התקנית עלולות לגרום להוצאות נוספות. יתר על כן, האפשרויות שצוינו לעיל עשויות שלא להיות נחוצות או מתאימות לכל האפליקציות שמשתמשות ב-Cosmos. עם זאת, חשוב לאמץ וליישם את הפרקטיקות הטובות ב-Azure Cosmos כדי לייעל ביעילות את הזמינות.
Source:
https://dzone.com/articles/how-to-maximize-the-azure-cosmos-db-availability