कैसंड्रा रेप्लिकेशन फ़ैक्टर और कंसिस्टेंसी लेवल के बारे में जानकारी

Cassandra रेप्लिकेशन फ़ैक्टर के बारे में जानकारी

Cassandra, डेटा की कॉपी को कई नोड पर सेव करता है, ताकि डेटा को सुरक्षित रखा जा सके और गड़बड़ियों को ठीक किया जा सके. हर Edge कीस्पेस के लिए रेप्लिकेशन की रणनीति से यह तय होता है कि रेप्लिका को किन नोड पर रखा जाएगा.

Cassandra क्लस्टर में किसी कीस्पेस के लिए रेप्लिका की कुल संख्या को, कीस्पेस का रेप्लिकेशन फ़ैक्टर कहा जाता है. रेप्लिकेशन फ़ैक्टर एक होने का मतलब है कि Cassandra क्लस्टर में हर लाइन की सिर्फ़ एक कॉपी है. रेप्लिकेशन फ़ैक्टर दो होने का मतलब है कि हर पंक्ति की दो कॉपी हैं. हर कॉपी अलग-अलग नोड पर होती है. सभी प्रतिरूप एक जैसे अहम होते हैं. इनमें कोई प्राइमरी या मास्टर प्रतिरूप नहीं होता.

हर डेटा सेंटर में तीन या उससे ज़्यादा Cassandra नोड वाले प्रोडक्शन सिस्टम में, Edge कीस्पेस के लिए डिफ़ॉल्ट रेप्लिकेशन फ़ैक्टर तीन होता है. आम तौर पर, रेप्लिकेशन फ़ैक्टर, क्लस्टर में मौजूद Cassandra नोड की संख्या से ज़्यादा नहीं होना चाहिए.

Cassandra स्कीमा देखने के लिए, यह तरीका अपनाएं. इससे हर Edge कीस्पेस के लिए, रेप्लिकेशन फ़ैक्टर दिखता है:

  1. Cassandra नोड में लॉग इन करें.
  2. यह कमांड चलाएं:
    /opt/apigee/apigee-cassandra/bin/cassandra-cli -h $(hostname -i) <<< "show schema;"

    जहां $(hostname -i), Cassandra नोड के आईपी पते में बदल जाता है. इसके अलावा, $(hostname -i) को नोड के आईपी पते से बदला जा सकता है.

हर कीस्पेस के लिए, आपको इस फ़ॉर्मैट में आउटपुट दिखेगा:

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

डेटा सेंटर 1, dc-1 के लिए, kms कीस्पेस के लिए डिफ़ॉल्ट रेप्लिकेशन फ़ैक्टर तीन है. यह तीन Cassandra नोड वाले इंस्टॉलेशन के लिए है.

अगर क्लस्टर में Cassandra के अतिरिक्त नोड जोड़े जाते हैं, तो डिफ़ॉल्ट रेप्लिकेशन फ़ैक्टर पर कोई असर नहीं पड़ता.

उदाहरण के लिए, अगर Cassandra नोड की संख्या बढ़ाकर छह कर दी जाती है, लेकिन रेप्लिकेशन फ़ैक्टर को तीन पर ही छोड़ दिया जाता है, तो यह पक्का नहीं किया जा सकता कि सभी Cassandra नोड के पास पूरे डेटा की कॉपी हो. अगर कोई नोड काम करना बंद कर देता है, तो ज़्यादा रेप्लिकेशन फ़ैक्टर का मतलब है कि नोड पर मौजूद डेटा के बाकी नोड में से किसी एक पर मौजूद होने की संभावना ज़्यादा है. रेप्लिकेशन फ़ैक्टर ज़्यादा होने का नुकसान यह है कि डेटा लिखने में ज़्यादा समय लगता है.

Cassandra कंसिस्टेंसी लेवल के बारे में जानकारी

Cassandra कंसिस्टेंसी लेवल को Cassandra नोड की कम से कम संख्या के तौर पर तय किया जाता है. यह संख्या, किसी कार्रवाई को सफल मानने से पहले, रीड या राइट ऑपरेशन को स्वीकार करती है. अलग-अलग Edge कीस्पेस को अलग-अलग कंसिस्टेंसी लेवल असाइन किए जा सकते हैं.

रीड और राइट ऑपरेशन के लिए Cassandra से कनेक्ट करते समय, मैसेज प्रोसेसर और मैनेजमेंट सर्वर नोड आम तौर पर, कीस्पेस के लिए कंसिस्टेंसी लेवल तय करने के लिए, Cassandra की LOCAL_QUORUM वैल्यू का इस्तेमाल करते हैं. हालांकि, कुछ कीस्पेस को एक के कंसिस्टेंसी लेवल का इस्तेमाल करने के लिए तय किया जाता है.

किसी डेटा सेंटर के लिए, LOCAL_QUORUM की वैल्यू का हिसाब इस तरह लगाया जाता है:

LOCAL_QUORUM = (replication_factor/2) + 1

जैसा कि ऊपर बताया गया है, तीन Cassandra नोड वाले Edge प्रोडक्शन एनवायरमेंट के लिए, डिफ़ॉल्ट रेप्लिकेशन फ़ैक्टर तीन होता है. इसलिए, LOCAL_QUORUM की डिफ़ॉल्ट वैल्यू = (3/2) +1 = 2 (वैल्यू को पूर्णांक में बदल दिया जाता है).

LOCAL_QUORUM = 2 होने पर, डेटा सेंटर में मौजूद तीन Cassandra नोड में से कम से कम दो नोड को रीड/राइट ऑपरेशन का जवाब देना होगा, ताकि ऑपरेशन पूरा हो सके. तीन नोड वाले Cassandra क्लस्टर के लिए, हर डेटा सेंटर में एक नोड के बंद होने पर भी क्लस्टर काम कर सकता है.

कंसिस्टेंसी लेवल को LOCAL_QUORUM के तौर पर सेट करके, Edge कई डेटा सेंटर में कार्रवाइयों की पुष्टि करने में लगने वाले समय को कम करता है. अगर किसी कीस्पेस ने Cassandra QUORUM वैल्यू को कंसिस्टेंसी लेवल के तौर पर इस्तेमाल किया है, तो सभी डेटा सेंटर में रीड/राइट ऑपरेशन की पुष्टि करनी होगी.

Edge मैसेज प्रोसेसर या मैनेजमेंट सर्वर नोड के इस्तेमाल किए गए कंसिस्टेंसी लेवल को देखने के लिए:

  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. तीसरे और चौथे चरण को दोहराएं.

अगर क्लस्टर में Cassandra के अन्य नोड जोड़े जाते हैं, तो एक जैसा होने के लेवल पर कोई असर नहीं पड़ता.