2010-01-26 16 views
37
  1. किसी redis प्रतिकृति और redis sharding के बीच अंतर पता है?
  2. वे किसके लिए उपयोग करते हैं? रेडिस मेमोरी में डेटा स्टोर करता है, यह प्रतिकृति/sharding को कैसे प्रभावित करता है?
  3. क्या दोनों एक साथ दोनों का उपयोग करना संभव है?

धन्यवाद!Redis प्रतिकृति और redis sharding (क्लस्टर) अंतर

उत्तर

102

Sharding लगभग प्रतिकृति के विपरीत है, हालांकि वे orthogonal अवधारणाओं रहे हैं और अच्छी तरह से एक साथ काम करते हैं।

शेर्डिंग, जिसे विभाजन के रूप में भी जाना जाता है, डेटा को कुंजी द्वारा विभाजित कर रहा है; जबकि प्रतिकृति, मिररिंग के रूप में भी जानते हैं, सभी डेटा कॉपी करने के लिए है।

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

मान लीजिए कि आपके पास निम्नलिखित tuples हैं: [1: ऐप्पल], [2: केला], [3: चेरी], [4: डुरियन] और हमारे पास दो मशीनें ए और बी हैं। शार्डिंग के साथ, हम कुंजी स्टोर कर सकते हैं मशीन ए पर 2,4; और प्रतिकृति के साथ मशीन बी पर कुंजियों 1,3, हम कुंजी मशीन एक पर 1,2,3,4 और 1,2,3,4 मशीन बी पर

Sharding आम तौर पर एक सुसंगत हैश प्रदर्शन से कार्यान्वित किया जाता है की दुकान कुंजी पर उपर्युक्त उदाहरण निम्नलिखित हैश फ़ंक्शन एच (x) {वापसी x% 2 == 0? ए: बी} के साथ लागू किया गया था।

अवधारणाओं को गठबंधन करने के लिए, हम प्रत्येक शार्ड को दोहरा सकते हैं। ऊपर मामलों में, डेटा (2,4) मशीन एक की के सभी मशीन सी पर दोहराया जा सकता है और डेटा (1,3) मशीन बी के के सभी मशीन पर दोहराया जा सकता है डी

किसी भी कुंजी वैल्यू स्टोर (जिसमें से रेडिस केवल एक उदाहरण है) शेरिंग का समर्थन करता है, हालांकि कुछ क्रॉस-कुंजी फ़ंक्शंस अब काम नहीं करेंगे। रेडिस बॉक्स के बाहर प्रतिकृति का समर्थन करता है।

+6

ठंडा। मुझे लगता है कि उत्तर न केवल रेडिस – joetsuihk

+3

तक सीमित है (सामान्य रूप से), लेकिन वास्तव में सवाल का जवाब नहीं देता है :) –

+2

मुझे लगता है कि यह उत्तर प्रश्नकर्ता से पूछे जाने वाले प्रश्नों के लिए एक अच्छी प्रतिक्रिया प्रदान करता है। काफी सरल, अभी तक सही स्पष्टीकरण। +1 –

14

सरल शब्दों में, दो अवधारणाओं के बीच मौलिक अंतर यह है कि Sharding लिखता पैमाने पर करने के जबकि प्रतिकृति पैमाने पढ़ता करने के लिए प्रयोग किया जाता है प्रयोग किया जाता है। जैसा कि एलेक्स ने पहले ही उल्लेख किया है, प्रतिकृति एचए प्राप्त करने के समाधानों में से एक है।

हाँ, वे दोनों आम तौर पर एक साथ इस्तेमाल कर रहे हैं, तो आप समझते हैं कि कैसे टुकड़े एक क्लस्टर में नोड्स भर में दोहराया जा सकता है।

अपने तीसरे प्रश्न के संबंध में

, रैम फ्लश विकल्प के बजाय, यह (AOF) का उपयोग करने Redis संलग्न केवल फ़ाइल एक बेहतर विचार है। केवल एक मामूली लागत (लिखने की गति के मामले में), आपको अपने लेखन की बहुत अधिक विश्वसनीयता मिलती है। यह mysql बाइनरी लॉग की तरह है। 1 fsync/second उपयोग करने के लिए अनुशंसित विकल्प है।