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

Cassandra संभालने के लिए डिज़ाइन किया गया है बड़ा डेटा. Cassandraइसकी मुख्य विशेषता यह है कि इसमें डेटा को कई नोड्स पर संग्रहीत किया जा सकता है, जिसमें कोई भी विफलता बिंदु नहीं होता।
इस प्रकार की घटना का कारण Cassandraकी वास्तुकला यह थी कि हार्डवेयर विफलता कभी भी हो सकती है। कोई भी नोड डाउन हो सकता है। विफलता के मामले में दूसरे नोड में संग्रहीत डेटा का उपयोग किया जा सकता है। इसलिए, Cassandra इसकी वितरित वास्तुकला के साथ डिज़ाइन किया गया है।
Cassandra पीयर टू पीयर वितरित फैशन आर्किटेक्चर के साथ विभिन्न नोड्स पर डेटा संग्रहीत करता है।
सभी नोड्स एक दूसरे के साथ सूचनाओं का आदान-प्रदान करते हैं गपशप प्रोटोकॉलगपशप एक प्रोटोकॉल है Cassandra जिसके द्वारा नोड्स एक दूसरे के साथ संवाद कर सकते हैं।
के घटक Cassandra Archiटेक्चर
इसमें निम्नलिखित घटक हैं Cassandra Archiटेक्चर:

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

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

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

क्योंकि एसएसटेबल को कभी भी उसी स्थान पर संपादित नहीं किया जाता है, इसलिए डिलीट करने से पंक्ति तुरंत नहीं हटती है। इसके बजाय, एक मार्कर जिसे कहा जाता है, मौजूद रहता है। समाधि का पत्थर लिखा जाता है, और पंक्ति तभी गायब होती है जब अनुग्रह अवधि के बाद संपीड़न चलता है। यही कारण है कि भारी डिलीट वर्कलोड संपीड़न के पूरा होने तक रीड स्पीड को धीमा कर देते हैं।
पढ़ना Operaमें Cassandra
तीन प्रकार के पठन अनुरोध होते हैं जिन्हें समन्वयक प्रतिकृतियों को भेजता है।
- प्रत्यक्ष अनुरोध
- डाइजेस्ट अनुरोध
- मरम्मत अनुरोध पढ़ें
समन्वयक किसी एक प्रतिकृति को सीधा अनुरोध भेजता है। उसके बाद, समन्वयक संगतता स्तर द्वारा निर्दिष्ट प्रतिकृतियों की संख्या को डाइजेस्ट अनुरोध भेजता है और जाँचता है कि लौटाया गया डेटा अपडेट किया गया डेटा है या नहीं।
उसके बाद, समन्वयक सभी शेष प्रतिकृतियों को डाइजेस्ट अनुरोध भेजता है। यदि कोई नोड पुराना मान देता है, तो बैकग्राउंड रीड रिपेयर अनुरोध उस डेटा को अपडेट करेगा। इस प्रक्रिया को रीड रिपेयर मैकेनिज्म कहा जाता है।
डायरेक्ट रिक्वेस्ट प्राप्त करने वाली रेप्लिका के अंदर, लुकअप ऑर्डर को इस तरह से डिज़ाइन किया गया है कि जहां तक संभव हो डिस्क को स्पर्श करने से बचा जा सके।
- RSI मेमटेबल सबसे पहले इसकी जांच की जाती है, क्योंकि नवीनतम लेखन अभी तक फ्लश नहीं हुए हैं।
- RSI पंक्ति कैशयदि सक्षम किया गया है, तो यह बिना किसी अतिरिक्त कार्य के पूरे अनुरोध का उत्तर दे सकता है।
- A ब्लूम फ़िल्टर प्रत्येक एसएसटीएबल के लिए इसका उपयोग किया जाता है। यह निश्चित रूप से अनुपस्थित या संभवतः अनुपस्थित होने का उत्तर देता है, जिससे अधिकांश एसएसटीएबल को पढ़े बिना ही छोड़ा जा सकता है।
- RSI विभाजन सूचकांक और इसका सारांश ब्लूम फ़िल्टर जांच से बचे किसी भी एसएसटेबल के भीतर सटीक बाइट ऑफ़सेट का पता लगाता है।
- कई एसएसटेबल से मेल खाने वाले अंशों को मर्ज किया जाता है, जिसमें प्रत्येक कॉलम के लिए सबसे हालिया टाइमस्टैम्प को प्राथमिकता दी जाती है।
ब्लूम फ़िल्टर वह चरण है जो डेटा बढ़ने पर भी रीड स्पीड को तेज़ बनाए रखता है, क्योंकि यह डिस्क सीक होने से पहले लगभग सभी एसएसटेबल को हटा देता है। कई मशीनों पर इस प्रक्रिया को लागू करने के बारे में विस्तार से बताया गया है। Cassandra समूह ट्यूटोरियल।
