📘 CodingMarble Learn

वितरित प्रणालियाँ: नेटवर्क में काम और डेटा बाँटना

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

🎬 कदम-दर-कदम कहानी

  1. फ़ोन (क्लाइंट) एक बड़े कंप्यूटर, सर्वर, से पेज और डेटा माँगते हैं। सर्वर हर माँग का जवाब देता है। उपयोगकर्ता कम: इंतज़ार नहीं।
  2. उपयोगकर्ता बहुत हैं! एक सर्वर हर सेकंड कुछ ही माँगों का जवाब दे पाता है, बाक़ी कतार में रुकते हैं (पीले ब्लॉक)।
  3. काम बाँटो: तीन सर्वर और एक ट्रैफ़िक मैनेजर (लोड बैलेंसर)। वह हर माँग सबसे कम व्यस्त सर्वर को देता है, इसलिए हर कतार छोटी रहती है।
  4. हर सर्वर के पास डेटा की एक नकल है (नीली डिस्क)। एक सर्वर ख़राब हो जाए, बाक़ी जवाब देते रहते हैं। यही प्रतिकृति (replication) है।
  5. दूसरा तरीक़ा: कोई मालिक कंप्यूटर नहीं। साथी (peers) एक-दूसरे से फ़ाइल के टुकड़े बदलते हैं, जब तक सबके पास पूरा न हो।
  6. आपकी बारी: माँगें और सर्वर बदलो, और एक सर्वर तोड़ो। कतार और इंतज़ार का समय देखो।

टिप: 3D दृश्य को घुमाने के लिए खींचें। ज़ूम के लिए दो उंगलियाँ इस्तेमाल करें।

🤔 आम शंकाएँ और उनके जवाब

सर्वर असल में क्या है?

सर्वर बस एक कंप्यूटर (या प्रोग्राम) है जो माँगों का इंतज़ार करके जवाब देता है। चरण 1 के बड़े नीले डिब्बे सर्वर हैं।

सर्वर पर कतार क्यों बनती है?

माँगें सर्वर के जवाब देने से तेज़ आती हैं (चरण 2 में प्रति सेकंड 5 आती हैं और लगभग 1 का जवाब मिलता है), इसलिए बाक़ी रुकती हैं। पीले ब्लॉक जमा होते देखो।

क्या लोड बैलेंसर ख़ुद काम करता है?

नहीं। वह सिर्फ़ चुनता है कि हर माँग किस सर्वर को जाए। असली काम सर्वर करते हैं, जैसा चरण 3 में दिखता है।

सर्वर ख़राब हो जाए तो क्या डेटा खो जाता है?

नहीं, अगर दूसरे सर्वरों पर प्रतियाँ हैं (नीली डिस्क)। इसीलिए प्रतिकृति इस्तेमाल करते हैं। चरण 4 में ख़राब (धूसर) सर्वर देखो।

केंद्रीय सर्वर के बिना नेटवर्क कैसे चलता है?

हर पीयर के पास कुछ टुकड़े हैं और वह उन्हें बाँटता है। सब मिलकर पूरी फ़ाइल रखते हैं। चरण 5 में टुकड़े तब तक चलते हैं जब तक सब पूरे न हो जाएँ।

क्या ज़्यादा सर्वर हमेशा बेहतर हैं?

नहीं। ज़्यादा सर्वर महँगे हैं और प्रतियों को एक-सा रखना कठिन होता है। चरण 6 की स्लाइडरों से देखो कि दिए गए लोड के लिए सचमुच कितने चाहिए।

वितरित प्रणाली क्या है?

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

क्लाइंट-सर्वर का विचार

सबसे सरल बँटा हुआ ढाँचा क्लाइंट-सर्वर है। क्लाइंट (आपका फ़ोन या लैपटॉप) कुछ माँगता है। सर्वर वह कंप्यूटर है जो माँगों का इंतज़ार करता है और जवाब देता है: वेब पेज, ईमेल या फ़ाइल भेजता है। पेज परोसने का काम सर्वर करता है, उसे दिखाने का काम क्लाइंट। वेब ब्राउज़िंग, ईमेल और ऑनलाइन ख़रीदारी ऐसे ही चलते हैं।

एक सर्वर की दिक़्क़त

सर्वर एक सेकंड में सीमित माँगों का ही जवाब दे सकता है। ज़्यादा आएँ तो वे कतार (queue) में रुकती हैं और सबको देर लगती है। अकेला सर्वर ख़राब हो जाए तो पूरी सेवा रुक जाती है। इसे विफलता का एकल बिंदु (single point of failure) कहते हैं।

काम बाँटना: कई सर्वर और लोड बैलेंसर

ज़्यादा उपयोगकर्ताओं के लिए सर्वर बढ़ाते हैं। अब तय करना है कि हर माँग किस सर्वर को जाए। लोड बैलेंसर एक ट्रैफ़िक मैनेजर है: वह हर माँग लेकर उसे ऐसे सर्वर को भेजता है जो बहुत व्यस्त न हो। आम तरीक़े: बारी-बारी से (round robin) या सबसे छोटी कतार वाला सर्वर।

इससे मिलता है:

लोड बैलेंसर देखता रहता है कि कौन-से सर्वर चालू हैं। ख़राब सर्वर छोड़ दिया जाता है, इसलिए उपयोगकर्ता वहाँ नहीं भेजे जाते।

डेटा बाँटना: प्रतियाँ और टुकड़े

प्रतिकृति (replication): नकल रखना

प्रतिकृति यानी एक ही डेटा की प्रतियाँ कई मशीनों पर रखना, शायद अलग शहरों में। फ़ायदे: एक मशीन ख़राब हो तो भी सेवा चलती है (दोष-सहिष्णुता, fault tolerance), और उपयोगकर्ता पास की प्रति से पढ़ सकता है, जो तेज़ है (कम विलंबता, latency)।

विभाजन (partitioning): टुकड़े रखना

अगर डेटा एक मशीन के लिए बहुत बड़ा है तो उसे टुकड़ों में काटते हैं (जैसे नाम A-F, G-M ...) और हर टुकड़ा अलग मशीन पर रखते हैं। इसे अक्सर शार्डिंग (sharding) कहते हैं। हर मशीन पर कम डेटा और कम माँगें होती हैं।

क़ीमत: प्रतियों को एक-सा रखना

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

पीयर-टू-पीयर और ये विचार कहाँ मिलते हैं

पीयर-टू-पीयर (P2P)

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

रोज़मर्रा के उदाहरण

मुख्य सूत्र और परिभाषाएँ

हल किए गए उदाहरण

1. एक सर्वर 1.2 माँगें प्रति सेकंड संभालता है। हर सेकंड 6 माँगें आती हैं। 10 सेकंड बाद कितनी माँगें इंतज़ार में होंगी?

इंतज़ार हर सेकंड 6 − 1.2 = 4.8 माँगें बढ़ता है। 10 सेकंड में: 4.8 × 10 = 48 माँगें इंतज़ार में।

2. तीन एक-जैसे सर्वर हर एक 1.2 माँगें प्रति सेकंड संभालते हैं। कुल क्षमता कितनी है? अगर प्रति सेकंड 3 माँगें आएँ तो वे कितने व्यस्त होंगे?

क्षमता = 3 × 1.2 = 3.6 माँगें/से। व्यस्तता = 3 ÷ 3.6 ≈ 0.83, यानी लगभग 83%। वे चल सकते हैं, कतारें छोटी रहेंगी।

3. हर सर्वर 90% समय चालू रहता है, स्वतंत्र रूप से। एक सर्वर 10% समय बंद रहता है। 3 सर्वरों पर डेटा की 3 प्रतियाँ हों तो कम से कम एक कितने समय चालू होगा?

तीनों एक साथ बंद: 0.1 × 0.1 × 0.1 = 0.001 (0.1%)। इसलिए कम से कम एक चालू: 1 − 0.001 = 0.999, यानी 99.9% समय। अकेला सर्वर सिर्फ़ 90% देता था।

4. 10 लाख ग्राहक-रिकॉर्ड की तालिका 4 सर्वरों में बराबर बाँटी गई (शार्डिंग)। हर सर्वर पर कितने रिकॉर्ड? एक ग्राहक खोजने पर क्या होता है?

10,00,000 ÷ 4 = 2,50,000 रिकॉर्ड प्रति सर्वर। खोज सिर्फ़ उस एक सर्वर तक जाती है जिसके पास वह ग्राहक है, बाक़ी तीन दूसरे काम के लिए ख़ाली रहते हैं।

5. 600 MB की फ़ाइल एक सर्वर पर है जो 8 MB/s भेजता है। डाउनलोड में कितना समय? अब 4 पीयर हर एक 8 MB/s एक साथ भेजें, तो कितना समय?

एक सर्वर: 600 ÷ 8 = 75 से। चार पीयर: कुल चाल 4 × 8 = 32 MB/s, इसलिए 600 ÷ 32 = 18.75 से, लगभग 19 से।

6. फ़ाइबर में संकेत लगभग 2,00,000 किमी/से चलता है। उपयोगकर्ता मुख्य सर्वर से 6000 किमी और एक प्रति से 300 किमी दूर है। आने-जाने का समय तुलना करो।

दूर सर्वर: 12 000 किमी ÷ 2,00,000 किमी/से = 0.06 से = 60 मि.से। पास की प्रति: 600 किमी ÷ 2,00,000 = 0.003 से = 3 मि.से। पास की रेप्लिका 20 गुना तेज़ है (सिर्फ़ यात्रा-समय में)।

आम गलतियाँ

अभ्यास क्विज़

1. क्लाइंट-सर्वर में डेटा कौन माँगता है?
2. लोड बैलेंसर क्या करता है?
3. एक ही डेटा की प्रतियाँ कई मशीनों पर रखना कहलाता है:
4. विफलता का एकल बिंदु यानी:
5. पीयर-टू-पीयर में हर कंप्यूटर होता है:

अभ्यास: खुद जवाब दो

अपना जवाब लिखो या चुनो, फिर जाँचें दबाओ। अटको तो संकेत देखो; जवाब देने के बाद पूरा हल दिखेगा।

अक्सर पूछे जाने वाले प्रश्न

वितरित प्रणाली सरल शब्दों में क्या है?

नेटवर्क से जुड़े कई कंप्यूटर जो काम और डेटा बाँटते हैं और उपयोगकर्ता के लिए एक सेवा की तरह दिखते हैं।

क्लाइंट-सर्वर और पीयर-टू-पीयर में क्या फ़र्क़ है?

क्लाइंट-सर्वर में कुछ कंप्यूटर (सर्वर) सिर्फ़ परोसते हैं और बाक़ी (क्लाइंट) सिर्फ़ माँगते हैं। पीयर-टू-पीयर में हर कंप्यूटर दोनों करता है और कोई केंद्रीय मालिक नहीं।

बड़ी वेबसाइटें कई सर्वर क्यों इस्तेमाल करती हैं?

एक साथ ज़्यादा उपयोगकर्ताओं को जवाब देने के लिए, मशीन ख़राब होने पर भी चलते रहने के लिए, और डेटा उपयोगकर्ताओं के पास रखने के लिए।

यह कहाँ पढ़ाया जाता है

नीदरलैंडHAVO 5 (eindexamenjaar)Elective theme: Networks
नीदरलैंडVWO 6 (eindexamenjaar)Elective theme: Networks

पहले यह पढ़ें

आगे पढ़ें

इससे जुड़े पाठ

सभी कंप्यूटर विज्ञान पाठ