Cassandra Archiटेक्चर और प्रतिकृति कारक

⚡ स्मार्ट सारांश

Cassandra यह आर्किटेक्चर डेटा को पीयर नोड्स में वितरित करता है, जिससे विफलता का कोई एकल बिंदु नहीं होता है। समन्वय के लिए गॉसिप और स्थायित्व के लिए प्रतिकृति का उपयोग किया जाता है। यह पृष्ठ प्रत्येक घटक, प्रतिकृति रणनीतियों, संगति स्तरों और आंतरिक लेखन और पठन पथों को विस्तार से बताता है।

  • पीयर-टू-पीयर डिज़ाइन: प्रत्येक नोड समान है और गॉसिप प्रोटोकॉल के माध्यम से स्थिति का आदान-प्रदान करता है, इसलिए विफल होने के लिए कोई मास्टर मौजूद नहीं है।
  • 🧱 भंडारण घटक: एक राइट ऑपरेशन कमिट लॉग और मेमटेबल में दर्ज होता है, फिर डिस्क पर एक अपरिवर्तनीय एसएसटेबल में फ्लश हो जाता है।
  • 🔁 प्रतिकृति रणनीति: SimpleStrategy एक डेटा सेंटर के लिए उपयुक्त है, जबकि NetworkTopologyStrategy प्रति डेटा सेंटर और प्रति रैक में प्रतिकृतियां स्थापित करती है।
  • 🔢 प्रतिकृति कारक: किसी भी एकल विफलता बिंदु को दूर करने के लिए तीन नोड्स पर तीन प्रतियां रखना मानक व्यवस्था है।
  • संगति स्तर: प्रत्येक क्वेरी के लिए चुना गया स्तर यह निर्धारित करता है कि क्लाइंट को उत्तर देने से पहले कितने प्रतिकृतियों को स्वीकृति देनी होगी।
  • 🔍 पढ़ने का मार्ग: डायरेक्ट, डाइजेस्ट और रीड रिपेयर रिक्वेस्ट मिलकर वर्तमान डेटा लौटाते हैं और पुरानी प्रतिकृतियों को चुपचाप ठीक करते हैं।

Cassandra Archiवास्तुकला प्रतिकृति

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

इस प्रकार की घटना का कारण Cassandraकी वास्तुकला यह थी कि हार्डवेयर विफलता कभी भी हो सकती है। कोई भी नोड डाउन हो सकता है। विफलता के मामले में दूसरे नोड में संग्रहीत डेटा का उपयोग किया जा सकता है। इसलिए, Cassandra इसकी वितरित वास्तुकला के साथ डिज़ाइन किया गया है।

Cassandra पीयर टू पीयर वितरित फैशन आर्किटेक्चर के साथ विभिन्न नोड्स पर डेटा संग्रहीत करता है।

सभी नोड्स एक दूसरे के साथ सूचनाओं का आदान-प्रदान करते हैं गपशप प्रोटोकॉलगपशप एक प्रोटोकॉल है Cassandra जिसके द्वारा नोड्स एक दूसरे के साथ संवाद कर सकते हैं।

के घटक Cassandra Archiटेक्चर

इसमें निम्नलिखित घटक हैं Cassandra Archiटेक्चर:

Cassandra Archiटेक्चर
Cassandra Archiटेक्चर आरेख

ऊपर दिए गए आरेख में घटकों को इस प्रकार दर्शाया गया है: नोड्स एक डेटा सेंटर के अंदर स्थित होते हैं, डेटा सेंटर एक क्लस्टर के अंदर स्थित होते हैं, और कमिट लॉग, मेमटेबल और एसएसटेबल प्रत्येक व्यक्तिगत नोड के अंदर मौजूद होते हैं।

आसंधि

नोड वह स्थान है जहाँ डेटा संग्रहीत किया जाता है। यह इसका मूल घटक है Cassandra.

डाटा केंद्र

