"स्केल आउट" के बजाय किस प्रकार के सिस्टम को "स्केल अप" करना है?


12

मैं लंबे समय से सोच रहा था कि क्या ऐसे सिस्टम हैं जो कई छोटे सर्वरों में विभाजित होकर "स्केल आउट" के बजाय "स्केल अप" (अधिक शक्तिशाली, अधिक महंगा सर्वर पर) हैं।

क्या ऐसी प्रणाली मौजूद है, और यदि ऐसा है, तो क्या विशेष रूप से ऐसा कुछ है जो सिस्टम को स्केल करने के बजाय स्केल किए जाने की आवश्यकता है? (उदाहरण के लिए, शायद ACID- शिकायत डेटाबेस लेनदेन, या अन्य मजबूत डेटा अखंडता आवश्यकताएं इस आवश्यकता को पैदा करती हैं।)

स्केलिंग के बाद से ऐसा लगता है कि यह स्केलिंग की तुलना में बहुत अधिक हार्डवेयर लागत लाएगा, ऐसा लगता है कि कुछ ऐसा है जिससे आप बचना चाहते हैं, यदि संभव हो, लेकिन मुझे यकीन नहीं है कि यह हमेशा बचने योग्य है या नहीं।

तो, क्या ऐसी प्रणालियाँ हैं जिन्हें बाहर नहीं बढ़ाया जा सकता है, और उन्हें इसके बजाय स्केल किया जाना है? यह क्या कारण हो सकता है, और आप ऐसी प्रणाली की पहचान कैसे करेंगे? (क्या वे आम तौर पर कुछ विशेषताओं को साझा करते हैं जो उन्हें अधिक आसानी से पहचानने योग्य बना सकते हैं?)



7
यदि आपके सॉफ़्टवेयर को स्केल करने के लिए डिज़ाइन नहीं किया गया है, तो स्केलिंग अक्सर बहुत आसान होती है। यदि आपके पास स्रोत नहीं है, या डेवलपर्स पर प्रभाव नहीं है, तो रि-डिजाइनिंग सॉफ़्टवेयर या तो महंगा है, या असंभव है।
अक्टूबर को Zoredache

इस तरह के सिस्टम को लिखना एक बहुत कठिन समस्या है। विशेष रूप से मास्टर / मास्टर डिजाइन जो कि आ सकते हैं और जा सकते हैं जहां कई स्वामी एक ही समय में एक ही रिकॉर्ड लिखते हैं। कौन लिखता है जीत?
मैट

3
आपकी रुचि CAP प्रमेय हो सकती है । मूल रूप से, एक ऐसी सेवा जिसके लिए प्रमेय में परिभाषित स्थिरता और उपलब्धता दोनों की आवश्यकता होती है, विभाजन को बर्दाश्त नहीं करेगी। अधिकांश वास्तविक दुनिया की आवश्यकताएं अंतिम संगति के लिए कुछ स्थिरता का त्याग कर सकती हैं (मैन्युअल रूप से या तथ्य के बाद स्वचालित रूप से असंगति को संभाल सकती है) या कुछ प्रतिभागियों के उपलब्ध नहीं होने पर अनुरोध को संसाधित करने से इनकार करके उपलब्धता का त्याग करें। इसलिए, जिन प्रणालियों को पूर्ण स्थिरता और पूर्ण उपलब्धता दोनों की आवश्यकता होती है, उन्हें अनिवार्य रूप से स्केल करने के लिए मजबूर किया जाता है।
रेयान

1
यदि "विश्वसनीय LAN" से आपका मतलब है "कभी असफलता नहीं है", तो आप वास्तविक दुनिया के लिए डिज़ाइन नहीं कर रहे हैं।
mfinni

जवाबों:


18

मैं मुख्य रूप से एक ऐसे अनुप्रयोग के साथ काम करता हूं जिसमें शून्य क्षैतिज स्केलिंग क्षमता है । भले ही यह लिनक्स पर चलता है, एप्लिकेशन, डेटा संरचनाएं और I / O आवश्यकताएं मुझे उपयोगकर्ता के वर्कलोड को समायोजित करने के लिए उत्तरोत्तर बड़े सिस्टम पर "स्केल अप" करने के लिए मजबूर करती हैं।

कई विरासत लाइन ऑफ-बिजनेस और लेन-देन अनुप्रयोगों में इस प्रकार की बाधाएं हैं। यह एक कारण है कि मैं इस बात पर जोर देता हूं कि उद्योग क्लाउड सॉल्यूशंस पर ध्यान केंद्रित करता है और देवओप्स से संचालित वेब-स्केल आर्किटेक्चर कंप्यूटिंग दुनिया के अच्छे प्रतिशत की अनदेखी करता है।

