वितरित अभिकलन

एक वितरित प्रणाली एक ऐसी प्रणाली है जिसके घटक विभिन्न संगणक संजाल पर स्थित होते हैं, जो एक दूसरे को संदेश भेजकर अपने कार्यों का संचार और समन्वय करते हैं। वितरित कंप्यूटिंग कंप्यूटर विज्ञान का एक क्षेत्र है जो वितरित प्रणालियों का अध्ययन करता है।

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

एक कंप्यूटर प्रोग्राम जो एक वितरित सिस्टम के भीतर चलता है, एक वितरित प्रोग्राम कहलाता है, और वितरित प्रोग्रामिंग ऐसे प्रोग्राम लिखने की प्रक्रिया है।

वितरित कंप्यूटिंग कम्प्यूटेशनल समस्याओं को हल करने के लिए वितरित सिस्टम के उपयोग को भी संदर्भित करता है। डिस्ट्रीब्यूटेड कंप्यूटिंग में, एक समस्या को कई कार्यों में विभाजित किया जाता है, जिनमें से प्रत्येक को एक या एक से अधिक कंप्यूटरों द्वारा हल किया जाता है,

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

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

एक वितरित प्रणाली का एक सामान्य लक्ष्य हो सकता है, जैसे कि एक बड़ी कम्प्यूटेशनल समस्या को हल करना;

वितरित प्रणालियों के अन्य विशिष्ट गुणों में निम्नलिखित शामिल हैं:
 * सिस्टम को अलग-अलग कंप्यूटरों में दोष सहिष्णुता है।


 * सिस्टम की संरचना (नेटवर्क टोपोलॉजी, नेटवर्क लेटेंसी, कंप्यूटर की संख्या) पहले से ज्ञात नहीं है, सिस्टम में विभिन्न प्रकार के कंप्यूटर और नेटवर्क लिंक शामिल हो सकते हैं, और वितरित प्रोग्राम के निष्पादन के दौरान सिस्टम बदल सकता है।


 * प्रत्येक कंप्यूटर में सिस्टम का केवल एक सीमित, अधूरा दृश्य होता है। प्रत्येक कंप्यूटर इनपुट के केवल एक भाग को जान सकता है।

समानांतर और वितरित कंप्यूटिंग
वितरित सिस्टम नेटवर्क वाले कंप्यूटरों के समूह हैं जो अपने काम के लिए एक सामान्य लक्ष्य साझा करते हैं। समवर्ती कंप्यूटिंग, समानांतर कंप्यूटिंग और वितरित कंप्यूटिंग में बहुत अधिक ओवरलैप है, और उनके बीच कोई स्पष्ट अंतर मौजूद नहीं है। एक ही प्रणाली को समानांतर और वितरित दोनों के रूप में वर्णित किया जा सकता है; एक विशिष्ट वितरित प्रणाली में प्रोसेसर समवर्ती समानांतर में चलते हैं। समानांतर कंप्यूटिंग को वितरित कंप्यूटिंग के एक विशेष कसकर युग्मित रूप के रूप में देखा जा सकता है, और वितरित कंप्यूटिंग को समानांतर कंप्यूटिंग के ढीले युग्मित रूप के रूप में देखा जा सकता है। दाईं ओर का आंकड़ा वितरित और समांतर प्रणालियों के बीच अंतर को दर्शाता है। चित्रा (ए) एक विशिष्ट वितरित प्रणाली का एक योजनाबद्ध दृश्य है; सिस्टम को एक नेटवर्क टोपोलॉजी के रूप में दर्शाया गया है जिसमें प्रत्येक नोड एक कंप्यूटर है और नोड्स को जोड़ने वाली प्रत्येक पंक्ति एक संचार लिंक है। चित्र (बी) एक ही वितरित प्रणाली को और अधिक विस्तार से दिखाता है: प्रत्येक कंप्यूटर की अपनी स्थानीय मेमोरी होती है, और उपलब्ध संचार लिंक का उपयोग करके केवल एक नोड से दूसरे में संदेश भेजकर सूचना का आदान-प्रदान किया जा सकता है। चित्रा (सी) एक समांतर प्रणाली दिखाता है जिसमें प्रत्येक प्रोसेसर के पास साझा स्मृति तक सीधी पहुंच होती है।
 * समानांतर कंप्यूटिंग में, प्रोसेसर के बीच सूचनाओं के आदान-प्रदान के लिए सभी प्रोसेसर के पास एक साझा स्मृति वास्तुकला तक पहुंच हो सकती है।
 * वितरित कंप्यूटिंग में, प्रत्येक प्रोसेसर की अपनी निजी मेमोरी (वितरित मेमोरी) होती है। सूचना का आदान-प्रदान प्रोसेसर के बीच संदेश भेजकर किया जाता है।

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

