एप्लिकेशन की उपलब्धता को कभी भी उतनी गंभीरता से नहीं लिया गया जितना आज है जब हम केवल संचार से अधिक के लिए ऐप्स का उपयोग करते हैं, चाहे वह व्यक्तिगत हो या पेशेवर और जब ऐप्स व्यवसाय हो।
ऐसे एप्लिकेशन जो लगातार ऑनलाइन नहीं होते हैं, या अस्थिर होते हैं, अपने उपयोगकर्ता और प्रासंगिकता खो देते हैं, अंततः अप्रचलित हो जाते हैं। यह एक फ्लैश में हुआ। क्योंकि इंटरनेट कभी नहीं सोता है और सप्ताह में 24 दिन 7 घंटे काम करता है, यही विचार ऐप्स पर भी लागू होना चाहिए।
ऐसा करने और एप्लिकेशन उपलब्धता सुनिश्चित करने के लिए मापनीयता महत्वपूर्ण है। उपलब्धता सुनिश्चित करने में लोड संतुलन सबसे महत्वपूर्ण घटकों में से एक है। बहुत से लोग अभी भी मानते हैं कि लोड संतुलन को एक साधारण स्क्रिप्ट के साथ पूरा किया जा सकता है।
बहरहाल, मामला यह नहीं। यह अकेले ही पूरी दुनिया में कार्यक्रमों तक पहुंच प्रदान करता है - किसी भी समय और किसी भी डिवाइस से।
इस पोस्ट में, हम लोड बैलेंसिंग, इसके एल्गोरिदम, और अन्य बातों के अलावा, यह माइक्रोसर्विसेज से कैसे संबंधित है, इस पर गहराई से विचार करेंगे। चलो शुरू करें!
लोड बैलेंसिंग क्या है?
जैसे-जैसे वेबसाइट या व्यावसायिक एप्लिकेशन की मांग बढ़ती है, एक ही सर्वर जल्द ही पूरे लोड को संभालने में असमर्थ हो जाएगा। मांग को पूरा करने के लिए संगठन कई सर्वरों पर कार्यभार वितरित करते हैं। "लोड बैलेंसिंग" के रूप में जानी जाने वाली यह विधि एकल सर्वर को अतिभारित होने से बचाती है, जिससे यह धीमा हो सकता है, अनुरोध छोड़ सकता है, या यहां तक कि क्रैश भी हो सकता है।
संसाधन अधिभार के कारण विफलता से बचने के लिए लोड संतुलन समान रूप से नेटवर्क ट्रैफ़िक को वितरित करता है। एप्लिकेशन, वेबसाइट, डेटाबेस और अन्य कंप्यूटर संसाधन बेहतर प्रदर्शन करते हैं और इस पद्धति का उपयोग करके अधिक उपलब्ध हैं। यह उपयोगकर्ता अनुरोधों के उचित और समय पर प्रसंस्करण में भी सहायता करता है।
उपयोगकर्ता के दृष्टिकोण से, लोड संतुलन क्लाइंट और सर्वर के संग्रह के बीच एक अदृश्य मध्यस्थ के रूप में कार्य करता है, यह सुनिश्चित करता है कि कनेक्शन अनुरोध नहीं छोड़ा गया है। यदि लोड संतुलन के बिना मांग बहुत अधिक हो जाती है, तो एप्लिकेशन, वेबसाइट, डेटाबेस और ऑनलाइन सेवाओं की सबसे अधिक संभावना है।
एक ही समय में एक ही उच्च-ट्रैफ़िक वेबसाइट पर सैकड़ों हज़ारों उपयोगकर्ता अनुरोध भेजे जा सकते हैं। अनुरोधित सामग्री के साथ वेब पेजों को सही ढंग से पॉप्युलेट करने के लिए एकाधिक सर्वरों की आवश्यकता होती है, जैसे टेक्स्ट, इमेज, वीडियो और ऑडियो स्ट्रीमिंग। लोड संतुलन आमतौर पर उच्च-ट्रैफ़िक वेबसाइट सर्वर फ़ार्म, साथ ही DNS सर्वर, डेटाबेस और फ़ाइल स्थानांतरण प्रोटोकॉल (FTP) साइटों में नियोजित होता है।
यदि एक सर्वर पर अधिक भार है, तो यह खराब कार्य कर सकता है या क्रैश भी हो सकता है। लोड बैलेंसर सर्वर के संग्रह के बीच उपयोगकर्ता अनुरोधों को समान रूप से वितरित करके डाउनटाइम की संभावना को कम करते हैं। यदि समूह में सर्वरों में से एक विफल हो जाता है, तो ट्रैफ़िक को समूह के अन्य सर्वरों पर भेज दिया जाता है। लोड बैलेंसर स्वचालित रूप से ट्रैफ़िक वितरण प्रक्रिया में नए सर्वर जोड़ता है जब उन्हें सर्वर पूल में जोड़ा जाता है।
भार संतुलन कैसे काम करता है?
यह निम्नानुसार काम करता है:
- जब कोई क्लाइंट अनुरोध प्राप्त करता है, जैसे ब्राउज़र या एप्लिकेशन के माध्यम से, तो वह सर्वर से जुड़ने का प्रयास करता है।
- जब एक लोड बैलेंसर को एक अनुरोध प्राप्त होता है, तो यह एल्गोरिथम (या फार्म) द्वारा स्थापित पैटर्न के आधार पर सर्वर समूह में सर्वरों में से एक को रूट करता है।
- सर्वर कनेक्शन अनुरोध प्राप्त करता है और क्लाइंट को लोड बैलेंसर के माध्यम से जवाब देता है।
- जब लोड बैलेंसर को प्रतिक्रिया मिलती है, तो यह क्लाइंट के आईपी पते से चयनित सर्वर के आईपी पते से मेल खाता है। उसके बाद, उत्तर पैकेट के साथ प्रेषित किया जाता है।
- एसएसएल ऑफलोड सुरक्षा सॉकेट लेयर एन्क्रिप्शन प्रोटोकॉल का उपयोग करके डेटा को डिक्रिप्ट करने की प्रक्रिया है ताकि सर्वर को ऐसा न करना पड़े।
- सत्र समाप्त होने तक प्रक्रिया दोहराई जाती है।
लोड संतुलन के तरीके
यह चुनने के लिए कि सर्वर फ़ार्म में कौन सा सर्वर अगला अनुरोध प्राप्त करता है, प्रत्येक लोड संतुलन तकनीक मापदंड के एक सेट का उपयोग करती है। भार संतुलन के लिए पाँच विशिष्ट दृष्टिकोण हैं:
- आवेदनपत्र: यह डिफ़ॉल्ट दृष्टिकोण है, और यह ठीक वैसे ही काम करता है जैसे यह लगता है। लोड बैलेंसर एक घूर्णन पैटर्न में अनुरोधों को वितरित करता है, समूह में पहले सर्वर से शुरू होता है और नीचे तक आगे बढ़ता है, जहां यह फिर से कॉल करने की प्रतीक्षा करता है। यह विधि सुनिश्चित करती है कि प्रत्येक सर्वर लगभग समान संख्या में कनेक्शन संभाल रहा है।
- भारित राउंड रॉबिन: यह दृष्टिकोण प्रत्येक सर्वर को एक भार (या वरीयता) प्रदान करता है जो आम तौर पर उसकी क्षमता के समानुपाती होता है। सर्वर जितना अधिक अनुरोध प्राप्त करता है, उतना ही अधिक वजन होता है। उदाहरण के लिए, दो के वजन वाले सर्वर को एक के वजन वाले सर्वर के रूप में दो बार कई अनुरोध प्राप्त होते हैं।
- चिपचिपा सत्र: यह दृष्टिकोण, जिसे सत्र दृढ़ता के रूप में भी जाना जाता है, सत्र की अवधि के लिए कुछ क्लाइंट और सर्वर को जोड़ता है। लिंक स्थापित करने के लिए, लोड बैलेंसर उपयोगकर्ता विशेषता की पहचान करने के लिए कुकी या उपयोगकर्ता के आईपी पते का उपयोग करता है। एक बार कनेक्शन स्थापित हो जाने के बाद, उपयोगकर्ता के अनुरोध सत्र समाप्त होने तक उसी सर्वर पर निर्देशित किए जाते हैं। यह उपयोगकर्ता अनुभव में सुधार करते हुए नेटवर्क संसाधनों का अनुकूलन करता है।
- कम कनेक्शन: यह रणनीति मानती है कि सभी अनुरोधों के परिणामस्वरूप समान सर्वर बोझ होता है। नतीजतन, सबसे कम अनुरोधों वाले सर्वर को अगला अनुरोध प्राप्त होता है।
- आईपी हैश: यह एल्गोरिदम क्लाइंट और सर्वर के स्रोत और गंतव्य आईपी पते के आधार पर एक अद्वितीय हैश कुंजी उत्पन्न करता है। कुंजी का उपयोग अनुरोध को रूट करने के लिए किया जाता है और उसी सर्वर के साथ खोए हुए कनेक्शन को फिर से शुरू करने की अनुमति देता है।
हार्डवेयर बनाम। सॉफ्टवेयर लोड बैलेंसर्स
हार्डवेयर लोड बैलेंसर
भौतिक हार्डवेयर, जैसे कि एक उपकरण, हार्डवेयर लोड बैलेंसर बनाता है। ये मौजूदा कनेक्शनों की संख्या, प्रोसेसर के उपयोग और सर्वर के प्रदर्शन जैसे कारकों के आधार पर सर्वर पर ट्रैफ़िक को रूट करते हैं। हार्डवेयर लोड बैलेंसर्स के पास मालिकाना फर्मवेयर होता है जिसे नए संस्करण और सुरक्षा सुधार उपलब्ध होने पर बनाए रखना और अद्यतन करना होता है।
हार्डवेयर लोड बैलेंसर अक्सर उच्च प्रदर्शन और नियंत्रण प्रदान करते हैं, साथ ही साथ केर्बरोस प्रमाणीकरण और एसएसएल हार्डवेयर त्वरण जैसी क्षमताओं की एक विस्तृत श्रृंखला प्रदान करते हैं, लेकिन उन्हें प्रबंधन और रखरखाव विशेषज्ञता के कुछ स्तर की आवश्यकता होती है। क्योंकि हार्डवेयर लोड बैलेंसर्स सॉफ्टवेयर लोड बैलेंसर्स की तुलना में कम लचीले और स्केलेबल होते हैं, हार्डवेयर लोड बैलेंसर्स को ओवर-प्रोविजन करने की प्रवृत्ति होती है।
सॉफ्टवेयर लोड बैलेंसर
सॉफ़्टवेयर लोड बैलेंसर आमतौर पर अपने हार्डवेयर समकक्षों की तुलना में स्थापित करना आसान होता है। वे अधिक लागत प्रभावी और अनुकूलनीय भी हैं, और वे सॉफ्टवेयर विकास वातावरण के साथ अच्छी तरह से काम करते हैं। सॉफ़्टवेयर विधि आपको लोड बैलेंसर को आपके पर्यावरण की सटीक आवश्यकताओं के लिए अनुकूलित करने की अनुमति देती है। लोड बैलेंसर को स्थापित करने में लगने वाले अतिरिक्त समय की कीमत पर बढ़ा हुआ लचीलापन आ सकता है।
सॉफ़्टवेयर बैलेंसर आपको हार्डवेयर वाले की तुलना में संशोधन और अपडेट करने के लिए अधिक लचीलापन प्रदान करते हैं, जिसमें अधिक क्लोज-बॉक्स दृष्टिकोण होता है। पहले से पैक की गई वर्चुअल मशीन को सॉफ्टवेयर लोड बैलेंसर (VMs) के रूप में इस्तेमाल किया जा सकता है। वर्चुअल मशीन आपको कुछ सेटिंग समय बचाएगी, लेकिन हो सकता है कि उनके हार्डवेयर समकक्षों में सभी कार्यक्षमता उपलब्ध न हो।
सरल भार संतुलन कार्यान्वयन
हम स्प्रिंग क्लाउड लाइब्रेरी का उपयोग करेंगे ऐप्स बनाएं जो लोड-संतुलित तरीके से अन्य ऐप्स से कनेक्ट होते हैं। दूरस्थ सेवा अनुरोधों को संसाधित करते समय, हम अपनी पसंद की किसी भी तकनीक का उपयोग करके आसानी से लोड संतुलन का निर्माण कर सकते हैं। एक उदाहरण के रूप में निम्नलिखित कोड पर विचार करें। हम एक बेसिक सर्वर एप्लिकेशन के साथ शुरुआत करेंगे।
सर्वर में केवल एक HTTP समापन बिंदु होगा और इसे कई उदाहरणों में संचालित किया जाएगा। फिर हम एक क्लाइंट ऐप बनाएंगे जो कई सर्वर इंस्टेंस में अनुरोधों को वितरित करने के लिए लोड बैलेंसर का उपयोग करता है।
सर्वर
हम एक बुनियादी से शुरू करते हैं वसंत का बूट हमारे उदाहरण सर्वर के लिए आवेदन:
शुरू करने के लिए, हम एक अनुकूलन योग्य चर को इंजेक्षन करते हैं जिसे instance_ID कहा जाता है। यह हमें काम कर रहे कई उदाहरणों के बीच अंतर करने में मदद करता है। उसके बाद, हम एक एकल HTTP GET एंडपॉइंट बनाते हैं जो एक संदेश और इंस्टेंस आईडी देता है।
आईडी 1 के साथ डिफ़ॉल्ट इंस्टेंस पोर्ट 8080 पर काम करेगा। दूसरा इंस्टेंस लॉन्च करने के लिए हमें केवल कुछ प्रोग्राम पैरामीटर जोड़ने की जरूरत है:
ग्राहक
आइए अब क्लाइंट कोड पर एक नजर डालते हैं। यह वह जगह है जहां लोड बैलेंसर आता है, तो चलिए इसे अपने आवेदन में शामिल करके शुरू करते हैं:
उसके बाद, हम ServiceInstanceListSupplier का कार्यान्वयन विकसित करते हैं। लोड बैलेंसर में यह सबसे महत्वपूर्ण इंटरफेस में से एक है। यह निर्दिष्ट करता है कि हम सुलभ सेवा उदाहरणों का पता कैसे लगाते हैं।
हम अपने नमूना एप्लिकेशन में अपने उदाहरण सर्वर के दो अलग-अलग उदाहरणों को हार्ड-कोड करेंगे। वे एक ही सिस्टम पर चलते हैं लेकिन अलग-अलग पोर्ट का उपयोग करते हैं:
अब एक LoadBalancerConfiguration क्लास बनाएं:
इस वर्ग का केवल एक ही उद्देश्य है: यह दूरस्थ अनुरोध करने के लिए लोड-संतुलित वेब क्लाइंट बिल्डर बनाता है। हमारी टिप्पणी सेवा के लिए एक काल्पनिक नाम का प्रयोग करती है।
यह इस तथ्य के कारण है कि हम समय से पहले चल रहे इंस्टेंस के लिए सटीक होस्टनाम और पोर्ट को नहीं जान पाएंगे। नतीजतन, हम एक प्लेसहोल्डर के रूप में एक काल्पनिक नाम का उपयोग करते हैं, और जब यह चल रहे इंस्टेंस का चयन करता है तो फ्रेमवर्क वास्तविक जानकारी को बदल देगा।
इसके बाद, आइए एक कॉन्फ़िगरेशन क्लास बनाते हैं जिसका उपयोग हमारी सेवा इंस्टेंस आपूर्ति को तुरंत चालू करने के लिए किया जाएगा। ध्यान दें कि हम पहले की तरह ही उपनाम का उपयोग करते हैं:
अब हम वास्तविक क्लाइंट एप्लिकेशन बना सकते हैं। आइए पहले से WebClient बीन का उपयोग करके नमूना सर्वर को 10 प्रश्न भेजें:
हम आउटपुट से देख सकते हैं कि हम दो अलग-अलग उदाहरणों के बीच संतुलन लोड कर रहे हैं:
माइक्रोसर्विसेज में लोड बैलेंसिंग
नेटफ्लिक्स और अमेज़ॅन जैसी कई कंपनियों द्वारा माइक्रोसर्विस आर्किटेक्चर का उपयोग व्यावसायिक अनुप्रयोगों को शिथिल रूप से जुड़ी सेवाओं के एक सेट के रूप में विकसित करने के लिए किया जा रहा है। जटिल अनुप्रयोगों के लिए हाइपरस्केल और निरंतर वितरण इस वितरित, शिथिल रूप से जुड़े आर्किटेक्चर में जाने के केवल दो कारण हैं।
इन उद्यमों की टीमों ने पारंपरिक तरीकों की तुलना में तेजी से और कम विफलता दर के साथ ऐप्स का उत्पादन करने के लिए एजाइल और देवओप्स रणनीतियों को लागू किया है। हालांकि, आपको वितरित आर्किटेक्चर की जटिलता और एप्लिकेशन की मांगों, पैमाने की आवश्यकताओं और समय-समय पर बाजार की सीमाओं के बीच संतुलन बनाना होगा।
इतने सालों से, एप्लिकेशन डिलीवरी कंट्रोलर (ADCs) ऑन-प्रिमाइसेस या क्लाउड में होस्ट किए गए कॉर्पोरेट एप्लिकेशन के लिए सेवा-स्तर की आवश्यकताओं को पूरा करने के लिए महत्वपूर्ण रहे हैं। एक माइक्रोसर्विस-आधारित एप्लिकेशन से जुड़े क्लाइंट को उन उदाहरणों के बारे में जानने की आवश्यकता नहीं है जो क्लाइंट और माइक्रोसर्विसेज को स्वतंत्र रूप से विकसित करने के लिए इसे प्रदान कर रहे हैं।
यह ठीक रिवर्स प्रॉक्सी या लोड बैलेंसर द्वारा प्रदान किया गया डिकॉउलिंग है। फिर से, लोड संतुलन यह सुनिश्चित करने का समाधान है कि माइक्रोसर्विसेज मांग, सुरक्षा और उपलब्धता को संभाल सकता है।
जब आप क्षैतिज मापनीयता के लिए पूर्व-पश्चिम परिनियोजन के साथ क्लाइंट और माइक्रोसर्विस-आधारित ऐप्स के बीच पारंपरिक उत्तर-दक्षिण लोड संतुलन को जोड़ते हैं, तो आपको पर्याप्त बढ़ावा मिलता है। इसका उद्देश्य विकास की चपलता का त्याग किए बिना आईटी द्वारा आवश्यक सुरक्षित और विनियमित वातावरण को बनाए रखना है DevOps स्वचालन आवश्यकताओं.
लाभ
लोड संतुलन उच्च-ट्रैफ़िक वेबसाइटों और ऐप्स के लिए संसाधन उपयोग, डेटा वितरण, और प्रतिक्रिया समय में सुधार के साथ-साथ बड़ी संख्या में क्वेरी प्राप्त करने वाले डेटाबेस द्वारा विभिन्न लाभ प्रदान करता है। लोड संतुलन यह सुनिश्चित करता है कि उपयोगकर्ता के अनुरोध उच्च-ट्रैफ़िक परिदृश्यों में जल्दी और सही तरीके से पूरे हों।
वे उपयोगकर्ताओं को सुस्त कार्यक्रमों और संसाधनों से निपटने की परेशानी से बचाते हैं। लोड संतुलन भी डाउनटाइम से बचने और सुरक्षा को सरल बनाने में मदद करता है, जिससे आपकी कंपनी के लिए खोई हुई उत्पादकता और कमाई का जोखिम कम होता है।
- लोड संतुलन इष्टतम दक्षता के लिए यातायात के प्रबंधन के अलावा, सर्वर को जोड़ने और हटाने के लिए लचीलापन प्रदान करता है। चूंकि रखरखाव के दौरान यातायात को अन्य सर्वरों पर भेज दिया जाता है, इसलिए उपयोगकर्ताओं को बाधित किए बिना सर्वर रखरखाव करना भी संभव है।
- लोड संतुलन सर्वर के एक सेट के बीच ट्रैफ़िक को विभाजित करके अंतर्निहित अतिरेक प्रदान करता है। यदि कोई विफल हो जाता है, तो आप तुरंत लोड को अन्य सर्वरों पर भेज सकते हैं, जिससे उपयोगकर्ताओं पर प्रभाव कम से कम हो सकता है।
- यदि किसी एप्लिकेशन या वेबसाइट का उपयोग बढ़ता है, तो बढ़ा हुआ ट्रैफ़िक उसके प्रदर्शन को कम कर सकता है यदि उसे प्रभावी ढंग से नियंत्रित नहीं किया जाता है। लोड संतुलन के साथ, आप सेवा को बाधित किए बिना मांग को पूरा करने के लिए एक वास्तविक या आभासी सर्वर जोड़ सकते हैं। लोड बैलेंसर नए सर्वरों की पहचान करता है क्योंकि वे ऑनलाइन आते हैं और आसानी से उन्हें ऑपरेशन में शामिल करते हैं। एक वेबसाइट को एक अतिभारित सर्वर से एक नए सर्वर पर माइग्रेट करने के लिए यह विधि बेहतर है, जिसमें अक्सर कुछ डाउनटाइम शामिल होता है।
निष्कर्ष
लोड संतुलन समकालीन, दोष-सहिष्णु प्रणालियों का एक महत्वपूर्ण घटक है। हम बस ऐसे ऐप बना सकते हैं जो विभिन्न लोड बैलेंसिंग दृष्टिकोणों का उपयोग करके कई सेवा उदाहरणों के लिए अनुरोध वितरित करते हैं। अनुप्रयोगों को सुरक्षित रूप से प्रदान करने के लिए व्यवसायों को जटिल आईटी प्रणालियों का समर्थन करना चाहिए।
क्रॉस-डोमेन माइक्रोसर्विसेज कॉन्फ़िगरेशन, परिनियोजन और रखरखाव त्रुटि-प्रवण, महंगा और समय लेने वाला हो सकता है। IT को स्वचालन, दृश्यता, विश्लेषण और ऑर्केस्ट्रेशन सर्वोत्तम प्रथाओं और तकनीकों का उपयोग करना चाहिए जो इन माइक्रोसर्विसेज के सेटअप और रखरखाव को आसान बनाने के लिए उनकी चुस्त और DevOps प्रक्रियाओं के अनुकूल हों।
एक जवाब लिखें