सबसे पहले, प्रहरी की बात करते हैं।
प्रहरी विफलता का प्रबंधन करता है, यह HA के लिए Redis को कॉन्फ़िगर नहीं करता है। यह एक महत्वपूर्ण भेद है। दूसरा, आपके द्वारा पोस्ट किया गया आरेख वास्तव में एक खराब सेटअप है - आप सेंटीनेल को उसी नोड पर नहीं चलाना चाहते हैं जैसा कि रेडिस नोड्स इसे प्रबंधित कर रहा है। जब आप उस मेजबान को खो देते हैं तो आप दोनों को खो देते हैं।
"क्या यह संसाधनों की बर्बादी है?" यह आपके उपयोग के मामले पर निर्भर करता है। आपको उस सेटअप में तीन रेडिस नोड्स की आवश्यकता नहीं है, आपको केवल दो की आवश्यकता है। तीन आपके अतिरेक को बढ़ाते हैं, लेकिन इसकी आवश्यकता नहीं है। यदि आपको अतिरिक्त अतिरेक की आवश्यकता है तो यह संसाधनों की बर्बादी नहीं है। यदि आपको अतिरेक की आवश्यकता नहीं है तो आप केवल एक रेडिस इंस्टेंस चलाते हैं और इसे अच्छा कहते हैं - क्योंकि अधिक चलाना "व्यर्थ" होगा।
दो दासों को चलाने का एक अन्य कारण रीड को विभाजित करना होगा। दोबारा, अगर आपको इसकी आवश्यकता है तो यह बेकार नहीं होगा।
"क्या उपलब्ध संसाधनों के पूर्ण उपयोग का कोई बेहतर तरीका है?" हम इसका उत्तर नहीं दे सकते क्योंकि यह आपके विशिष्ट परिदृश्य और कोड पर बहुत अधिक निर्भर है। उस ने कहा कि यदि स्टोर करने के लिए डेटा की मात्रा "छोटी" है और कमांड दर बहुत अधिक नहीं है, तो याद रखें कि आपको रेडिस को एक होस्ट समर्पित करने की आवश्यकता नहीं है।
अब "क्या रेडिस क्लस्टरिंग रेडिस प्रहरी का विकल्प है?"। यह वास्तव में पूरी तरह से आपके उपयोग के मामले पर निर्भर करता है। रेडिस क्लस्टर एक एचए समाधान नहीं है - यह एक बहु लेखक/राम से बड़ा समाधान है। यदि आपका लक्ष्य सिर्फ HA है तो यह आपके लिए उपयुक्त नहीं होगा। रेडिस क्लस्टर सीमाओं के साथ आता है, विशेष रूप से बहु-कुंजी संचालन के आसपास, इसलिए यह जरूरी नहीं कि एक सीधा "बस क्लस्टर का उपयोग करें" ऑपरेशन हो।
यदि आपको लगता है कि रेडिस (और तीन रनिंग प्रहरी) चलाने वाले तीन होस्ट बेकार हैं, तो आप क्लस्टर को और भी अधिक रखने की संभावना रखते हैं, क्योंकि इसके लिए अधिक संसाधनों की आवश्यकता होती है।
आपके द्वारा पूछे गए प्रश्न लिखित रूप में जीवित रहने के लिए शायद बहुत व्यापक और राय-आधारित हैं। यदि आपके पास कोई विशिष्ट मामला/समस्या है जिस पर आप काम कर रहे हैं तो कृपया उसे अपडेट करें ताकि हम विशिष्ट सहायता और जानकारी प्रदान कर सकें।
विशेष जानकारी के लिए अपडेट करें:
आपके परिदृश्य में उचित विफलता प्रबंधन के लिए मैं 3 प्रहरी के साथ जाऊंगा, एक आपके जेबॉस सर्वर पर चल रहा है। यदि आपके पास 3 जेबॉस नोड हैं तो प्रत्येक पर एक के साथ जाएं। मेरे पास अलग-अलग नोड्स पर एक रेडिस पॉड (मास्टर+स्लेव) होगा, और प्रहरी को विफलता का प्रबंधन करने दें।
वहां से इसकी जानकारी और कनेक्शन प्रबंधन के लिए सेंटीनेल का उपयोग करने के लिए जेबॉस/जेडिस को तार-तार करने की बात है। जैसा कि मैं उनका उपयोग नहीं करता एक त्वरित खोज से पता चलता है कि जेडिस के पास इसके लिए समर्थन है, आपको बस इसे सही तरीके से कॉन्फ़िगर करने की आवश्यकता है। मुझे मिले कुछ उदाहरण सेंटिनल के साथ जेडिस के उदाहरण की तलाश में हैं और https://github.com/xetorthio/jedis/issues/725 जो JedisSentinelPool
के बारे में बात करते हैं पूल का उपयोग करने का मार्ग होने के नाते।
जब सेंटिनल एक विफलता को निष्पादित करता है तो क्लाइंट डिस्कनेक्ट हो जाएंगे और जेडिस (चाहिए?) प्रहरी से पूछकर कि वर्तमान मास्टर कौन है।