इतिहास
समवर्ती प्रक्रियाओं का उपयोग जो संदेश-प्रेषण के माध्यम से संचार करता है, इसकी जड़ें 1960 के दशक में अध्ययन किए गए ऑपरेटिंग सिस्टम आर्किटेक्चर में हैं। पहली व्यापक वितरित प्रणालियाँ ईथरनेट जैसे स्थानीय क्षेत्र नेटवर्क थीं, जिसका आविष्कार 1970 के दशक में किया गया था। ARPANET, इंटरनेट के पूर्ववर्तियों में से एक, 1960 के दशक के अंत में पेश किया गया था, और ARPANET ईमेल का आविष्कार 1970 के दशक की शुरुआत में किया गया था। ई-मेल ARPANET का सबसे सफल अनुप्रयोग बना, और शायद यह बड़े पैमाने पर वितरित अनुप्रयोग का सबसे पहला उदाहरण है। ARPANET (और इसके उत्तराधिकारी, वैश्विक इंटरनेट) के अलावा, अन्य शुरुआती विश्वव्यापी कंप्यूटर नेटवर्क में 1980 के दशक से यूज़नेट और फिडोनेट शामिल थे, दोनों का उपयोग वितरित चर्चा प्रणालियों का समर्थन करने के लिए किया गया था। वितरित कंप्यूटिंग का अध्ययन 1970 के दशक के अंत और 1980 के दशक की शुरुआत में कंप्यूटर विज्ञान की अपनी शाखा बन गया। क्षेत्र में पहला सम्मेलन, वितरित कम्प्यूटिंग (पीओडीसी) के सिद्धांतों पर संगोष्ठी, 1982 की तारीखें, और वितरित कंप्यूटिंग (डीआईएससी) पर इसके समकक्ष अंतर्राष्ट्रीय संगोष्ठी को पहली बार 1985 में ओटावा में ग्राफ पर वितरित एल्गोरिदम पर अंतर्राष्ट्रीय कार्यशाला के रूप में आयोजित किया गया था।

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

वितरित प्रोग्रामिंग आमतौर पर कई बुनियादी आर्किटेक्चर में से एक में आती है: क्लाइंट-सर्वर मॉडल | क्लाइंट-सर्वर, त्रि-स्तरीय (कंप्यूटिंग) | थ्री-टियर, मल्टीटियर आर्किटेक्चर | एन-टियर, या पीयर-टू-पीयर; या श्रेणियाँ: ढीला युग्मन, या कंप्यूटर क्लस्टर। रेफरी>