नोड्स के संग्रह को डेटा सेंटर कहा जाता है। कई नोड्स को डेटा सेंटर के रूप में वर्गीकृत किया जाता है।

Cluster

क्लस्टर कई डेटा केंद्रों का संग्रह है।

प्रतिबद्ध लॉग

प्रत्येक लेखन ऑपरेशन कमिट लॉग में लिखा जाता है। कमिट लॉग का उपयोग क्रैश रिकवरी के लिए किया जाता है।

मेम की मेज

कमिट लॉग में डेटा लिखे जाने के बाद, डेटा मेम-टेबल में लिखा जाता है। डेटा अस्थायी रूप से मेम-टेबल में लिखा जाता है।

एसएसटेबल

जब मेमोरी टेबल एक निश्चित सीमा तक पहुँच जाती है, तो डेटा को एसएसटेबल डिस्क फ़ाइल में स्थानांतरित कर दिया जाता है। एसएसटेबल अपरिवर्तनीय होती हैं, इसलिए अपडेट करने पर पुरानी फ़ाइल को संपादित करने के बजाय एक नया संस्करण लिखा जाता है, और कॉम्पैक्शन नामक एक पृष्ठभूमि प्रक्रिया बाद में उन संस्करणों को मर्ज करती है और पुरानी पंक्तियों को हटा देती है।

डेटा प्रतिकृति Cassandra

चूंकि डेटा प्रक्रिया के दौरान किसी भी समय हार्डवेयर समस्या हो सकती है या लिंक डाउन हो सकता है, इसलिए समस्या होने पर बैकअप प्रदान करने के लिए समाधान की आवश्यकता होती है। इसलिए विफलता का कोई एकल बिंदु सुनिश्चित करने के लिए डेटा को दोहराया जाता है।

Cassandra इन दो कारकों के आधार पर डेटा की प्रतिकृतियां अलग-अलग नोड्स पर रखता है।

  • अगली प्रतिकृति कहां रखी जाए, इसका निर्धारण इस पर निर्भर करता है प्रतिकृति रणनीति.
  • जबकि विभिन्न नोड्स पर रखे गए प्रतिकृतियों की कुल संख्या द्वारा निर्धारित किया जाता है प्रतिकृति कारक.

एक प्रतिकृति कारक का अर्थ है कि डेटा की केवल एक ही प्रतिलिपि है, जबकि तीन प्रतिकृति कारक का अर्थ है कि तीन अलग-अलग नोड्स पर डेटा की तीन प्रतियां हैं।

यह सुनिश्चित करने के लिए कि विफलता का कोई भी बिंदु न हो, प्रतिकृति कारक तीन होना चाहिए.

इसमें दो प्रकार की प्रतिकृति रणनीतियाँ हैं Cassandra.

सरलरणनीति Cassandra

सरल रणनीति इसका उपयोग तब किया जाता है जब आपके पास सिर्फ़ एक डेटा सेंटर हो। SimpleStrategy पहली प्रतिकृति को विभाजनकर्ता द्वारा चुने गए नोड पर रखता है। उसके बाद, शेष प्रतिकृतियों को नोड रिंग में दक्षिणावर्त दिशा में रखा जाता है।

यहाँ SimpleStrategy का चित्रात्मक प्रतिनिधित्व है:

सरलरणनीति Cassandra
सरलरणनीति Cassandra

नेटवर्कटोपोलॉजीरणनीति Cassandra

नेटवर्कटोपोलॉजीरणनीति इसका उपयोग तब किया जाता है जब आपके पास दो से ज़्यादा डेटा सेंटर हों। NetworkTopologyStrategy में, प्रत्येक डेटा सेंटर के लिए अलग-अलग प्रतिकृतियां सेट की जाती हैं। NetworkTopologyStrategy प्रतिकृतियों को रिंग में घड़ी की दिशा में तब तक रखती है जब तक कि वह किसी दूसरे रैक में पहले नोड तक न पहुँच जाए। यह रणनीति एक ही डेटा सेंटर में अलग-अलग रैक पर प्रतिकृतियां रखने की कोशिश करती है।

