Cassanda Replication Factor और Consistence लेवल के बारे में जानकारी

Edge for Private Cloud v. 4.16.09

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 के अतिरिक्त नोड जोड़े जाते हैं, तो डिफ़ॉल्ट रेप्लिकेशन फ़ैक्टर पर कोई असर नहीं पड़ता. हालांकि, अगर आपको रेप्लिकेशन फ़ैक्टर बढ़ाना है, तो Apigee से संपर्क करें.

उदाहरण के लिए, अगर 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 के अन्य नोड जोड़े जाते हैं, तो एक जैसा होने के लेवल पर कोई असर नहीं पड़ता. हालांकि, अगर आपको कंसिस्टेंसी लेवल बदलना है, तो Apigee से संपर्क करें.