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