ऐसा इसलिए होता है क्योंकि कभी-कभी रैक में विफलता या समस्या आ सकती है। फिर अन्य नोड्स पर प्रतिकृतियां डेटा प्रदान कर सकती हैं।

नेटवर्क टोपोलॉजी रणनीति का चित्रात्मक प्रतिनिधित्व यहां दिया गया है:

नेटवर्कटोपोलॉजीरणनीति Cassandra
नेटवर्कटोपोलॉजीरणनीति Cassandra

प्रतिकृति कारक यह निर्धारित करता है कि कितनी प्रतियां मौजूद हैं। किसी दिए गए अनुरोध का जवाब देने के लिए उनमें से कितनी प्रतियों की आवश्यकता है, यह एक अलग सेटिंग है, जिसका वर्णन आगे किया गया है।

संगति स्तरों में Cassandra

संगति स्तर प्रति क्लस्टर के बजाय प्रति क्वेरी निर्धारित किया जाता है, यही कारण है कि Cassandra यह समायोज्य है। यह बताता है कि समन्वयक द्वारा क्लाइंट को जवाब देने से पहले कितने प्रतिकृतियों को लेखन की पुष्टि करनी होगी या पढ़ने का जवाब देना होगा। निम्न स्तर पर परिणाम तेज़ होते हैं; उच्च स्तर पर परिणाम अधिक निश्चित रूप से नवीनतम डेटा होता है।

स्तर बिहेवियर विशिष्ट उपयोग
ONE एक प्रतिकृति को जवाब देना होगा। उच्च-थ्रूपुट लॉगिंग जिसमें कभी-कभार पुरानी रीड स्वीकार्य हो।
कोरम सभी प्रतिकृतियों में से अधिकांश को प्रतिक्रिया देनी होगी, जिसकी गणना (RF / 2) + 1 के रूप में की जाती है। संतुलित स्थिरता और उपलब्धता के लिए यह एक सामान्य विकल्प है।
स्थानीय_कोरम स्थानीय डेटा सेंटर के भीतर मौजूद अधिकांश प्रतिकृतियों को प्रतिक्रिया देनी होगी। बहु-डेटा-केंद्र क्लस्टर, क्योंकि यह अंतर-क्षेत्रीय विलंबता से बचाता है।
सब प्रत्येक प्रतिकृति को प्रतिक्रिया देनी होगी। दुर्लभ। एक नोड के डाउन होने पर अनुरोध पूरी तरह विफल हो जाता है।
किसी (केवल लिखता है) यदि कोई प्रतिकृति पहुंच योग्य न हो तब भी संकेतित हस्तांतरण को सफलता माना जाता है। जहां स्थायित्व से समझौता किया जा सकता है, वहां अधिकतम लेखन उपलब्धता सुनिश्चित की जा सकती है।

जब रीड लेवल और राइट लेवल का योग रेप्लिकेशन फैक्टर से अधिक होता है, तो मजबूत स्थिरता सुनिश्चित होती है। तीन के रेप्लिकेशन फैक्टर के साथ, QUORUM पर लिखना और QUORUM पर पढ़ना इस नियम का पालन करता है, क्योंकि दो और दो का योग तीन से अधिक होता है। ONE पर लिखना और ONE पर पढ़ना इस नियम का पालन नहीं करता है, और इसलिए रीड करने पर पुराना मान प्राप्त हो सकता है।

जब कोई प्रतिकृति पहुंच से बाहर होती है, तो समन्वयक एक संकेत और नोड के वापस आने पर इसे दोबारा चलाता है, यही कारण है कि ANY स्तर और अधिकांश भाग Cassandra'के आत्म-उपचार व्यवहार कार्य।

लिखना Operaमें Cassandra

