क्लाइंट-सर्वर मॉडल

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

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

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

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

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

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

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

यह उदाहरण क्लाइंट-सर्वर मॉडल पर लागू डिज़ाइन पैटर्न को दर्शाता है: चिंताओं का पृथक्करण।

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

1960 और 1970 के दशक में क्लाइंट-सर्वर मॉडल तैयार करते समय, ARPANET ( स्टैनफोर्ड अनुसंधान संस्थान में) बनाने वाले कंप्यूटर वैज्ञानिकों ने सर्वर-होस्ट (या सर्विंग होस्ट) और यूजर-होस्ट (या यूजिंग-होस्ट) शब्दों का इस्तेमाल किया, और ये दिखाई देते हैं प्रारंभिक दस्तावेज़ RFC 5 और आरएफसी 4. यह प्रयोग 1970 के दशक के मध्य में ज़ेरॉक्स PARC में जारी रखा गया था।

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

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

क्लाइंट शब्द का प्रारंभिक उपयोग डिस्ट्रीब्यूटेड फ़ाइल सिस्टम में फ़ंक्शन से डेटा को अलग करने में होता है, जो ज़ेरॉक्स PARC कंप्यूटर वैज्ञानिकों हॉवर्ड स्टर्गिस, जेम्स मिशेल और जे इज़राइल द्वारा 1978 का पेपर है। लेखक पाठकों के लिए शब्द को परिभाषित करने में सावधानी बरतते हैं, और समझाते हैं कि वे इसका उपयोग उपयोगकर्ता और उपयोगकर्ता के नेटवर्क नोड (क्लाइंट) के बीच अंतर करने के लिए करते हैं। 1992 तक सर्वर शब्द आम बोलचाल में आ गया था।

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

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

पीयर-टू-पीयर आर्किटेक्चर के साथ तुलना
क्लाइंट-सर्वर मॉडल के अलावा, वितरित कंप्यूटिंग एप्लिकेशन अक्सर पीयर-टू-पीयर (पी2पी) एप्लिकेशन आर्किटेक्चर का उपयोग करते हैं।

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

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

क्लाइंट-सर्वर और मास्टर/स्लेव (प्रौद्योगिकी)|मास्टर-स्लेव दोनों को वितरित पीयर-टू-पीयर सिस्टम की उप-श्रेणियाँ माना जाता है।

यह भी देखें
• Front and back ends

• Modular programming

• Observer pattern

• Publish–subscribe pattern

• Pull technology

• Push technology

• Remote procedure call

• Server change number

टिप्पणियाँ
[Category:Network architectu