मैं कहूंगा कि आपका वास्तविक प्रश्न प्रतिकृति को संभालने का तरीका नहीं है, लेकिन स्केल आउट को कैसे संभालना है, या कम से कम पूछताछ के लिए स्केल आउट करना है।और जबकि इस conundrum के विभिन्न जवाब हैं, एक जवाब खड़ा होगा: प्रतिकृति का उपयोग कर नहीं।
प्रतिकृति के साथ समस्या, विशेष रूप से मर्ज प्रतिकृति के साथ, यह है कि लिखने प्रतिकृति में गुणा हो जाता है। मान लें कि आपके पास एक प्रणाली है जो प्रति सेकंड 100 प्रश्नों (9 0 रीड और 10 लिखने) का भार रखती है। आप स्केल करना चाहते हैं और आप प्रतिकृति चुनते हैं। अब आपके पास 2 सिस्टम हैं, प्रत्येक 50 प्रश्नों को संभालने, 45 पढ़ता है और 5 लिखते हैं प्रत्येक। अब उन लिखने की प्रतिलिपि बनाई जानी चाहिए ताकि लिखने की वास्तविक संख्या 5 + 5 न हो, लेकिन 5 + 5 (मूल लेखन) और फिर 5 + 5 (प्रतिकृति लिखती है), तो आपके पास 9 0 पढ़े और 20 लिखते हैं। इसलिए जब प्रत्येक प्रणाली पर भार कम हो गया था, तो लिखने और पढ़ने का अनुपात बढ़ गया है। यह न केवल आईओ पैटर्न को बदलता है, बल्कि सबसे महत्वपूर्ण बात यह है कि यह लोड के अव्यवस्था पैटर्न को बदलता है। एक तीसरी प्रणाली जोड़ें और आपके पास 90 रीड और 30 लिखेंगे और इतने पर और आगे। जल्द ही आपको पढ़ने से अधिक लिखना होगा और प्रतिकृति अद्यतन विलंबता समेकन के मुद्दों के साथ संयुक्त हो जाएगी और विवादों को मर्ज करने से आपकी परियोजना समाप्त हो जाएगी। इसका अर्थ यह है कि 'जल्द' आप अपेक्षा से बहुत जल्द है। इसके बदले में स्केल अप की तलाश करने के लिए जल्द ही पर्याप्त है, क्योंकि आप वैसे भी 6-8 सहकर्मियों के पैमाने पर बात कर रहे हैं, और स्केल अप का उपयोग करके 6-8 गुना क्षमता बढ़ाना तेजी से, अधिक सरल और संभवतः सस्ता भी होगा के साथ शुरू।
और ध्यान रखें कि ये सभी पूरी तरह से सैद्धांतिक संख्याएं हैं। अभ्यास में क्या होता है कि प्रतिकृति बुनियादी ढांचा मुक्त नहीं है, यह सिस्टम पर अपना भार जोड़ता है। लिखने की जरूरत है, परिवर्तनों को पढ़ना होगा, वितरक को ग्राहकों को वितरित किए जाने तक परिवर्तनों को स्टोर करने के लिए मौजूद होना चाहिए, फिर परिवर्तनों को लिखना होगा और संभव विवादों के लिए मध्यस्थता। यही कारण है कि मैंने बहुत कम तैनाती देखी है जो प्रतिकृति आधारित स्केल आउट रणनीति के साथ सफलता का दावा कर सकती है।
एक विकल्प केवल स्केल करने के लिए है और यहां प्रतिकृति काम करता है, आमतौर पर लेनदेन प्रतिकृति का उपयोग करते हुए काम करता है, लेकिन डेटाबेस स्नैपशॉट के साथ लॉग-शिपिंग या मिररिंग भी करता है।
असली विकल्प विभाजन (यानी sharding) है। आवेदन में उचित विभाजन के लिए अनुरोधों को रूट किया जाता है और सर्वर पर जमीन एप्राइपिएट डेटा को शामिल करती है। एक विभाजन पर परिवर्तन जो किसी अन्य विभाजन पर प्रतिबिंबित होने की आवश्यकता है, को एसिंक्रोनस (आमतौर पर मैसेजिंग आधारित) माध्यमों के माध्यम से भेज दिया जाता है। डेटा केवल विभाजन के भीतर शामिल हो सकता है। मैं किस बारे में बात कर रहा हूं, इसके बारे में अधिक विस्तृत चर्चा के लिए, how MySpace does it पढ़ें। कहने की जरूरत नहीं है, इस तरह की रणनीति अनुप्रयोग डिजाइन पर एक बड़ा प्रभाव डालती है और इसे v1 के बाद बस चिपकाया नहीं जा सकता है।
स्रोत
2010-02-08 22:10:15
स्केलिंग के बिंदुओं के लिए धन्यवाद। यह बीए के लिए एक बड़ा विचार जा रहा है। दुर्भाग्य से एक आवश्यकता है कि हम समाधान के हिस्से के रूप में प्रतिकृति लागू करते हैं। –