समन्वयक प्रतिकृतियों को एक लेखन अनुरोध भेजता है। यदि सभी प्रतिकृतियां चालू हैं, तो उन्हें उनकी संगतता स्तर की परवाह किए बिना लेखन अनुरोध प्राप्त होगा।

संगति स्तर यह निर्धारित करता है कि कितने नोड्स सफलता की स्वीकृति के साथ प्रतिक्रिया देंगे।

यदि डेटा सफलतापूर्वक कमिट लॉग में लिखा गया है तो नोड सफलता की सूचना के साथ जवाब देगा और मेमटेबल.

उदाहरण के लिए, एक एकल डेटा सेंटर में, जिसमें प्रतिकृति कारक तीन के बराबर है, तीन प्रतिकृतियां लेखन अनुरोध प्राप्त करेंगी। यदि संगति स्तर एक है, तो केवल एक प्रतिकृति सफलता की स्वीकृति के साथ प्रतिक्रिया करेगी, और शेष दो निष्क्रिय रहेंगी।

मान लीजिए यदि शेष दो प्रतिकृतियां नोड डाउन या किसी अन्य समस्या के कारण डेटा खो देती हैं, Cassandra अंतर्निहित मरम्मत तंत्र द्वारा पंक्ति को सुसंगत बना देगा Cassandra.

यहाँ बताया गया है कि लेखन प्रक्रिया किस प्रकार होती है Cassandra,

  1. जब नोड पर लेखन अनुरोध आता है, तो सबसे पहले, यह कमिट लॉग में लॉग इन करता है।
  2. फिर Cassandra मेम-टेबल में डेटा लिखता है। प्रत्येक लेखन अनुरोध पर मेम-टेबल में लिखा गया डेटा अलग से कमिट लॉग में भी लिखा जाता है। मेम-टेबल मेमोरी में अस्थायी रूप से संग्रहीत डेटा है जबकि कमिट लॉग बैकअप उद्देश्यों के लिए लेनदेन रिकॉर्ड लॉग करता है।
  3. जब मेम-टेबल भर जाता है, तो डेटा को SSTable डेटा फ़ाइल में प्रवाहित कर दिया जाता है।
लिखना Operaमें Cassandra
लिखना Operaमें Cassandra

क्योंकि एसएसटेबल को कभी भी उसी स्थान पर संपादित नहीं किया जाता है, इसलिए डिलीट करने से पंक्ति तुरंत नहीं हटती है। इसके बजाय, एक मार्कर जिसे कहा जाता है, मौजूद रहता है। समाधि का पत्थर लिखा जाता है, और पंक्ति तभी गायब होती है जब अनुग्रह अवधि के बाद संपीड़न चलता है। यही कारण है कि भारी डिलीट वर्कलोड संपीड़न के पूरा होने तक रीड स्पीड को धीमा कर देते हैं।

पढ़ना Operaमें Cassandra

तीन प्रकार के पठन अनुरोध होते हैं जिन्हें समन्वयक प्रतिकृतियों को भेजता है।

  1. प्रत्यक्ष अनुरोध
  2. डाइजेस्ट अनुरोध
  3. मरम्मत अनुरोध पढ़ें

समन्वयक किसी एक प्रतिकृति को सीधा अनुरोध भेजता है। उसके बाद, समन्वयक संगतता स्तर द्वारा निर्दिष्ट प्रतिकृतियों की संख्या को डाइजेस्ट अनुरोध भेजता है और जाँचता है कि लौटाया गया डेटा अपडेट किया गया डेटा है या नहीं।

उसके बाद, समन्वयक सभी शेष प्रतिकृतियों को डाइजेस्ट अनुरोध भेजता है। यदि कोई नोड पुराना मान देता है, तो बैकग्राउंड रीड रिपेयर अनुरोध उस डेटा को अपडेट करेगा। इस प्रक्रिया को रीड रिपेयर मैकेनिज्म कहा जाता है।