दुर्भाग्य से, मेरे द्वारा वर्णित स्केल-अप सिस्टम वास्तव में अनदेखी हैं, इसलिए उद्योग अपने मूल्य को अनदेखा करता है या बड़े, महत्वपूर्ण सिस्टम (जैसे मवेशी बनाम पालतू जानवर ) को संबोधित करने के लिए आवश्यक कौशल को नष्ट कर देता है ।


1
"सबसे आसान काम है समस्या पर हार्डवेयर फेंकना।" कृपया, मूर की विधि, काम करना बंद न करें!
ccc

2
@Demetri - Microsoft SQL सर्वर सबसे "उच्च प्रोफ़ाइल" उत्पाद है जो मैं सोच सकता हूं कि "स्केल आउट" के बजाय एक विशिष्ट "स्केल अप" है। जब तक आप मर्ज प्रतिकृति के लिए मानदंडों के एक बहुत विशिष्ट सेट को पूरा नहीं करते, तब तक इसे बाहर निकालना असंभव है।
मार्क हेंडरसन

3
या यदि आप कई समस्याओं में समाधान विघटित कर सकते हैं। उदाहरण के लिए, अपने लेनदेन डेटाबेस के विरुद्ध रिपोर्टिंग न करें; कि अन्य हार्डवेयर पर रन एक प्रतिकृति मारा \।
mfinni

1
-1। मुझे लगता है कि आपने इस मुद्दे पर दिल खोलकर मारा। यदि आप स्केल स्केल सिस्टम के लिए सिस्टम को फिर से लिख सकते हैं तो आपकी समस्या को कम नहीं किया जाएगा। यह सवाल उन प्रणालियों के बारे में है, जिनकी समस्या डोमेन ऐसी है, जो ग्राउंड अप से डिज़ाइन किए जाने पर भी एक स्केल आउट संभव नहीं है।
रेयान

1
@ लिरियन कॉम्प्रिहेंशन। मैं बता रहा हूं कि मेरे द्वारा दिए गए एप्लिकेशन को स्केल-आउट नहीं किया जा सकता (यह एक डेटाबेस जैसा सिस्टम है) ... भले ही फिर से डिज़ाइन किया गया हो, वास्तुशिल्प बाधाओं के कारण।
ewwhite

8

एक डेवलपर दृष्टिकोण से मैं कह सकता हूं कि लगभग हर पारंपरिक मुख्यधारा डेटाबेस इंजन बाहर केवल स्केल कर सकता है और स्केलिंग बहुत बाद में सोचा जा सकता है।

हाल के वर्षों में अधिक स्केलेबिलिटी और अत्यधिक उपलब्ध प्रणालियों की आवश्यकता के साथ मौजूदा डेटाबेस को व्यापक बनाने के प्रयास किए गए हैं। लेकिन क्योंकि डिजाइन विरासत कोड द्वारा बाधा है, यह बहुत ही डिजाइन के बजाय मौलिक पर बोल्ट है। यदि आप जाने-माने डेटाबेस इंजनों में से अधिकांश को स्केल करने का प्रयास करते हैं तो आपको इसका सामना करना पड़ेगा। दास सर्वर को जोड़ना काफी मुश्किल हो सकता है और आप देखेंगे कि यह महत्वपूर्ण सीमाओं के साथ आता है, जिनमें से कुछ को आपके डेटाबेस तालिकाओं को फिर से जिगिंग की आवश्यकता हो सकती है।

उदाहरण के लिए, उनमें से अधिकांश मल्टी-मास्टर डिज़ाइनों के बजाय मास्टर / (बहु) दास हैं। दूसरे शब्दों में, आपके पास बस एक पूरा सर्वर हो सकता है और वहां बैठकर आप प्रश्नों को प्रोसेस नहीं कर सकते। कुछ करते हैं, लेकिन सीमाओं के साथ ... उदाहरण के लिए केवल बहु-दास डिजाइन पढ़ें। तो आपके पास एक सर्वर हो सकता है जो लिखता है और अन्य सभी केवल-पढ़ने के लिए डेटा प्रदान करते हैं। जब आप इन प्रणालियों को सेट करते हैं, तो यह ध्यान दें कि यह हमेशा एक सीधे आगे की प्रक्रिया नहीं है और अच्छी तरह से काम करना मुश्किल है। यह कई मामलों में इसके अलावा बहुत अधिक बोल्ट लगता है।

दूसरी ओर, कुछ नए डेटाबेस इंजन शुरू से ही संगामिति और मल्टी-मास्टर डिज़ाइन के साथ विकसित किए जा रहे हैं। NOSQL और NewSQL नए डिजाइन वर्ग हैं।

तो यह एक पारंपरिक SQL सर्वर से बेहतर प्रदर्शन प्राप्त करने का सबसे अच्छा तरीका है, ऊपर स्केल है! जबकि NOSQL और NewSQL के साथ यह स्केल अप और स्केल आउट दोनों है।