रेफरी नाम=विग्ना20150127>विग्ना पी, केसी एमजे। क्रिप्टोक्यूरेंसी का युग: कैसे बिटकॉइन और ब्लॉकचैन वैश्विक आर्थिक व्यवस्था को चुनौती दे रहे हैं सेंट मार्टिन प्रेस 27 जनवरी, 2015 ISBN 9781250065636 इसके बजाय सभी जिम्मेदारियों को सभी मशीनों के बीच समान रूप से विभाजित किया जाता है, जिन्हें पीयर के रूप में जाना जाता है। सहकर्मी क्लाइंट और सर्वर दोनों के रूप में सेवा कर सकते हैं। इस आर्किटेक्चर के उदाहरणों में बिटटोरेंट और बिटकॉइन नेटवर्क शामिल हैं।
 * क्लाइंट-सर्वर मॉडल | क्लाइंट-सर्वर: आर्किटेक्चर जहां स्मार्ट क्लाइंट डेटा के लिए सर्वर से संपर्क करते हैं, फिर इसे स्वरूपित करते हैं और उपयोगकर्ताओं को प्रदर्शित करते हैं। जब यह स्थायी परिवर्तन का प्रतिनिधित्व करता है तो क्लाइंट पर इनपुट सर्वर पर वापस आ जाता है।
 * थ्री-टियर (कंप्यूटिंग) | थ्री-टियर: आर्किटेक्चर जो क्लाइंट इंटेलिजेंस को एक मध्य स्तर पर ले जाते हैं ताकि स्टेटलेस प्रोटोकॉल क्लाइंट का उपयोग किया जा सके। यह एप्लिकेशन परिनियोजन को सरल करता है। अधिकांश वेब एप्लिकेशन त्रि-स्तरीय हैं।
 * मल्टीटियर आर्किटेक्चर | एन-टियर: आर्किटेक्चर जो आमतौर पर वेब एप्लिकेशन को संदर्भित करते हैं जो अन्य एंटरप्राइज़ सेवाओं के लिए उनके अनुरोधों को आगे बढ़ाते हैं। इस प्रकार का एप्लिकेशन अनुप्रयोग सर्वर की सफलता के लिए सबसे अधिक जिम्मेदार है।
 * पीयर-टू-पीयर: आर्किटेक्चर जहां कोई विशेष मशीन नहीं है जो सेवा प्रदान करती है या नेटवर्क संसाधनों का प्रबंधन करती है।

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

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

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

मॉडल
कई कार्य जिन्हें हम कंप्यूटर का उपयोग करके स्वचालित करना चाहते हैं, वे प्रश्न-उत्तर प्रकार के होते हैं: हम एक प्रश्न पूछना चाहते हैं और कंप्यूटर को एक उत्तर देना चाहिए। सैद्धांतिक कंप्यूटर विज्ञान में, ऐसे कार्यों को कम्प्यूटेशनल समस्याएँ कहा जाता है। औपचारिक रूप से, एक कम्प्यूटेशनल समस्या में प्रत्येक उदाहरण के समाधान के साथ-साथ उदाहरण होते हैं। उदाहरण वे प्रश्न हैं जो हम पूछ सकते हैं, और समाधान इन प्रश्नों के वांछित उत्तर हैं।

सैद्धांतिक कंप्यूटर विज्ञान यह समझने की कोशिश करता है कि कंप्यूटर (कम्प्यूटेबिलिटी थ्योरी (कंप्यूटर साइंस)) और कितनी कुशलता से (कम्प्यूटेशनल जटिलता सिद्धांत) का उपयोग करके कौन सी कम्प्यूटेशनल समस्याओं को हल किया जा सकता है। परंपरागत रूप से, यह कहा जाता है कि कंप्यूटर का उपयोग करके एक समस्या को हल किया जा सकता है यदि हम एक एल्गोरिदम डिज़ाइन कर सकते हैं जो किसी दिए गए उदाहरण के लिए सही समाधान उत्पन्न करता है। इस तरह के एक कलन विधि को एक कंप्यूटर प्रोग्राम के रूप में लागू किया जा सकता है जो एक सामान्य-उद्देश्य वाले कंप्यूटर पर चलता है: प्रोग्राम सूचना से एक समस्या का उदाहरण पढ़ता है, कुछ संगणना करता है, और आउटपुट (कंप्यूटिंग) के रूप में समाधान का उत्पादन करता है। रैंडम-एक्सेस मशीन या यूनिवर्सल ट्यूरिंग मशीन जैसी औपचारिकताएं इस तरह के एल्गोरिदम को क्रियान्वित करने वाले अनुक्रमिक सामान्य-उद्देश्य वाले कंप्यूटर के अमूर्त मॉडल के रूप में उपयोग की जा सकती हैं। समवर्ती और वितरित कंप्यूटिंग का क्षेत्र या तो कई कंप्यूटरों के मामले में समान प्रश्नों का अध्ययन करता है, या एक कंप्यूटर जो इंटरेक्टिंग प्रक्रियाओं के एक नेटवर्क को निष्पादित करता है: ऐसे नेटवर्क में कौन सी कम्प्यूटेशनल समस्याओं को हल किया जा सकता है और कितनी कुशलता से? हालाँकि, यह बिल्कुल स्पष्ट नहीं है कि समवर्ती या वितरित प्रणाली के मामले में किसी समस्या को हल करने का क्या मतलब है: उदाहरण के लिए, एल्गोरिथम डिज़ाइनर का कार्य क्या है, और अनुक्रमिक सामान्य के समवर्ती या वितरित समतुल्य क्या है- उद्देश्य कंप्यूटर? नीचे दी गई चर्चा कई कंप्यूटरों के मामले पर केंद्रित है, हालांकि एक कंप्यूटर पर चलने वाली समवर्ती प्रक्रियाओं के लिए कई मुद्दे समान हैं।

