कंप्यूटर के नेटवर्क में काम कैसे विभाजित करें?


11

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

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

मुख्य प्रश्न यह है: इसे प्राप्त करने के लिए मुझे किस दृष्टिकोण का उपयोग करना चाहिए?

लेकिन शायद निम्नलिखित मुझे एक उत्तर पर पहुंचने में मदद करेंगे: क्या मैं जो करने की कोशिश कर रहा हूं उसका नाम या डिज़ाइन पैटर्न है?

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

क्या इस तरह की व्यवस्था के कोई उदाहरण हैं? मुख्य प्रश्न थोड़ा सामान्य है, इसलिए एक प्रारंभिक बिंदु / संदर्भ बिंदु होना अच्छा होगा।

नोट मैं c ++ और विंडोज़ की बाधाओं को मान रहा हूं, इसलिए उस दिशा में इंगित करने वाले समाधान की सराहना की जाएगी।


1
कतार या वर्कफ़्लो सिस्टम के लिए देखें, उदाहरण: aws.amazon.com/sqs en.wikipedia.org/wiki/Message_queue वगैरह। कतार प्रणाली वितरण, जाँच और पुन: असाइनमेंट का ध्यान रख सकती है।
ल्यूक फ्रेंकेन

2
आप जिस शब्द की तलाश कर रहे हैं, वह समांतरीकरण है । इस सड़क के नीचे आने से पहले, सुनिश्चित करें कि आपकी समस्या वास्तव में समानांतर में हल की जा सकती है (उदाहरण के लिए, आइटम n के लिए परिणाम आइटम n-1 के परिणाम पर निर्भर नहीं करता है )।
११:२fl पर ब्लफ़ल


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

3
मुझे आश्चर्य है कि किसी ने भी हूप का उल्लेख नहीं किया।
केविन

जवाबों:


12

क्या इस तरह की व्यवस्था के कोई उदाहरण हैं?

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


3
इसके लिए नया पसंदीदा शब्द मत भूलना: बादल ! या क्लाउड कंप्यूटिंग। यदि आप इसे अपने कंप्यूटर के साथ करते हैं तो लोग उन्हें व्यक्तिगत क्लाउड या मिनी क्लाउड कहते हैं । विपणन बकवास, यह कहा जाता है के रूप में आप वर्षों के लिए वितरित कंप्यूटिंग के रूप में कहा गया है, बस वहाँ ओपी के लिए पता करने के लिए जहां वह क्लाउड सामान के बारे में पढ़ता है यह बिल्कुल इस बारे में बात कर रहा है।
जिमी होफा

3
@ जिमीहॉफ: "क्लाउड" शब्द का उपयोग अक्सर यह बताने के लिए किया जाता है कि आपके डेटा के साथ-साथ आपके द्वारा काम करने के लिए उपयोग किए जाने वाले सॉफ़्टवेयर आपके स्थानीय मशीन के बजाय कहीं और इंटरनेट पर हैं। और अभी तक अन्य बार, इसका मतलब है कि आप एक आभासी मशीन का उपयोग कर रहे हैं जो एक एकल वीएम होस्ट के बजाय क्लस्टर पर चलता है; स्पष्ट लाभ पारदर्शी शून्य-डाउनटाइम फेलओवर हो रहा है।
तदमर्स

2
@ सही, लेकिन कोई भी ओपी द्वारा वर्णित प्रणाली के प्रकार को कम नहीं करता है, यह क्लाउड के मार्केटिंग मॉनीकर के कई उपयोगों में से एक है, साथ ही साथ आपने व्यावहारिक रूप से सब कुछ बताया। यही कारण है कि यह एक चर्चा करता है, यह परिभाषा के बिना आविष्कार किया गया था इसलिए लोगों ने इसे विभिन्न सामानों के टन पर लागू किया, इसलिए इसका प्रभावी रूप से सब कुछ और कुछ भी नहीं है। Buzzwords के लिए हुर्रे।
जिमी हॉफ

1
@ जिमीहॉफ: यह भी "बादल" शब्द का उल्लेख करता है जो यहां पूरी तरह से गैर-रचनात्मक है।
तदमर्स

