Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Redis

Redis Cluster बनाम Redis Sentinel: सही आर्किटेक्चर चुनने के लिए एक स्पष्ट, विशेषज्ञ गाइड

Redis Cluster बनाम Redis Sentinel: सही आर्किटेक्चर चुनने के लिए एक स्पष्ट, विशेषज्ञ गाइड

जैसे-जैसे प्रोडक्शन सिस्टम में Redis का उपयोग बढ़ता है, टीमें अंततः एक महत्वपूर्ण आर्किटेक्चरल निर्णय का सामना करती हैं। क्या Redis को Redis Sentinel या Redis Cluster का उपयोग करके स्केल किया जाना चाहिए?

यह निर्णय अक्सर देर से और दबाव में लिया जाता है, आमतौर पर प्रदर्शन समस्याओं, मेमोरी थकावट, या उपलब्धता घटनाओं के प्रकट होने के बाद। दुर्भाग्य से, Redis Sentinel और Redis Cluster बहुत अलग समस्याओं को हल करते हैं, और गलत चुनाव दर्दनाक रीडिजाइन की ओर ले जाता है।

Redis Sentinel उपलब्धता के बारे में है। Redis Cluster स्केलेबिलिटी के बारे में है। दोनों को भ्रमित करना Redis आर्किटेक्चर में सबसे आम गलतियों में से एक है।

Redis Sentinel द्वारा हल की जाने वाली मुख्य समस्या

Redis Sentinel को एकल Redis डेटासेट के लिए हाई उपलब्धता प्रदान करने के लिए डिज़ाइन किया गया है।

इसकी प्राथमिक जिम्मेदारियां हैं:

  • Redis मास्टर और रेप्लिका नोड्स की निगरानी
  • विफलताओं का पता लगाना
  • स्वचालित फेलओवर करना
  • नए मास्टर के बारे में क्लाइंट्स को अपडेट करना

Redis Sentinel डेटा को शार्ड नहीं करता। अभी भी ठीक एक तार्किक Redis इंस्टेंस है जो सभी कुंजियों को रखता है।

यदि मास्टर विफल होता है, तो Sentinel एक रेप्लिका को प्रमोट करता है। एप्लिकेशन के दृष्टिकोण से, Redis न्यूनतम रुकावट के साथ काम करना जारी रखता है।

Redis Sentinel आंतरिक रूप से कैसे काम करता है

एक विशिष्ट Redis Sentinel सेटअप में शामिल हैं:

  • एक Redis मास्टर
  • एक या अधिक Redis रेप्लिकास
  • उनकी निगरानी करने वाली कई Sentinel प्रक्रियाएं

Sentinels लगातार मास्टर के स्वास्थ्य की जांच करते हैं। जब Sentinels का एक कोरम सहमत होता है कि मास्टर डाउन है, तो एक फेलओवर ट्रिगर होता है।

एक रेप्लिका को मास्टर के रूप में प्रमोट किया जाता है, और शेष रेप्लिकास को इसका पालन करने के लिए पुनः कॉन्फ़िगर किया जाता है।

मुख्य बिंदु यह है कि डेटा समान आकार और आकार का रहता है। कुंजियों का कोई पुनर्वितरण नहीं होता है।

Redis Sentinel क्या नहीं करता

Redis Sentinel नहीं करता:

  • एकल नोड से आगे मेमोरी क्षमता बढ़ाना
  • एक कोर से आगे राइट थ्रूपुट बढ़ाना
  • डेटा को शार्ड या वितरित करना

यदि आपका Redis इंस्टेंस मेमोरी या CPU से बाहर निकल जाता है, तो Sentinel जोड़ने से मदद नहीं मिलती। Sentinel Redis को उपलब्ध रखता है, बड़ा नहीं।

Redis Cluster द्वारा हल की जाने वाली मुख्य समस्या

Redis Cluster उपलब्धता के बजाय स्केलेबिलिटी को संबोधित करता है।

यह हल करता है:

  • एकल मशीन की मेमोरी सीमाएं
  • सिंगल-थ्रेडेड निष्पादन के कारण थ्रूपुट सीमाएं

Redis Cluster डेटा को कई मास्टर नोड्स में शार्ड करता है। प्रत्येक मास्टर कुंजियों के एक सबसेट का मालिक होता है।

उपलब्धता के लिए रेप्लिकेशन का उपयोग किया जाता है, लेकिन शार्डिंग निर्धारक विशेषता है।

Redis Cluster उच्च स्तर पर कैसे काम करता है