डायरेक्ट रिक्वेस्ट प्राप्त करने वाली रेप्लिका के अंदर, लुकअप ऑर्डर को इस तरह से डिज़ाइन किया गया है कि जहां तक ​​संभव हो डिस्क को स्पर्श करने से बचा जा सके।

  1. RSI मेमटेबल सबसे पहले इसकी जांच की जाती है, क्योंकि नवीनतम लेखन अभी तक फ्लश नहीं हुए हैं।
  2. RSI पंक्ति कैशयदि सक्षम किया गया है, तो यह बिना किसी अतिरिक्त कार्य के पूरे अनुरोध का उत्तर दे सकता है।
  3. A ब्लूम फ़िल्टर प्रत्येक एसएसटीएबल के लिए इसका उपयोग किया जाता है। यह निश्चित रूप से अनुपस्थित या संभवतः अनुपस्थित होने का उत्तर देता है, जिससे अधिकांश एसएसटीएबल को पढ़े बिना ही छोड़ा जा सकता है।
  4. RSI विभाजन सूचकांक और इसका सारांश ब्लूम फ़िल्टर जांच से बचे किसी भी एसएसटेबल के भीतर सटीक बाइट ऑफ़सेट का पता लगाता है।
  5. कई एसएसटेबल से मेल खाने वाले अंशों को मर्ज किया जाता है, जिसमें प्रत्येक कॉलम के लिए सबसे हालिया टाइमस्टैम्प को प्राथमिकता दी जाती है।

ब्लूम फ़िल्टर वह चरण है जो डेटा बढ़ने पर भी रीड स्पीड को तेज़ बनाए रखता है, क्योंकि यह डिस्क सीक होने से पहले लगभग सभी एसएसटेबल को हटा देता है। कई मशीनों पर इस प्रक्रिया को लागू करने के बारे में विस्तार से बताया गया है। Cassandra समूह ट्यूटोरियल।

अक्सर पूछे जाने वाले प्रश्न

प्रत्येक नोड प्रति सेकंड कुछ साथियों से संपर्क करता है और अपने और अपने सभी परिचितों के बारे में जानकारी साझा करता है: सक्रियता, लोड, स्कीमा संस्करण और टोकन रेंज। इस प्रकार एक क्लस्टर बिना मास्टर के समन्वित रहता है।

कंपैक्शन कई एसएसटीटेबल्स को एक में मर्ज करता है, कीping प्रत्येक कॉलम के नवीनतम संस्करण का उपयोग करना और पुरानी पंक्तियों को हटाना। इसके बिना, पढ़ने के लिए उत्तरोत्तर अधिक फ़ाइलों को एक्सेस करना पड़ेगा।

वर्चुअल नोड्स प्रत्येक फिजिकल मशीन के टोकन रिंग के हिस्से को कई छोटे-छोटे हिस्सों में बांट देते हैं। इससे डेटा अधिक समान रूप से वितरित होता है और मैन्युअल टोकन असाइनमेंट की तुलना में नोड को जोड़ना या बदलना कहीं अधिक तेज़ हो जाता है।

एआई रीड प्लस राइट ग्रेटर दैन रेप्लिकेशन फैक्टर नियम को लागू कर सकता है और एक पेयरिंग का सुझाव दे सकता है, लेकिन प्रत्येक क्वेरी के लिए स्वीकार्य स्टेलनेस एक व्यावसायिक निर्णय है जिसे पहले प्रदान किया जाना चाहिए।

AI नोडटूल आउटपुट और मेट्रिक्स को अच्छी तरह से पढ़ता है, इसलिए यह हॉट पार्टीशन, टॉम्बस्टोन बिल्ड-अप और कॉम्पैक्शन बैकलॉग को पहचानने में प्रभावी है। इसके द्वारा प्रस्तावित किसी भी कॉन्फ़िगरेशन परिवर्तन का परीक्षण स्टेजिंग क्लस्टर पर किया जाना चाहिए।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: