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

From Vigyanwiki
इंटरनेट के माध्यम से सर्वर के साथ संचार करने वाले क्लाइंट का कंप्यूटर नेटवर्क आरेख

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

क्लाइंट-सर्वर मॉडल का उपयोग करने वाले कंप्यूटर अनुप्रयोगों के उदाहरण ईमेल, नेटवर्क प्रिंटिंग और वर्ल्ड वाइड वेब हैं।

क्लाइंट और सर्वर भूमिका

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

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

क्लाइंट और सर्वर संचार

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

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

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

उदाहरण

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

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

यह उदाहरण क्लाइंट-सर्वर मॉडल पर प्रयुक्त डिज़ाइन क्रम को दर्शाता है।

प्रारंभिक इतिहास

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

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

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

क्लाइंट-होस्ट और सर्वर-होस्ट

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

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

केंद्रीकृत कंप्यूटिंग

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

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

पीयर-टू-पीयर आर्किटेक्चर के साथ तुलना

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

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

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

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

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

यह भी देखें

टिप्पणियाँ

  1. "वितरित अनुप्रयोग वास्तुकला" (PDF). Sun Microsystem. Archived from the original (PDF) on 6 April 2011. Retrieved 2009-06-16.
  2. The X Window System is one example.
  3. Benatallah, B.; Casati, F.; Toumani, F. (2004). "Web service conversation modeling: A cornerstone for e-business automation". IEEE Internet Computing. 8: 46–54. doi:10.1109/MIC.2004.1260703. S2CID 8121624.
  4. Dustdar, S.; Schreiner, W. (2005). "वेब सेवाओं की संरचना पर एक सर्वेक्षण" (PDF). International Journal of Web and Grid Services. 1: 1. CiteSeerX 10.1.1.139.4827. doi:10.1504/IJWGS.2005.007545.
  5. 5.0 5.1 Rulifson, Jeff (June 1969). की. IETF. doi:10.17487/RFC0005. RFC 5. Retrieved 30 November 2013.
  6. Shapiro, Elmer B. (March 1969). नेटवर्क समय सारिणी. IETF. doi:10.17487/RFC0004. RFC 4. Retrieved 30 November 2013.
  7. Sturgis, Howard E.; Mitchell, James George; Israel, Jay E. (1978). "वितरित फ़ाइल सिस्टम में फ़ंक्शन से डेटा को अलग करना". Xerox PARC.
  8. Harper, Douglas. "server". Online Etymology Dictionary. Retrieved 30 November 2013.
  9. "वितरित फ़ाइल सिस्टम में फ़ंक्शन से डेटा को अलग करना". GetInfo. German National Library of Science and Technology. Archived from the original on 2 December 2013. Retrieved 29 November 2013.
  10. 10.0 10.1 Nieh, Jason; Yang, S. Jae; Novik, Naomi (2000). "थिन-क्लाइंट कंप्यूटिंग आर्किटेक्चर की तुलना". Academic Commons (in English). doi:10.7916/D8Z329VF. Retrieved 28 November 2018.
  11. d'Amore, M. J.; Oberst, D. J. (1983). "Microcomputers and mainframes". Proceedings of the 11th annual ACM SIGUCCS conference on User services - SIGUCCS '83. p. 7. doi:10.1145/800041.801417. ISBN 978-0897911160. S2CID 14248076.
  12. Tolia, Niraj; Andersen, David G.; Satyanarayanan, M. (March 2006). "पतले ग्राहकों पर इंटरैक्टिव उपयोगकर्ता अनुभव की मात्रा निर्धारित करना" (PDF). Computer. IEEE Computer Society. 39 (3): 46–52. doi:10.1109/mc.2006.101. S2CID 8399655.
  13. Otey, Michael (22 March 2011). "Is the Cloud Really Just the Return of Mainframe Computing?". SQL Server Pro. Penton Media. Archived from the original on 3 December 2013. Retrieved 1 December 2013.
  14. Barros, A. P.; Dumas, M. (2006). "वेब सेवा पारिस्थितिकी तंत्र का उदय". IT Professional. 8 (5): 31. doi:10.1109/MITP.2006.123. S2CID 206469224.
  15. Cardellini, V.; Colajanni, M.; Yu, P.S. (1999). "वेब-सर्वर सिस्टम पर गतिशील लोड संतुलन". IEEE Internet Computing. Institute of Electrical and Electronics Engineers (IEEE). 3 (3): 28–39. doi:10.1109/4236.769420. ISSN 1089-7801.
  16. "What Is Load Balancing? How Load Balancers Work". NGINX. June 1, 2014. Retrieved January 21, 2020.
  17. Varma, Vasudeva (2009). "1: Software Architecture Primer". Software Architecture: A Case Based Approach. Delhi: Pearson Education India. p. 29. ISBN 9788131707494. Retrieved 2017-07-04. Distributed Peer-to-Peer Systems [...] This is a generic style of which popular styles are the client–server and master–slave styles.
 [Category:Network architectu