3
यह प्रबंधन के खिलाफ एक अच्छे शब्द का उपयोग कर सकता है। "इस डेटा प्रोसेसिंग समस्या का आपका समाधान क्या है?" "ठीक है, हम इसे कंप्यूटर के एक नेटवर्क पर वितरित कर सकते हैं और उन्हें समानांतर में गणना कर सकते हैं।" BLANK LOOK "हम एक मिनी क्लाउड का निर्माण कर सकते हैं।" "ओके कैरी ऑन"
मॉर्पॉर्क

4

जैसा कि अन्य उत्तरों के अनुसार, इस क्षेत्र को वितरित कंप्यूटिंग , ग्रिड कंप्यूटिंग , क्लस्टर कंप्यूटिंग और उच्च प्रदर्शन कंप्यूटिंग के रूप में जाना जाता है ।

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

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

अपने स्वयं के, निजी क्लाउड बनाने के लिए आपको किस दृष्टिकोण का उपयोग करना चाहिए? मेरे आदेश या वरीयता में:

  1. अपने स्वयं के क्लाउड का निर्माण न करें , दूसरों द्वारा प्रदान किए गए बुनियादी ढांचे का उपयोग करें। अमेज़न इस वर्चुअल प्राइवेट क्लाउड , रैकस्पेस को सिर्फ प्राइवेट क्लाउड कहता है ; मुझे यकीन है कि आप अन्य ऑफ़र पा सकते हैं और तुलना कर सकते हैं।

  2. अपने खुद के वितरित कंप्यूटिंग इंजन का निर्माण न करें , दूसरों द्वारा प्रदान किए गए इंजन का उपयोग करें। यदि आप अपनी मशीनों का उपयोग करने पर जोर देते हैं, तो कम से कम सॉफ़्टवेयर का उपयोग करें जो दूसरों द्वारा प्रदान और परीक्षण किया गया है। आप पाइप इंटरफ़ेस के माध्यम से या स्ट्रीमिंग एपीआई के माध्यम से किसी भी निष्पादन योग्य से Hadoop का उपयोग कर सकते हैं । स्पार्क पर एक समान स्ट्रीमिंग इंटरफ़ेस है

  3. खरोंच से सभी घटकों को कोड न करें , समुदाय से घटकों का उपयोग करें। यदि, किसी कारण से, आपने अभी तक पढ़ा है और अपने स्वयं के क्लाउड घटकों को रोल आउट करना चाहते हैं, तो C ++ के मानक पुस्तकालय से शुरू न करें। आपको जिन मुख्य घटकों की आवश्यकता होगी, वे हैं:

    • एक कतार प्रणाली, जैसा कि एक टिप्पणी में कहा गया है , मास्टर से प्रसंस्करण नोड्स के लिए कार्य भेजने के लिए, और मास्टर को प्रसंस्करण नोड्स से परिणाम की पुष्टि भेजने के लिए
    • एक वितरित फ़ाइल सिस्टम, ताकि प्रोसेसिंग नोड्स को संचालित करने के लिए डेटा तक पहुंच सके।

    दोनों के लिए कई विकल्प हैं। कतार के लिए, RabbitMQ में एक Windows इंस्टॉलर है, जैसा कि ZeroMQ करता है । वितरित फ़ाइल सिस्टम के लिए, मुझे वास्तव में विंडोज पर पर्याप्त अनुभव नहीं है: ऐसा लगता है कि आप एसएमबी शेयरों को डीएफएस में व्यवस्थित कर सकते हैं , लेकिन मैं आपको यहां कोई संकेत नहीं दे सकता। आप सोच सकते हैं, जैसा कि एक अन्य उत्तर में दिया गया है, डेटा के लिए एक वितरित डेटाबेस जैसे कि MongoDB का उपयोग करना; यह विंडोज पर चलता है

आप MPI का उपयोग करने के बारे में भी सोच सकते हैं (आमतौर पर OpenMPI कार्यान्वयन , आमतौर पर इसके बूस्टर आवरण के माध्यम से ), लेकिन ध्यान दें कि MPI कार्यक्रम न तो लोचदार हैं और न ही गलती सहिष्णु हैं; आपको स्वयं का ध्यान रखने की आवश्यकता है (कम से कम वे इसे प्राप्त करने के लिए कुछ तंत्र प्रदान करते हैं )। इसीलिए मैं आपको सबसे पहले सिफारिश करूंगा कि वितरण के लिए एक रूपरेखा का मूल्यांकन करें जिसमें इस तरह के गुण हों।

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