הנדסה אזרחית & הנדסה מבנית
שיטות טובות ביותר ליציבות נתונים חנויות נתונים ללא Server
Table of Contents
הבנת האתגר של קונסולות נתונים בחנויות נתונים ללא Server
חנויות נתונים ללא שרת כגון Amazon DynamoDB, Azure Cosmos DB ו-Google Cloud Firehouse מציעות יישומים של שימוש אוטומטי, תמחור שימוש בתשלום, וצמצום התפעולי מעל פני השטח, עם זאת, האופי המופץ שלהם מציג את העסקאות הבסיסיות של מסחר בעקביות נתונים.כאשר יישום קורא נתונים באופן מיידי לאחר כתיבתו, המשתמש מצפה לראות את הערך האחרון.במערכת מבוזרת גלובלית, השגת כי לא מבטיח זמינות בלתי יעילה של 2Funit:
עקביות נתונים אינה תכונה בגודל אחד של נכסים.עומסי עבודה שונים דורשים ערבויות שונות.לדוגמה, מערכת מלאי מסחר אלקטרוני חייבת לעולם לא למכור פריטים, הדורשים עקביות חזקה לעדכוני מניות.אכילה חברתית-מדיה, מצד שני, יכול לסבול כמה שניות של lag בעוד פוסט-מחדש propreitance מודל ו- הטמעת תבניות מבטיח השרתים שלך להתנהג באופן מצופה עדיין מפלטפורמת גמישות בעוד שעדיין לא-זמנית של .
מודלים עקביים בחנויות ללא Server
יציבות חזקה
עקביות חזקה מבטיחה כי כל קריאה מחזירה את הכתיבה האחרונה. במערכות ללא שרת, זה מושג לעתים קרובות על ידי קריאה מן ההעתק הראשוני או באמצעות פרוטוקולים המבוססים על quorum. שירותים כמו DynamicsmoDB תמיכה FLT:0 באופן עקבי קורא הסתייגות קוראות FLT:1 (במחיר נוסף ועקביות) ו- Azure Cosmos DB מציע עקבי עבור חשבונות מבוזרים ברחבי העולם באמצעות כפלה, כולל יעילות גבוהה, כאשר משתמשים, או דיוק מוחלט, או אימות פיננסים, או יעילות.
שקיפות Eventual Consistency
עקביות אירועית היא ברירת המחדל עבור רוב חנויות הנתונים ללא שרת.זה אומר שאם לא חדש כותב עשוי פריט נתונים, בסופו של דבר (בדרך כלל בתוך מילימטרים או שניות) כל ההעתקים יתאחדו לאותו הערך.מודל זה מספק את הזמינות הטובה ביותר ואת הכדאיות הנמוכה ביותר.זה אידיאלי עבור עומסי עבודה לקריאה, קטלוגי מוצרים, ומערכות אחסון שבו מפלט קורא הם קצרים עבור חלונות.
שקיפות קווקז
עקביות קווקזית משמרת את סדר הפעולות הקשורות סיבתיות.אם ניתוח A (תמונה פרופיל עדכני) מתרחש לפני הפעלת B (post a commentencing את התמונה), אז כל צופה יראה לפני B. מודל זה יושב בין עקביות חזקה ובסופו של דבר נתמך על ידי שירותים כגון FLT:0 Google Cloud DatahouseFLT:1 ).זה שימושי עבור עריכת שיתופית, הזנת חברתית, יישומים שבו אירוע צ'אט.
הפרקטיקה הטובה ביותר לשמירה על יציבות
בחר מודל ההסכמה ההסתברותי לכל מבצע
במקום לבחור רמה אחידה אחת עבור היישום כולו שלך, לתכנן כל קריאה קריטית או לכתוב פעולה עם הדרישה עקביות משלו. בדינמוDB, באפשרותך לציין FLT:0 עבור הפרט FLT 1 או לכתוב פעולה עם דרישות עקביות משלו; 2 קורא בעת עזיבת קריאה אחרת בסופו של דבר עקבית גישה היברידית זו מאזן ביצועים ותיקון החלטותיך ולבחון אותם תחת עומס להבטיח שקיפות בתוך גבולות מקובלים.
השתמש בעסקאות מרשימות עם סאגות או שני-Phase Commit
(ב) כאשר תהליך עסקי משתרע על מספר רב של חנויות נתונים או שירותים, עליך מנגנון לשמירה על אטומיות. (FLT:0) עסקאות מחוסמות (FLT:1), כגון פרוטוקול שני הphase מתחייבים (2PC) - להבטיח שכל צד משתתף מתחייב או aborts יחד עם זאת, 2PC יכול להיות איטי ולהפחית את הזמינות היא ה-LTF:2Savair:
יישום אסטרטגיות לפתרון סכסוכים
(ב) כותב באותו פריט נתונים בפריצת ריבוי רגולציה יכול ליצור סכסוכים.חנויות ללא שרת בדרך כלל להשתמש ב-FLT:0last-writing-wins (LW)veFLT:1, אשר שומרת על התקופות האחרונות ביותר בעת פשוטה, LW יכול לאבד נתונים אם שעונים אינם מסנכרנים.
4.לeverage Idempotent פעולות ו Retries
כשלים ברשת או שגיאות טרנסיות יכולים לגרום לחזרות הלקוח, אשר עלול לגרום לעיבוד כפול.עיצוב פעולות כדי להיות FLT:0idempotentFLT:1 מבטל את הסיכון הזה.לדוגמה, להקצות מפתח idempotency ייחודי לכל בקשה בכתב; השרת יכול אז לדחות בקשות כי שיתוף אותו מפתח.
מעקב אחר אינטגרציית נתונים עם שינוי זרמים ואאודטס
בסביבה ללא שרת, אתה יכול להשתמש לכידת נתונים (CDC)Figt1 Integrated תכונות כגון DMODB Streams, קוסמוס DB Change Feed, או מאזינים בזמן אמת של Firehouse לפקח על כל השינויים. הגדר פקד או פונקציה ענן כדי לאמת את הנתונים invariants להחזיק לאחר כל שינוי.
אופטימיזציה של נתונים עבור המקרה שלך
שכפול גלובלי משפר את הסבלנות עבור משתמשים ברחבי העולם, אך מגביר את החלון עבור אי עקביות.ההגדרה מחדש עם רמת עקביות נאותה לשקול שימוש FLT:0active-active-active-active-alearFLT:1 לעומת .FLT:2active-passive-passive-passivesFLT 3 כדי להתנצלות. Active-active (multi-master) מציעה קליטה נמוכה יותר, אך דורשת פתרון חזק יותר של קוד פתוח, אך דורש פתרון חזק יותר, בין אם הוא חזק יותר, בין אם הוא מוסיף לקוד פתוח, בין אם הוא מוסיף לקוד פתוח, בין אם הוא חזק יותר, בין אם הוא מוסיף לקוד פתוח, בין אם הוא מוסיף לקוד פתוח, בין אם הוא מוסיף, בין אם הוא חזק יותר, בין אם הוא מוסיף, בין אם הוא מוסיף, בין אם הוא חזק יותר, בין אם הוא מוסיף, לבין רצף, בין אם הוא מספק, לבין רצף, בין אם הוא מוסיף, בין אם הוא חזק יותר, בין אם הוא חזק יותר, לבין רצף, בין אם הוא מוסיף, לבין רצף, בין אם הוא מוסיף, בין אם הוא חזק יותר, לבין רצף, בין אם הוא מוסיף, בין אם הוא מוסיף, בין אם הוא מוסיף לקודד-
דפוסים אדריכליים המקיפים את ההסכמה
אחריות על אחריות (CQRS)
(ה) מפריד בין מודלים לקריאת מודלים, המאפשר לכל אחד להיות מותאם באופן עצמאי.כתובים ללכת לחנות עקבית מאוד; קורא מגיע בסופו של דבר תחזיות עקביות.תבנית זו היא חזקה במיוחד כאשר בשילוב עם AFLT:0event sourcingIRFLT:1 גישה, שבו כל השינויים במדינה נשמרים כאירועים לא מתואמים.
אירוע Sourcing and Eventual Consistency
מיקור אירועים מחסנים של אירועים במקום המצב הנוכחי.כי אירועים הם נספח בלבד ו unmutable, הם באופן טבעי עקבי שירותים כמו דינמו-DB או קוסמוס DB יכולים לפעול כחנויות אירועים.צרכנים מעבדים אירועים באופן סינכרוני, בסופו של דבר בונים מודלים קריאה.במקרה הנדיר של סכסוך, אתה יכול לשחזר את האירוע ממחסום ידוע.
ארכיון תגיות: Reliable Messaging
כאשר פונקציה ללא שרת כותבת למסד נתונים ולאחר מכן שולחת הודעה לתור, שני המבצעים עשויים לא להיות אטומיים.ה-FLT:0outbox PatternFLT:1 לפתור את זה על ידי אחסון ההודעה באותו מסד נתונים בתוך אותה עסקה.תהליך נפרד (כגון מעבד זרם) קורא את תיבת הדואר האלקטרוני ומפרסם את ההודעה.
תגית: Geo-Distribution and Offline
יישומי מובייל ו-IoT פועלים לעתים קרובות במצב לא מקוון וסנכרנים מאוחר יותר.ספק SDKs ללא שרת מספקים התמדה לא מקוונת עם סינכרון המטפל בסכסוכים באמצעות פותרי קונפליקט מותאמים אישית.לדוגמה, AWS AppSync עם דינמוDB יכול למזג גרסאות המבוססות על דגימות או לוגיקה מוגדרת של הלקוח.כאשר משתמשים בספריות כאלה, תמיד לבדוק את לוגיקה לפתרון סכסוכים בתנאים רשתיים אמיתיים ולעקוב אחר מספר הסכסוכים.
עבור ריבוי רגולציה עקביות, השתמש בקבוצות של FLT:0 קונבנציונאליות (FLT:1), שבו ניתן - מושג נתמך על ידי קוסמוס DB שקבוצות קשורות פריטים כך שהם תמיד משוכפלים יחד.זה מונע תרחישים שבהם תמונת הפרופיל של המשתמש מעודכנת באזור A אך העדכון הביולוגי שלהם (באותה קבוצה) עדיין לא הגיע לאזור B.
אסטרטגיות בדיקה ואימות
באגים עקביים לעתים קרובות על פני השטח רק תחת עומסים מבוזרים.לכתוב בדיקות אינטגרציה שפועלות נגד חיקוי בשרת אמיתי או מקרה ענן ודמיית של כותב זהה וקריאה. כלים כמו FLT:0JepsenFLT:1 יכול לוודא כי החנות בנתונים שלך מתנהגת כראוי תחת מחיצות רשת.עבור ייצור, ליישם פריסות צנריות בהדרגה תנועה לקוד סינתטי חדש תוך ניטור עקביות עבור מדדים מקובלים (S) עבור מדדים של נתונים סטנדרטיים (מסומים).
סיכום
עקביות נתונים בחנויות נתונים ללא שרת דורשת אפשרויות אדריכליות מכוונת.על ידי הבנת מודלים עקביות זמינים, הפעלת עסקאות מבוזרות או תבנית הסאגה, תכנון פעולות idempotent, ומינוף מנגנוני פתרון סכסוכים, אתה יכול לבנות יישומים שהם גם מדרגיים ואמינה.לעקוב אחר עקביות המערכת שלך ערבויות באמצעות שינויים וביקורת, ולאמץ דפוסים כמו CQ, אירוע, מיקור חוץ, ומחוץ לתבנית כדי לשמור על תפקוד תקין של שירות זה, אפילו כדי לתקן את שיטות עבודה אלה.