आमतौर पर तीन दृष्टिकोणों का उपयोग किया जाता है:
 * साझा-स्मृति मॉडल में समानांतर एल्गोरिदम
 * सभी प्रोसेसर की एक साझा मेमोरी तक पहुंच होती है। एल्गोरिथ्म डिजाइनर प्रत्येक प्रोसेसर द्वारा निष्पादित प्रोग्राम को चुनता है।
 * एक सैद्धांतिक मॉडल है समानांतर RAM | समानांतर रैंडम-एक्सेस मशीन (PRAM) जिनका उपयोग किया जाता है। हालाँकि, शास्त्रीय PRAM मॉडल साझा मेमोरी में सिंक्रोनस एक्सेस को मानता है।
 * साझा-मेमोरी प्रोग्राम को वितरित सिस्टम तक बढ़ाया जा सकता है यदि अंतर्निहित ऑपरेटिंग सिस्टम नोड्स के बीच संचार को एनकैप्सुलेट करता है और वस्तुतः सभी अलग-अलग सिस्टम में मेमोरी को एकीकृत करता है।
 * एक मॉडल जो वास्तविक-विश्व मल्टीप्रोसेसर मशीनों के व्यवहार के करीब है और मशीन निर्देशों के उपयोग को ध्यान में रखता है, जैसे कि तुलना-और-स्वैप (CAS), अतुल्यकालिक साझा मेमोरी है। इस मॉडल पर काम का एक विस्तृत निकाय है, जिसका सारांश साहित्य में पाया जा सकता है।
 * संदेश-पासिंग मॉडल में समानांतर एल्गोरिदम
 * एल्गोरिथ्म डिजाइनर नेटवर्क की संरचना, साथ ही प्रत्येक कंप्यूटर द्वारा निष्पादित प्रोग्राम को चुनता है।
 * बूलियन सर्किट और छँटाई नेटवर्क जैसे मॉडल का उपयोग किया जाता है। एक बूलियन सर्किट को कंप्यूटर नेटवर्क के रूप में देखा जा सकता है: प्रत्येक गेट एक कंप्यूटर है जो एक अत्यंत सरल कंप्यूटर प्रोग्राम चलाता है। इसी तरह, सॉर्टिंग नेटवर्क को कंप्यूटर नेटवर्क के रूप में देखा जा सकता है: प्रत्येक तुलनित्र एक कंप्यूटर है।
 * संदेश-पासिंग मॉडल में वितरित एल्गोरिदम
 * एल्गोरिदम डिजाइनर केवल कंप्यूटर प्रोग्राम चुनता है। सभी कंप्यूटर एक ही प्रोग्राम चलाते हैं। नेटवर्क की संरचना की परवाह किए बिना सिस्टम को सही ढंग से काम करना चाहिए।
 * आमतौर पर इस्तेमाल किया जाने वाला मॉडल एक ग्राफ़ (असतत गणित) है जिसमें प्रति नोड एक परिमित-राज्य मशीन होती है।

