वितरित प्रणाली वह है जिसमें किसी ऐसे कंप्यूटर की विफलता, जिसके बारे में आपको पता भी नहीं था, आपके कंप्यूटर को अनुपयोगी बना सकती है।
एएम ट्यूरिंग पुरस्कार विजेता लेस्ली लैम्पॉर्ट का यह प्रसिद्ध उद्धरण वितरित प्रणाली के निर्माण और रखरखाव में चुनौतियों का सारांश प्रस्तुत करता है। लेकिन ऐसी जटिल प्रणालियों की आवश्यकता क्यों है?
इंटरनेट और स्मार्ट डिवाइस के आगमन के साथ, संसाधित किए जाने वाले डेटा की मात्रा में भारी वृद्धि हुई है। उबर ऑर्डर करना, नेटफ्लिक्स पर शो देखना, एक साधारण Google खोज, ऑनलाइन शॉपिंग या सोशल मीडिया के साथ बातचीत जैसी साधारण दैनिक गतिविधियाँ, सभी छोटी-छोटी क्रियाएँ जिन्हें हम सामान्य मानते हैं, सैकड़ों वितरण सेवाओं द्वारा संचालित होती हैं। ये सभी सेवाएँ वितरित प्रणालियों में कुछ आधारभूत पत्रों की रीढ़ पर बनी हैं।
हालांकि यह सूची निश्चित रूप से संपूर्ण नहीं है, फिर भी यहां मेरे कुछ पसंदीदा शोधपत्र दिए गए हैं, जिनका वितरित प्रणालियों की दुनिया पर व्यापक प्रभाव पड़ा है।
हालांकि यह कोई पारंपरिक पेपर नहीं है, लेकिन एरिक ब्रूअर ने इसे पहली बार 2000 में ACM संगोष्ठी में वितरित कंप्यूटिंग के सिद्धांतों (PODC) पर एक मुख्य भाषण में एक अनुमान के रूप में पेश किया था। बाद में इस पेपर को औपचारिक रूप दिया गया और नैन्सी लिंच और सेठ गिल्बर्ट ने ब्रूअर के अनुमान और सुसंगत, उपलब्ध, विभाजन-सहिष्णु वेब सेवाओं की व्यवहार्यता नामक पेपर में साबित किया।
एरिक ब्रूअर का CAP प्रमेय वितरित सिस्टम सिद्धांत में एक मौलिक अवधारणा है, जिसमें कहा गया है कि वितरित डेटा स्टोर के लिए तीन में से दो से अधिक गारंटी प्रदान करना असंभव है: संगति, उपलब्धता और विभाजन सहिष्णुता। यहाँ उल्लिखित अन्य सभी पेपर उपरोक्त सिद्धांत को लागू करते हैं और अपने सिस्टम में आवश्यक ट्रेडऑफ़ करते हैं।
CAP प्रमेय हमेशा पेपर के बारे में पाठकों की समझ के आधार पर बहुत सारी चर्चाओं को जन्म देता है। मार्टिन क्लेपमैन की " CAP प्रमेय की आलोचना " ट्रेडऑफ़ पर चर्चा करने के लिए एक बेहतर रूपरेखा प्रदान करती है।
2001 के इस महत्वपूर्ण पेपर में, लेस्ली लैम्पॉर्ट ने वितरित सिस्टम में आसान और सुलभ तरीके से सहमति प्राप्त करने के लिए पैक्सोस एल्गोरिदम प्रस्तुत किया है। पैक्सोस-आधारित सहमति प्रोटोकॉल कई वितरित डेटाबेस, स्टोरेज सिस्टम, मैसेजिंग प्लेटफ़ॉर्म और कई प्रौद्योगिकी कंपनियों द्वारा उपयोग की जाने वाली समन्वय सेवाओं की रीढ़ बनाते हैं। इसने Google की Chubby, Google के Spanner, Apache ZooKeeper, Apache BookKeeper, आदि जैसी अन्य तकनीकों को बहुत प्रभावित किया।
गूगल फाइल सिस्टम (GFS) पेपर कमोडिटी हार्डवेयर पर बड़े वितरित डेटा-गहन अनुप्रयोगों के लिए एक स्केलेबल वितरित फ़ाइल सिस्टम पेश करता है, जो बाद में आने वाले कई वितरित फ़ाइल सिस्टम का आधार है। GFS ने HDFS के लिए एक प्रमुख प्रेरणा के रूप में कार्य किया, जो अपाचे हडूप फ्रेमवर्क और अंततः अमेज़ॅन S3 द्वारा उपयोग किया जाने वाला वितरित फ़ाइल सिस्टम है (भले ही S3 मौलिक रूप से अलग है)।
यह पेपर MapReduce प्रोग्रामिंग मॉडल का परिचय देता है, जो वितरित कंप्यूटिंग इंफ्रास्ट्रक्चर का उपयोग करके बड़े पैमाने के डेटासेट को संसाधित करने के लिए एक स्केलेबल दृष्टिकोण प्रदर्शित करता है। MapReduce ने "बड़े डेटा" क्रांति में एक महत्वपूर्ण भूमिका निभाई, जिससे संगठनों को बड़े डेटासेट का विश्लेषण करने और उनसे अंतर्दृष्टि प्राप्त करने के लिए वितरित कंप्यूटिंग की शक्ति का उपयोग करने में सक्षम बनाया गया। आप देख सकते हैं कि GFS और MapReduce के संयोजन ने Google को "इंटरनेट" के डेटा को व्यवस्थित करने के लिए पेटाबाइट्स डेटा को संसाधित करने की अनुमति कैसे दी।
मैपरेड्यूस पेपर (जीएफएस के साथ) ने अपाचे हडॉप के आसपास निर्मित उपकरणों और पुस्तकालयों के पूरे पारिस्थितिकी तंत्र के विकास को प्रेरित किया जैसे कि अपाचे हाइव (हडॉप पर निर्मित डेटा वेयरहाउस इंफ्रास्ट्रक्चर), अपाचे पिग (हडॉप के लिए उच्च स्तरीय डेटा प्रवाह भाषा), अपाचे स्पार्क (इन-मेमोरी डेटा प्रोसेसिंग इंजन), अपाचे एचबेस (वितरित नोएसक्यूएल डेटाबेस), और कई अन्य।
बिगटेबल पेपर Google पर संरचित डेटा के प्रबंधन के लिए एक वितरित भंडारण प्रणाली का प्रतिनिधित्व करता है। एक बार जब MapReduce और GFS ने Google को लागत-प्रभावी तरीके से बड़े पैमाने पर डेटा संसाधित करने की अनुमति दी, तो अगला कदम डेटा तक विश्वसनीय और अत्यधिक उपलब्ध तरीके से पहुँच को सक्षम करना था। बिगटेबल वेब इंडेक्सिंग, Google Earth और Google Finance जैसे अनुप्रयोगों के लिए एक लचीला, उच्च-प्रदर्शन समाधान प्रदान करने में सक्षम था।
जैसे MapReduce ने "बड़े डेटा" युग में क्रांति ला दी, वैसे ही BigTable पेपर "NoSQL" युग के लिए प्रेरक शक्ति था। Bigtable पेपर में प्रस्तुत किए गए कई डिज़ाइन सिद्धांत और आर्किटेक्चरल अवधारणाएँ "अपाचे HBase", "कैसेंड्रा", "MongoD", आदि जैसी तकनीकों में इस्तेमाल की गईं। हालाँकि इनमें से कुछ अनुप्रयोग अलग-अलग डेटा मॉडल (जैसे, MongoDB) का उपयोग कर सकते हैं, लेकिन वे क्षैतिज मापनीयता, दोष सहिष्णुता और स्वचालित शार्डिंग जैसे सामान्य सिद्धांतों को साझा करते हैं।
डायनेमो पेपर में अमेज़ॅन द्वारा विकसित अत्यधिक उपलब्ध की-वैल्यू स्टोर का डिज़ाइन और कार्यान्वयन प्रस्तुत किया गया है। डायनेमो ने अत्यधिक गतिशील डेटा, जैसे कि आपके शॉपिंग कार्ट में आइटम तक वास्तविक समय में पहुँच की आवश्यकता को संबोधित किया। पेपर ने वितरित सिस्टम डिज़ाइन के मूल सिद्धांत के रूप में "अंतिम संगति" की अवधारणा को पेश किया, जिससे उच्च उपलब्धता और प्रदर्शन (हाय CAP प्रमेय!) प्राप्त करने के लिए शिथिल संगति गारंटी की अनुमति मिलती है।
पेपर से ही पता चलता है, "बिगटेबल की तुलना में, डायनेमो उन अनुप्रयोगों को लक्षित करता है, जिन्हें केवल कुंजी/मूल्य पहुंच की आवश्यकता होती है, तथा जिनका प्राथमिक ध्यान उच्च उपलब्धता पर होता है, जहां नेटवर्क विभाजन या सर्वर विफलताओं के बाद भी अपडेट को अस्वीकार नहीं किया जाता है।"
बिगटेबल के समान, डायनमो पेपर ने बाद की प्रौद्योगिकियों जैसे कि रियाक, वोल्डेमॉर्ट, कैसांद्रा और यहां तक कि अपाचे काफ्का जैसी इवेंट स्ट्रीमिंग प्रौद्योगिकियों को भी अत्यधिक प्रभावित किया।
फेसबुक के तेजी से विकास के लिए एक डेटाबेस समाधान की आवश्यकता थी जो भारी मात्रा में डेटा को संभालने और बड़ी संख्या में समवर्ती उपयोगकर्ताओं का समर्थन करने में सक्षम हो। जबकि बिगटेबल और डायनेमो अपने आप में काफी प्रभावशाली थे, कैसंड्रा पहली तकनीक थी जो दूसरों से एक कदम आगे थी। पेपर प्रकाशित करने के साथ-साथ अपाचे लाइसेंस के तहत इसे ओपन-सोर्स योगदान के रूप में जारी करके, फेसबुक ने पूरे उद्योग के लिए ऐसी तकनीक तक पहुंच को सक्षम करने में महत्वपूर्ण भूमिका निभाई।
कैसांद्रा ने स्वयं को पिछले दो से अलग करते हुए एक ट्यूनेबल कंसिस्टेंसी मॉडल प्रदान किया, जिससे उपयोगकर्ताओं को उनकी अनुप्रयोग आवश्यकताओं के आधार पर मजबूत कंसिस्टेंसी (बिगटेबल की तरह) और अंतिम कंसिस्टेंसी (डायनेमो की तरह) के बीच चयन करने की सुविधा मिली।
यह पेपर अपाचे ज़ूकीपर का परिचय देता है और वितरित सिस्टम में अत्यधिक विश्वसनीय और स्केलेबल समन्वय सेवाएँ प्रदान करने के लिए इसके डिज़ाइन सिद्धांतों और एल्गोरिदम को प्रस्तुत करता है। ज़ूकीपर की शुरूआत से पहले, सॉफ़्टवेयर डेवलपर्स को अक्सर वितरित सिस्टम में वितरित समन्वय और सहमति के लिए अपने स्वयं के तदर्थ समाधान लागू करने पड़ते थे।
ज़ूकीपर ने वितरित समन्वय के लिए एक केंद्रीकृत सेवा प्रस्तावित की, जिसमें वितरित लॉक, लीडर चुनाव और कॉन्फ़िगरेशन प्रबंधन जैसे आदिम तत्व पेश किए गए। इससे जटिल समन्वय तर्क को ज़ूकीपर पर स्थानांतरित करके वितरित अनुप्रयोगों के विकास को सरल बनाने की अनुमति मिली। ज़ूकीपर का उपयोग करने के सबसे आम मामलों में से एक सेवा खोज के लिए है।
यह पेपर अपाचे काफ्का का परिचय देता है, जो एक वितरित मैसेजिंग सिस्टम है जिसे इवेंट स्ट्रीम के उच्च-थ्रूपुट, दोष-सहिष्णु प्रसंस्करण के लिए डिज़ाइन किया गया है। एक शोध पत्र के रूप में काफ्का का प्रकाशन और अपाचे प्रोजेक्ट के रूप में इसका ओपन-सोर्स रिलीज़ ने इसे अत्यधिक स्केलेबल और दोष-सहिष्णु वास्तविक समय डेटा प्रसंस्करण और इवेंट-संचालित आर्किटेक्चर के लिए एक मानक मैसेजिंग सिस्टम के रूप में स्थापित किया।
काफ़्का ने एक अत्यधिक स्केलेबल और दोष-सहिष्णु मैसेजिंग सिस्टम पेश किया, जिसे वास्तविक समय में बड़ी मात्रा में डेटा स्ट्रीम को संभालने के लिए डिज़ाइन किया गया था। काफ़्का लैम्बडा आर्किटेक्चर के विकास को सक्षम करने में काफी प्रभावशाली था, जो कम विलंबता और उच्च थ्रूपुट के साथ बड़ी मात्रा में डेटा को संभालने के लिए बैच प्रोसेसिंग और स्ट्रीम प्रोसेसिंग को जोड़ता है।
यह पेपर अपाचे स्पार्क में कोर एब्स्ट्रैक्शन, रेसिलिएंट डिस्ट्रिब्यूटेड डेटासेट (RDD) का परिचय देता है, जो वितरित क्लस्टर में दोष-सहिष्णु, इन-मेमोरी डेटा प्रोसेसिंग को सक्षम बनाता है। स्पार्क का इन-मेमोरी निष्पादन इंजन मैपरेड्यूस (जिसमें डिस्क-आधारित निष्पादन मॉडल है) की तुलना में काफी तेज़ प्रदर्शन प्रदान करता है, विशेष रूप से पुनरावृत्त एल्गोरिदम, मशीन लर्निंग और इंटरैक्टिव एनालिटिक्स के लिए।
ये पेपर वितरित सिस्टम में कई तरह के विषयों को कवर करते हैं, जिसमें स्टोरेज सिस्टम, सर्वसम्मति एल्गोरिदम, दोष सहिष्णुता और स्केलेबिलिटी शामिल हैं। इन्हें पढ़ने से वितरित सिस्टम के निर्माण और प्रबंधन के सिद्धांतों और प्रथाओं में एक ठोस आधार मिलेगा।
यदि आप वितरित प्रणालियों में अपनी यात्रा शुरू कर रहे हैं और अधिक सीखना चाहते हैं, या आप पहले से ही एक विशेषज्ञ हैं और बस अपनी बुनियादी बातों को ताज़ा करना चाहते हैं, तो वितरित प्रणालियों पर इन आधारभूत पत्रों को पढ़ने से बेहतर कोई तरीका नहीं है।