Redis Cluster कुंजियों को 16,384 हैश स्लॉट्स में विभाजित करता है।

प्रत्येक मास्टर नोड इन स्लॉट्स के एक हिस्से का मालिक होता है। कुंजियों को हैश फंक्शन के आधार पर स्लॉट्स को असाइन किया जाता है।

जब कोई क्लाइंट कमांड जारी करता है, तो इसे उस नोड पर रूट किया जाता है जो उस स्लॉट के लिए जिम्मेदार होता है।

यदि कोई मास्टर विफल होता है, तो उसका एक रेप्लिका स्वचालित रूप से प्रमोट हो जाता है, Sentinel के समान, लेकिन केवल उस शार्ड के लिए।

उपलब्धता मॉडल तुलना

Redis Sentinel प्रदान करता है:

  • एक समय में एक सक्रिय मास्टर
  • एकल नोड पर पूरा डेटासेट
  • स्वचालित फेलओवर

Redis Cluster प्रदान करता है:

  • कई मास्टर्स
  • नोड्स में वितरित डेटा
  • शार्ड स्तर पर फेलओवर

Sentinel नोड विफलता से बचाता है। Cluster नोड विफलता और क्षमता सीमाओं दोनों से बचाता है।

स्केलिंग विशेषताएं

Redis Sentinel वर्टिकली स्केल करता है।

आप Redis को बड़ी मशीन पर ले जा सकते हैं, अधिक मेमोरी जोड़ सकते हैं, या तेज CPU का उपयोग कर सकते हैं, लेकिन आप अभी भी एक सीमा तक पहुंचते हैं।

Redis Cluster हॉरिजॉन्टली स्केल करता है।

आप मेमोरी और थ्रूपुट बढ़ाने के लिए नोड्स जोड़ते हैं। प्रत्येक नोड केवल डेटासेट के एक हिस्से को संभालता है।

एक बार जब एकल Redis नोड पर्याप्त नहीं रह जाता, तो अकेला Sentinel अपर्याप्त होता है।

एप्लिकेशन डिजाइन प्रभाव

Redis Sentinel एप्लिकेशन के लिए ज्यादातर पारदर्शी है।

एप्लिकेशन अभी भी सोचते हैं कि वे एक Redis इंस्टेंस से बात कर रहे हैं। फेलओवर के बाद क्लाइंट्स नए मास्टर से पुनः कनेक्ट होते हैं।

Redis Cluster के लिए क्लस्टर-अवेयर क्लाइंट्स की आवश्यकता होती है।

एप्लिकेशन को करना होगा:

  • रीडायरेक्शन संभालें
  • हैश स्लॉट सीमाओं का सम्मान करें
  • अनसपोर्टेड मल्टी-कुंजी ऑपरेशन से बचें

Cluster अपनाने से कुंजी डिजाइन और डेटा मॉडलिंग पर महत्वपूर्ण प्रभाव पड़ता है।

मल्टी-कुंजी ऑपरेशन और ट्रांजैक्शन

Redis Sentinel के साथ:

  • सभी कुंजियां एक मास्टर पर रहती हैं
  • मल्टी-कुंजी ऑपरेशन सामान्य रूप से काम करते हैं
  • ट्रांजैक्शन और Lua स्क्रिप्ट्स अपेक्षित रूप से व्यवहार करते हैं

Redis Cluster के साथ:

  • कुंजियां अलग-अलग नोड्स पर रह सकती हैं
  • मल्टी-कुंजी ऑपरेशन केवल एक ही हैश स्लॉट के भीतर काम करते हैं
  • क्रॉस-स्लॉट ऑपरेशन विफल होते हैं

यह एकल अंतर अक्सार टीमों के लिए सबसे बड़ा झटका होता है जो Redis Cluster में माइग्रेट कर रहे हैं।

ऑपरेशनल जटिलता

Redis Sentinel मध्यम ऑपरेशनल जटिलता पेश करता है।

आप प्रबंधित करते हैं:

  • मास्टर और रेप्लिकास
  • Sentinel कोरम
  • फेलओवर व्यवहार

Redis Cluster काफी अधिक जटिलता पेश करता है।

आप प्रबंधित करते हैं:

  • कई मास्टर्स और रेप्लिकास
  • स्लॉट आवंटन और संतुलन
  • रीशार्डिंग ऑपरेशन
  • क्लाइंट कम्पैटिबिलिटी

Cluster मजबूत ऑपरेशनल अनुशासन की मांग करता है।

Redis Sentinel कब सही विकल्प है

