מידע על גורם השכפול של Cassandra ורמת העקביות

מידע על גורם הרפליקציה של Cassandra

Cassandra מאחסנת רפליקות של נתונים במספר צמתים כדי להבטיח אמינות ועמידות לכשלים. אסטרטגיית הרפליקציה לכל מרחב מפתחות של Edge קובעת את הצמתים שבהם רפליקציות ממוקם.

המספר הכולל של רפליקות למרחב מפתחות בתוך אשכול של Cassandra נקרא גורם הרפליקציה של מרחב המפתחות. גורם רפליקציה של אחד פירושו שקיים רק גורם אחד של כל שורה באשכול קסנדרה. גורם רפליקציה של שניים פירושו שיש שני של כל שורה, כאשר כל עותק נמצא בצומת אחר. לכל הרפליקות יש חשיבות שווה; אין רפליקה ראשית או מאסטר.

במערכת ייצור עם שלושה צמתים של Cassandra או יותר בכל מרכז נתונים, ברירת המחדל גורם הרפליקציה במרחב המפתחות של Edge הוא שלושה. ככלל, גורם הרפליקציה לא יחרוג ממספר הצמתים של Cassandra באשכול.

השתמשו בתהליך הבא כדי להציג את הסכימה של Cassandra, שמציגה את גורם הרפליקציה בכל מרחב מקשים של Edge:

  1. מתחברים לצומת של Cassandra.
  2. מריצים את הפקודה הבאה:
    /opt/apigee/apigee-cassandra/bin/cassandra-cli -h $(hostname -i) <<< "show schema;"

    כאשר $(hostname -i) מוביל לכתובת ה-IP של צומת Cassandra. או לך יכול להחליף את $(hostname -i) בכתובת ה-IP של הצומת.

בכל מרחב מקשים, הפלט אמור להיראות כך:

create keyspace kms
  with placement_strategy = 'NetworkTopologyStrategy'
  and strategy_options = {dc-1 : 3}
  and durable_writes = true;

ניתן לראות שעבור מרכז הנתונים 1, dc-1, גורם ברירת המחדל של הרפליקציה עבור מרחב המקשים kms הוא 3 עם שלושה צמתים של Cassandra.

אם מוסיפים עוד צמתים של Cassandra לאשכול, גורם ברירת המחדל של הרפליקציה לא הושפעו.

לדוגמה, אם מגדילים את מספר הצמתים של Cassandra לשישה, ומשאירים את הרפליקציה לשלוש פעמים, לא מוודאים שלכל הצמתים של Cassandra יש עותק של כל הנתונים. אם יורד, גורם רפליקציה גבוה יותר פירושו הסתברות גבוהה יותר שהנתונים בצומת קיים באחד מהצמתים הנותרים. החיסרון של גורם רפליקציה גבוה יותר הוא זמן אחזור בכתיבת נתונים.

מידע על רמת העקביות של Cassandra

רמת העקביות של Cassandra מוגדרת כמספר המינימלי של צומתי Cassandra שחייבים לאשר פעולת קריאה או כתיבה לפני שהפעולה תיחשב כמוצלחת. אפשר להקצות רמות עקביות שונות למרחבי מפתחות שונים ב-Edge.

כשמתחברים ל-Cassandra לצורך פעולות קריאה וכתיבה, מעבד הודעות וניהול הודעות בדרך כלל, צמתים של שרתים משתמשים בערך Cassandra של LOCAL_QUORUM כדי לציין את רמת העקביות של מרחב מפתחות. אבל חלק ממרחבי המפתחות מוגדרים להשתמש לרמת העקביות של 1.

כך מחשבים את הערך של LOCAL_QUORUM במרכז נתונים:

LOCAL_QUORUM = (replication_factor/2) + 1

כפי שתואר קודם, גורם הרפליקציה שמוגדר כברירת מחדל בסביבת הייצור של Edge עם שלושה צמתים של קסנדרה הם שלושה. לכן, ערך ברירת המחדל של LOCAL_QUORUM = (3/2) +1 = 2 (הערך מעוגל כלפי מטה למספר שלם).

כאשר LOCAL_QUORUM = 2, לפחות שניים מתוך שלושת הצמתים של Cassandra בנתונים צריך להגיב לפעולת קריאה/כתיבה כדי שהפעולה תתבצע בהצלחה. לצומת עם שלושה צמתים לכן אשכול קסנדרה יכול לעמוד בתנאים להשבתת צומת אחד בכל מרכז נתונים.

כשמציינים את רמת העקביות בתור LOCAL_QUORUM, דפדפן Edge מבטל את זמן האחזור שנדרשות על ידי אימות פעולות במספר מרכזי נתונים. אם במרחב מפתחות נעשה שימוש ב-Cassandra הערך של QUORUM בתור רמת העקביות, פעולות קריאה/כתיבה צריכות להיות מתבצע אימות בכל מרכזי הנתונים.

כדי לראות את רמת העקביות שבה נעשה שימוש בצמתים של מעבד ההודעות או של שרת הניהול:

  1. מתחברים לצומת של מעבד הודעות.
  2. משנים לספרייה /opt/apigee/edge-message-processor/conf:
    cd /opt/apigee/edge-message-processor/conf
  3. כדי לשמור על עקביות בכתיבה:
    grep -ri "write.consistencylevel" *
  4. כדי לשמור על עקביות הקריאה:
    grep -ri "read.consistencylevel" *
  5. מתחברים לצומת של שרת הניהול.
  6. משנים לספרייה /opt/apigee/edge-management-server/conf:
    cd /opt/apigee/edge-management-server/conf
  7. חוזרים על שלבים 3 ו-4.

אם תוסיפו עוד צמתים של Cassandra לאשכול, רמת העקביות לא תושפע.