वितरित एल्गोरिदम के मामले में, कम्प्यूटेशनल समस्याएं आमतौर पर ग्राफ़ से संबंधित होती हैं। अक्सर कंप्यूटर नेटवर्क की संरचना का वर्णन करने वाला ग्राफ समस्या का उदाहरण है। यह निम्नलिखित उदाहरण में सचित्र है।

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

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

जटिलता उपाय
समानांतर एल्गोरिदम में, समय और स्थान के अतिरिक्त एक अन्य संसाधन कंप्यूटरों की संख्या है। दरअसल, चलने के समय और कंप्यूटर की संख्या के बीच अक्सर एक समझौता होता है: समस्या को तेजी से हल किया जा सकता है यदि समानांतर में अधिक कंप्यूटर चल रहे हों (गति बढ़ाना देखें)। यदि प्रोसेसर की बहुपद संख्या का उपयोग करके बहुलगणकीय समय में एक निर्णय समस्या को हल किया जा सकता है, तो समस्या को एनसी (जटिलता) वर्ग में कहा जाता है। कक्षा एनसी को प्रैम औपचारिकता या बूलियन सर्किट का उपयोग करके समान रूप से अच्छी तरह से परिभाषित किया जा सकता है- PRAM मशीनें बूलियन सर्किट को कुशलता से अनुकरण कर सकती हैं और इसके विपरीत। वितरित एल्गोरिदम के विश्लेषण में, आमतौर पर कम्प्यूटेशनल चरणों की तुलना में संचार संचालन पर अधिक ध्यान दिया जाता है। शायद वितरित कंप्यूटिंग का सबसे सरल मॉडल एक तुल्यकालिक प्रणाली है जहां सभी नोड लॉकस्टेप फैशन में काम करते हैं। यह मॉडल आमतौर पर स्थानीय मॉडल के रूप में जाना जाता है। प्रत्येक संचार दौर के दौरान, समानांतर में सभी नोड्स (1) अपने पड़ोसियों से नवीनतम संदेश प्राप्त करते हैं, (2) मनमाना स्थानीय गणना करते हैं, और (3) अपने पड़ोसियों को नए संदेश भेजते हैं। ऐसी प्रणालियों में, एक केंद्रीय जटिलता माप कार्य को पूरा करने के लिए आवश्यक समकालिक संचार दौरों की संख्या है। यह जटिलता माप नेटवर्क के व्यास (ग्राफ सिद्धांत) से निकटता से संबंधित है। बता दें कि D नेटवर्क का व्यास है। एक ओर, किसी भी संगणनीय समस्या को लगभग 2D संचार दौरों में एक तुल्यकालिक वितरित प्रणाली में तुच्छ रूप से हल किया जा सकता है: बस सभी सूचनाओं को एक स्थान (डी राउंड) में इकट्ठा करें, समस्या को हल करें, और प्रत्येक नोड को समाधान (डी राउंड) के बारे में सूचित करें।.

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

एक अन्य आमतौर पर इस्तेमाल किया जाने वाला माप नेटवर्क में प्रसारित बिट्स की कुल संख्या है (cf. संचार जटिलता)। इस अवधारणा की विशेषताओं को आम तौर पर CONGEST(B) मॉडल के साथ कैप्चर किया जाता है, जिसे समान रूप से LOCAL मॉडल के रूप में परिभाषित किया जाता है, लेकिन जहां एकल संदेशों में केवल B बिट्स हो सकते हैं।

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

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

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