पारंपरिक आरडीबीएमएस सिस्टम को कसकर युग्मित किया जाता है, क्योंकि सभी को एक ही डेटा के एक सुसंगत दृश्य की आवश्यकता होती है। जब आपके पास विभिन्न क्लाइंट्स से एक ही डेटा के अपडेट को स्वीकार करने वाले कई सर्वर होते हैं, तो आप किस पर भरोसा करते हैं? कोई भी विधि जो यह सुनिश्चित करने का प्रयास करती है कि डेटा किसी प्रकार के लॉकिंग तंत्र के माध्यम से संगत है, को अन्य सर्वरों से सहयोग की आवश्यकता होती है जो या तो प्रदर्शन को नुकसान पहुंचाते हैं या डेटा गुणवत्ता को प्रभावित करते हैं जिसमें किसी ग्राहक से पढ़ा गया डेटा पुराना हो सकता है। और सर्वर को आपस में तय करने की जरूरत है कि एक ही रिकॉर्ड लिखते समय कौन सा डेटा सबसे हाल का है। जैसा कि आप देख सकते हैं कि यह एक जटिल समस्या है जो इस तथ्य से अधिक जटिल है कि कार्यभार सर्वरों में फैला हुआ है, न कि केवल प्रक्रियाओं या थ्रेड्स के बीच जहां डेटा की पहुंच अभी भी काफी तेज है।


Oracle RAC 10g के बाद से स्केल-आउट प्रदान नहीं कर रहा था?
दानी_एल

यह है। लेकिन तब आरएसी होना और दोषपूर्ण तरीके से काम करना आरएसी दो अलग-अलग चीजें हैं - इसे चलाने के लिए वास्तव में विशेष देखभाल की आवश्यकता होती है। हालांकि यह एक अच्छा डिज़ाइन है। यदि आपको इसकी आवश्यकता है तो आप कीमत चुकाने को तैयार हैं।
टॉमटॉम

और ओरेकल आरएसी के लिए आवश्यक साझा भंडारण प्रणाली पर ध्यान दें। यह कैसे लागू किया जाता है इसके आधार पर एक स्केलिंग समस्या पेश कर सकता है।
मैट

7

मेरे विचार में सीमांकन / परिसीमन का पैमाना यह निर्धारित किया जाता है कि वर्कफ़्लो समानांतर कैसे हो सकता है, और समानांतर रूप से समानांतर थ्रेड्स को एक दूसरे के साथ समन्वय करने की आवश्यकता है।

सिंगल थ्रेडेड
जो भी कारण से, यह वर्कफ़्लो केवल एक ही थ्रेड में काम कर सकता है।

एक थ्रेड साधन एक प्रणाली साधन पैमाने अप यह तेजी से जाना बनाने के लिए।

कसकर युग्मित समानता
यह एक बहु-थ्रेडेड सिस्टम है जहां थ्रेड्स को एक दूसरे के साथ कसकर युग्मित करने की आवश्यकता होती है। शायद अंतर-प्रक्रिया-संचार को बहुत तेज करने की आवश्यकता है, या यह सभी को एक मेमोरी मैनेजर के माध्यम से प्रबंधित करने की आवश्यकता है। अधिकांश आरडीबीएमएस सिस्टम इस तरह की समानांतर कंप्यूटिंग हैं।

अधिकांश भाग के लिए, इन पद्धतियों जो कि पैमाने हैं अप की तुलना में बेहतर बाहर हालांकि वहाँ अपवाद हैं। उदाहरण के लिए, वर्कफ़्लोज़ जो सिंगल सिस्टम इमेज स्टाइल क्लस्टर, सिंगल मेमोरी स्पेस लेकिन थ्रेड्स के बीच उच्च विलंबता पर काम करेगा , स्केलिंग को आसान बना सकता है। लेकिन इस तरह के एसएसआई सिस्टम बहुत मुश्किल काम करते हैं इसलिए ज्यादातर इंजीनियर सिर्फ एक बड़ा बॉक्स बनाते हैं।

शिथिल युग्मित समानता
यह एक बहु-सूत्रित / प्रक्रिया प्रणाली है जहाँ धागे एक दूसरे के बीच उच्च अक्षांशों के साथ ठीक होते हैं। या एक दूसरे से बात करने की जरूरत नहीं है। वेब-सेवारत और रेंडर-फ़ार्म बाहर स्केल इस तरह के सिस्टम के क्लासिक उदाहरण हैं। इस तरह की प्रणालियां कसकर-युग्मित समानता से बड़ा बनाने में बहुत आसान हैं, यही वजह है कि प्रणाली की इस शैली के बारे में बहुत अधिक उत्तेजना है।

इस शैली को जहां पैमाने है बाहर एक बहुत आसान है।


RDBMS को कसकर युग्मित करने का कारण है क्योंकि वे डेटा के साथ कसकर युग्मित हैं। यानी एक ही संसाधन तक पहुंचने वाले कई सर्वर।
मैट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.