Redis Sentinel एक अच्छा फिट है जब:

  • डेटासेट एक मशीन पर आराम से फिट होता है
  • राइट थ्रूपुट एक कोर के भीतर फिट होता है
  • हाई उपलब्धता आवश्यक है
  • एप्लिकेशन लॉजिक मल्टी-कुंजी ऑपरेशन पर निर्भर करता है

कई सिस्टम अकेले Sentinel के साथ वर्षों तक सफलतापूर्वक चलते हैं।

Redis Cluster कब सही विकल्प है

Redis Cluster उपयुक्त है जब:

  • मेमोरी आवश्यकताएं एकल नोड से अधिक होती हैं
  • थ्रूपुट आवश्यकताएं बढ़ती रहती हैं
  • हॉरिजॉन्टल स्केलिंग आवश्यक है
  • एप्लिकेशन को शार्डिंग के लिए डिज़ाइन किया जा सकता है

Cluster एक स्केलिंग रणनीति है, न कि केवल एक फेलओवर तंत्र।

सामान्य माइग्रेशन गलतियां

टीमें अक्सर:

  • Redis Cluster को बहुत जल्दी अपनाती हैं
  • मानती हैं कि Sentinel और Cluster विनिमेय हैं
  • कुंजी डिजाइन निहितार्थों को अनदेखा करती हैं
  • मल्टी-कुंजी सीमाओं को बहुत देर से खोजती हैं

ये गलतियां आमतौर पर जल्दबाजी में रीफैक्टरिंग का परिणाम देती हैं।

एक सरल निर्णय नियम

Redis Sentinel का उपयोग करें जब:

  • आप अपने डेटा मॉडल को बदले बिना हाई उपलब्धता चाहते हैं

Redis Cluster का उपयोग करें जब:

  • आपको Redis को एक मशीन से आगे स्केल करना होगा

यदि आप Cluster चुनते हैं, तो इसके लिए जल्दी डिजाइन करें, भले ही आप इसे तुरंत सक्षम न करें।

सारांश

Redis Sentinel और Redis Cluster पूरक तकनीकें हैं जो विभिन्न सिस्टम दबावों को संबोधित करती हैं। Sentinel एकल डेटासेट के लिए सेवा निरंतरता सुनिश्चित करता है। Cluster Redis को मशीनों में स्केल करने में सक्षम बनाता है। सही दृष्टिकोण का चयन इस बात पर निर्भर करता है कि उपलब्धता या स्केलेबिलिटी प्राथमिक आर्किटेक्चरल ड्राइवर है।

  1. JavaScript ऑब्जेक्ट को स्ट्रिंग फॉर्मेट में कैसे डिस्प्ले करें? JavaScript ऑब्जेक्ट को स्ट्रिंग फॉर्मेट में कैसे डिस्प्ले करें?

    उदाहरण document.getElementById() और innerHTML का उपयोग करके ऑब्जेक्ट डिस्प्ले करें। <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <meta name=viewport content=width=device-width, initial-scale=1.0> <title>Document</title> </head> <

  1. एंड्रॉइड पर प्रोग्रामेटिकली वर्तमान GPS लोकेशन कैसे प्राप्त करें? एंड्रॉइड पर प्रोग्रामेटिकली वर्तमान GPS लोकेशन कैसे प्राप्त करें?

    एंड्रॉइड में FusedLocationProviderClient का उपयोग करके GPS लोकेशन प्राप्त करना यह उदाहरण दर्शाता है कि एंड्रॉइड ऐप में प्रोग्रामेटिकली वर्तमान GPS लोकेशन कैसे प्राप्त करें। हम Google Play Services के FusedLocationProviderClient का उपयोग करेंगे, जो बैटरी-कुशल तरीके से सटीक लोकेशन प्रदान करता है। आवश

  1. रूबी के लिए Atom एडिटर: टॉप प्लगइन्स और आवश्यक शॉर्टकट्स रूबी के लिए Atom एडिटर: टॉप प्लगइन्स और आवश्यक शॉर्टकट्स

    यदि आप रूबी डेवलपमेंट के लिए Atom का उपयोग कर रहे हैं तो आप शायद जानते हैं कि प्लगइन्स (Atom में packages) हैं जो एडिटर के साथ आपकी उत्पादकता में सुधार कर सकते हैं। लेकिन Atom के पैकेज रिपॉजिटरी में हजारों पैकेज हैं! आपको किन लोगों का उपयोग करना चाहिए? और इसके अलावा, कुछ उपयोगी कीबोर्ड शॉर्टकट्स क्य