इस समस्या की परिभाषा का श्रेय अक्सर LeLann को दिया जाता है, जिन्होंने इसे एक टोकन रिंग नेटवर्क में एक नया टोकन बनाने के लिए एक विधि के रूप में औपचारिक रूप दिया, जिसमें टोकन खो गया है। समन्वयक चुनाव एल्गोरिदम को प्रेषित कुल बाइट्स और समय के मामले में किफायती होने के लिए डिज़ाइन किया गया है। Gallager, Humblet, और Spira द्वारा सुझाए गए एल्गोरिथम सामान्य रूप से अप्रत्यक्ष रेखांकन के लिए वितरित एल्गोरिदम के डिजाइन पर एक मजबूत प्रभाव पड़ा है, और वितरित कंप्यूटिंग में एक प्रभावशाली पेपर के लिए दिकस्ट्रा पुरस्कार जीता है।

विभिन्न प्रकार के नेटवर्क ग्राफ़ (असतत गणित) के लिए कई अन्य एल्गोरिदम सुझाए गए थे, जैसे अप्रत्यक्ष छल्ले, यूनिडायरेक्शनल रिंग, पूर्ण ग्राफ़, ग्रिड, निर्देशित यूलर ग्राफ़ और अन्य। समन्वयक चुनाव एल्गोरिथम के डिजाइन से ग्राफ परिवार के मुद्दे को अलग करने वाली एक सामान्य विधि कोराच, कुटेन और मोरन द्वारा सुझाई गई थी। समन्वय करने के लिए, वितरित प्रणालियाँ समन्वयकों की अवधारणा को नियोजित करती हैं। समन्वयक चुनाव समस्या केंद्रीय समन्वयक के रूप में कार्य करने के लिए एक वितरित प्रणाली में विभिन्न प्रोसेसरों पर प्रक्रियाओं के समूह के बीच से एक प्रक्रिया का चयन करना है। कई केंद्रीय समन्वयक चुनाव एल्गोरिदम मौजूद हैं।

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

यह भी देखें

 * अभिनेता मॉडल
 * ऐपस्केल
 * नेटवर्क कंप्यूटिंग के लिए बर्कले ओपन इंफ्रास्ट्रक्चर
 * कोड गतिशीलता
 * डेटाफ्लो प्रोग्रामिंग
 * विकेंद्रीकृत कंप्यूटिंग
 * वितरित एल्गोरिथ्म
 * वितरित एल्गोरिथम तंत्र डिजाइन
 * वितरित कैश
 * वितरित जीआईएस
 * वितरित नेटवर्किंग
 * वितरित ऑपरेटिंग सिस्टम
 * अंतिम प्रोग्रामिंग
 * अंततः स्थिरता
 * वितरित कम्प्यूटिंग में एडजर डब्ल्यू. दिज्क्स्ट्रा पुरस्कार
 * फेडरेशन (सूचना प्रौद्योगिकी)
 * कोहरा कंप्यूटिंग
 * तह @ घर
 * ग्रिड कंप्यूटिंग
 * इन्फर्नो (ऑपरेटिंग सिस्टम)
 * इंटरनेट जीआईएस
 * जंगल कंप्यूटिंग
 * स्तरित कतारबद्ध नेटवर्क
 * लाइब्रेरी ओरिएंटेड आर्किटेक्चर (एलओए)
 * वितरित कंप्यूटिंग सम्मेलनों की सूची
 * स्वयंसेवी कंप्यूटिंग परियोजनाओं की सूची
 * मॉडल जाँच
 * समानांतर वितरित प्रसंस्करण
 * समानांतर प्रोग्रामिंग मॉडल
 * बेल लैब्स से प्लान 9
 * साझा कुछ भी नहीं वास्तुकला
 * वेब जीआईएस

संदर्भ

 * Books
 * Articles
 * Web sites
 * Articles
 * Web sites
 * Articles
 * Web sites
 * Articles
 * Web sites
 * Articles
 * Web sites
 * Articles
 * Web sites
 * Web sites
 * Web sites
 * Web sites
 * Web sites

अग्रिम पठन

 * Books
 * ISBN 0-471-45324-2.
 * ISBN 0-132-14301-1.
 * : Java Distributed Computing by Jim Faber, 1998
 * ISBN 0-471-03600-5.
 * ISBN 0201058669
 * Articles
 * ISBN 0201058669
 * Articles
 * Articles


 * Conference Papers