स्प्रिंग बूट के साथ माइक्रोसर्विसेज। भाग 1. आरंभ करना

यह माइक्रोसॉर्स्क आर्किटेक्चर की मूल बातें पर लेखों की एक श्रृंखला का पहला हिस्सा है।

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

यह मार्गदर्शिका आपको माइक्रोसॉर्स्क आर्किटेक्चर की मूल बातें सीखने में मदद करेगी। हम स्प्रिंग बूट के साथ बुनियादी माइक्रोसर्विस कार्यान्वयन को भी देखना शुरू करेंगे।

हम ग्राहक पक्ष पर लोड को संतुलित करने के लिए यूरेका (यूरेका नामकरण सर्वर) और रिबन नाम के सर्वर का उपयोग करके एक जोड़ी माइक्रोसर्विस बनाएंगे और उन्हें एक-दूसरे के साथ संचार करेंगे।

यह लेख स्प्रिंग बूट माइक्रोसर्विसेज श्रृंखला का हिस्सा है:


तुम सीख जाओगे


  • एक मोनोलिथ क्या है?
  • माइक्रोसर्विस क्या है?
  • माइक्रोसर्विस के साथ क्या समस्याएं हैं?
  • स्प्रिंग बूट और स्प्रिंग क्लाउड माइक्रोसर्विसेस को कैसे विकसित करना आसान बनाते हैं?
  • रिबन का उपयोग करके क्लाइंट-साइड लोड संतुलन को कैसे लागू किया जाए?
  • नाम सर्वर (यूरेका नामकरण सर्वर) को कैसे लागू किया जाए?
  • एक नाम सर्वर और रिबन के साथ माइक्रोसर्विसेस कैसे कनेक्ट करें?

संसाधन अवलोकन


इस ट्यूटोरियल में, हम उन छात्रों के लिए एक संसाधन बनाएंगे जो उपयुक्त यूआरआई और HTTP विधियों का उपयोग करके तीन सेवाएं प्रदान करते हैं:

  • सभी छात्रों की सूची प्राप्त करें - @GetMapping ("/ students")
  • किसी विशिष्ट छात्र के बारे में जानकारी प्राप्त करें - @GetMapping ("/ students / {id}")
  • छात्र जानकारी हटाएं - @ डिलीट मैपिंग ("/ छात्रों / {आईडी}")
  • एक नया छात्र प्रवेश बनाएँ - @PostMapping ("/ छात्र")
  • अद्यतन छात्र सूचना - @PutMapping ("/ छात्रों / {आईडी}")

सूक्ष्मदर्शी का अवलोकन - बड़ी तस्वीर


लेखों की इस श्रृंखला में, हम दो माइक्रोसेवाएँ बनाएँगे:

  • विदेशी मुद्रा सेवा - संक्षेप में एफएस
  • मुद्रा रूपांतरण सेवा - लघु के लिए सीसीएस

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

विदेशी मुद्रा सेवा


विदेशी मुद्रा सेवा (एफएस, विदेशी मुद्रा सेवा) एक सेवा प्रदाता है। यह विभिन्न मुद्राओं के लिए मुद्रा विनिमय दर प्रदान करता है। मान लेते हैं कि वह विदेशी मुद्रा विनिमय के साथ संचार करता है और मुद्राओं के बीच विनिमय का वर्तमान मूल्य प्रदान करता है। अनुरोध और प्रतिक्रिया का एक उदाहरण नीचे दिखाया गया है:

GET to http://localhost:8000/currency-exchange/from/EUR/to/INR 

 { id: 10002, from: "EUR", to: "INR", conversionMultiple: 75, port: 8000, } 

उपरोक्त अनुरोध की प्रतिक्रिया यूरो से INR विनिमय दर है। रूपांतरणमूल्ट का उत्तर 75 है।
हम बंदरगाह क्षेत्र के बारे में थोड़ी देर बाद बात करेंगे।

मुद्रा रूपांतरण सेवा


मुद्रा रूपांतरण सेवा (CCS) कई मुद्राओं को दूसरी मुद्रा में परिवर्तित कर सकती है। यह वर्तमान मुद्रा विनिमय मूल्यों को प्राप्त करने के लिए विदेशी मुद्रा सेवा का उपयोग करता है। CCS सेवाओं का उपभोक्ता है। अनुरोध और प्रतिक्रिया का एक उदाहरण नीचे दिखाया गया है:

 GET to http://localhost:8100/currency-converter/from/EUR/to/INR/quantity/10000 

 { id: 10002, from: "EUR", to: "INR", conversionMultiple: 75, quantity: 10000, totalCalculatedAmount: 750000, port: 8000, } 

उपरोक्त अनुरोध आपको भारतीय रुपये में 10,000 यूरो के मूल्य का निर्धारण करने की अनुमति देता है।
TotalCalculatedAmount 750,000 INR है। नीचे दिया गया चित्र CCS और FS के बीच के संबंध को दर्शाता है।



यूरेका नामकरण सर्वर और रिबन


लोड के आधार पर, हमारे पास मुद्रा रूपांतरण सेवा और विदेशी मुद्रा सेवा की कई प्रतियां हो सकती हैं।



और प्रत्येक सेवा के लिए उदाहरणों की संख्या समय के साथ बदल सकती है। नीचे दिया गया आंकड़ा एक विशिष्ट उदाहरण दिखाता है जहां विदेशी मुद्रा सेवा के 5 उदाहरण बनाए गए हैं।



उपरोक्त स्थिति में क्या होना चाहिए कि लोड को इन 5 उदाहरणों के बीच समान रूप से वितरित किया जाना चाहिए।



लेखों की इस श्रृंखला में, हम सभी माइक्रोसर्विसेज को पंजीकृत करने के लिए रिबन को लोड संतुलन और यूरेका नाम सर्वर के लिए उपयोग करेंगे।



एक अखंड आवेदन क्या है?


क्या आपने कभी किसी प्रोजेक्ट में काम किया है ...

  • जिसका उत्पादन हर कुछ महीनों में एक बार किया जाता है
  • जिसमें सुविधाओं और क्षमताओं की एक विस्तृत श्रृंखला है।
  • जिसमें 50 से अधिक लोगों की टीम काम करती है
  • जहां डिबगिंग समस्या एक बड़ी समस्या है
  • जहां नई तकनीकों और नई प्रक्रियाओं को पेश करना लगभग असंभव है

ये अखंड अनुप्रयोगों की विशिष्ट विशेषताएं हैं।

अखंड एप्लिकेशन आमतौर पर भारी होते हैं - कोड की 100,000 से अधिक लाइनें। कुछ मामलों में, कोड की एक लाख से अधिक लाइनें भी।

मोनोलिथ की विशेषता निम्नलिखित है:

  • बड़े आवेदन का आकार
  • लंबे समय से जारी साइकिल
  • बड़ी टीमें

विशिष्ट समस्याओं में शामिल हैं:

  • स्केलेबिलिटी के मुद्दे
  • नई तकनीकों को अपनाना
  • नई प्रक्रियाएँ - फुर्तीली?
  • परीक्षणों को स्वचालित करने में कठिनाई
  • वर्तमान विकास प्रथाओं के अनुकूल होना कठिन है
  • किसी परियोजना की तीव्र वृद्धि के अनुकूल होना कठिन है

Mikroservisy


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

हालाँकि, माइक्रोसॉफ़्ट के लिए कोई एकल स्वीकृत परिभाषा नहीं है, फिर भी कई महत्वपूर्ण विशेषताएं हैं:

  • REST - RESTful संसाधनों के आसपास निर्मित। सेवाओं के बीच संचार घटनाओं या HTTP प्रोटोकॉल पर आधारित हो सकता है।
  • छोटे वेल-चयनित डिप्लॉयबल ब्लॉक - सीमित संदर्भ
  • क्लाउड फीचर्स - डायनामिक स्केलिंग

माइक्रोसॉर्स्क आर्किटेक्चर कैसा दिखता है?


यह मोनोलिथ जैसा दिखेगा। सब कुछ के लिए एक app।



यह उसी एप्लिकेशन की तरह दिखेगा जब माइक्रोसिस्ट आर्किटेक्चर का उपयोग करके विकसित हो रहा है।



माइक्रोसवर्क आर्किटेक्चर में कई छोटे, अच्छी तरह से डिज़ाइन किए गए संदेश घटक शामिल हैं।



माइक्रोसर्विसेज के लाभ


फायदे:

  • नई तकनीकों और अनुकूलन प्रक्रियाओं का उपयोग करना आसान हो जाता है। आप नई तकनीकों की कोशिश कर सकते हैं जो नए माइक्रोसर्विसेस के साथ हम बनाएंगे।
  • तेज़ रिलीज़ साइकिल
  • क्लाउड स्केलिंग

माइक्रोसैस आर्किटेक्चर मुद्दे


हालांकि कुछ छोटे घटकों को विकसित करना आसान लग सकता है, लेकिन माइक्रोसेस्टर आर्किटेक्चर से जुड़ी कई अंतर्निहित समस्याएं हैं।

आइए कुछ समस्याओं को देखें:

  • त्वरित सेटअप की आवश्यकता है : आप प्रत्येक माइक्रोसैस सर्विस को स्थापित करने में एक महीना खर्च नहीं कर सकते। आपको जल्दी से माइक्रोसर्विस बनाने में सक्षम होना चाहिए।
  • स्वचालन : चूंकि मोनोलिथ के बजाय कई छोटे घटक होते हैं, इसलिए आपको सब कुछ स्वचालित करने की आवश्यकता होती है - असेंबली, तैनाती, निगरानी आदि।
  • दृश्यता : अब आपके पास परिनियोजन और रखरखाव के लिए कई छोटे घटक हैं। शायद 100 या 1000 घटक। आपको स्वचालित रूप से समस्याओं को ट्रैक करने और पहचानने में सक्षम होना चाहिए। आपको सभी घटकों के आसपास उत्कृष्ट दृश्यता की आवश्यकता है।
  • सीमित संदर्भ : एक microservice की सीमाओं को परिभाषित करना एक आसान काम नहीं है। डोमेन डिजाइन का सीमित संदर्भ एक अच्छा प्रारंभिक बिंदु है। डोमेन की आपकी समझ समय की अवधि में विकसित होती है। आपको यह सुनिश्चित करने की आवश्यकता है कि माइक्रोसैस सर्विस की सीमाएं विकसित हो रही हैं।
  • कॉन्फ़िगरेशन प्रबंधन : आपको विभिन्न वातावरणों में सैकड़ों घटकों के लिए कॉन्फ़िगरेशन बनाए रखने की आवश्यकता है। आपको कॉन्फ़िगरेशन प्रबंधन समाधान की आवश्यकता होगी
  • गतिशील वृद्धि और कमी : माइक्रोसिस्ट्रिस के लाभों को केवल तभी महसूस किया जाएगा जब आपके एप्लिकेशन क्लाउड में आसानी से स्केल कर सकते हैं।
  • कार्ड्स का डेक : यदि कॉल श्रंखला के निचले भाग में स्थित माइक्रोसिरवर्क विफल हो जाता है, तो यह अन्य सभी माइक्रोसर्विसेज को प्रभावित कर सकता है। माइक्रोसर्विस को गलती सहिष्णु होना चाहिए।
  • डिबगिंग : जब एक समस्या उत्पन्न होती है जिसे संबोधित करने की आवश्यकता होती है, तो आपको विभिन्न घटकों में कई सेवाओं की जांच करने की आवश्यकता हो सकती है। डिबगिंग समस्याओं की सुविधा के लिए केंद्रीकृत लॉगिंग और डैशबोर्ड की आवश्यकता होती है।
  • संगति : आपके पास उसी समस्या को हल करने वाले कई प्रकार के उपकरण नहीं हो सकते। जबकि नवाचार को चलाने के लिए महत्वपूर्ण है, सूक्ष्मजीवों को लागू / तैनात / मॉनिटर करने के लिए उपयोग की जाने वाली भाषाओं, प्लेटफार्मों, प्रौद्योगिकियों और उपकरणों के विकेंद्रीकृत प्रबंधन का होना भी महत्वपूर्ण है।

माइक्रोसैस आर्किटेक्चर सॉल्यूशंस


वसंत का बूट


स्प्रिंग बूट आपको तैयार किए गए अनुप्रयोगों को जल्दी से बनाने की अनुमति देता है और निम्नलिखित गैर-कार्यात्मक विशेषताएं प्रदान करता है:

  • एम्बेडेड सर्वर (कंटेनर का उपयोग कर तैनाती में आसानी)
  • मैट्रिक्स की निगरानी
  • स्वास्थ्य की निगरानी
  • बाहरी विन्यास

वसंत का बादल


स्प्रिंग क्लाउड आपके माइक्रोसर्विसेज के लिए क्लाउड एक्टिवेशन सॉल्यूशन प्रदान करता है। यह नेटफ्लिक्स (नेटफ्लिक्स ओएसएस) द्वारा बनाए गए कुछ क्लाउड समाधानों का उपयोग करता है और बनाता है।

महत्वपूर्ण स्प्रिंग क्लाउड मॉड्यूल


  • गतिशील ऊपर और नीचे स्केलिंग। के संयोजन का उपयोग करना:

- यूरेका नाम सर्वर
- रिबन (क्लाइंट की तरफ लोड संतुलन)
- Feign (REST ग्राहकों के विकास को सरल बनाता है)

  • दृश्यता और निगरानी:

- वितरित जिपक ट्रेस
- नेटफ्लिक्स एपीआई गेटवे

  • स्प्रिंग क्लाउड कॉन्फ़िगरेशन सर्वर के साथ कॉन्फ़िगरेशन प्रबंधन
  • हिस्टिक्स के साथ दोष सहिष्णुता

लेखों की इस श्रृंखला में, हम दो माइक्रोसेवाएँ बनाएँगे:
लगभग। ट्रांस। लेखक आगे कहा गया है कि आंशिक रूप से दोहराता है। सहेजा गया मूल संस्करण (रिप्ले को हटाए बिना)

  • विदेशी मुद्रा सेवा - संक्षेप में एफएस
  • मुद्रा रूपांतरण सेवा - लघु के लिए सीसीएस

नीचे दिया गया चित्र CCS और FS के बीच के संबंध को दर्शाता है। हम इन दो घटकों के बीच एक संबंध स्थापित करेंगे।



हम इन सेवाओं में से प्रत्येक के उदाहरणों को गतिशील रूप से बढ़ाने और कम करने में सक्षम होना चाहते हैं।



और प्रत्येक सेवा के लिए उदाहरणों की संख्या समय के साथ बदल सकती है। नीचे दिया गया आंकड़ा एक विशिष्ट उदाहरण दिखाता है जहां विदेशी मुद्रा सेवा के 5 उदाहरण बनाए गए हैं।



गतिशील रूप से ऊपर और नीचे स्केलिंग के लिए एक समाधान को लागू करने के लिए दो प्रश्नों के उत्तर देने की आवश्यकता होती है:

  • मुद्रा रूपांतरण सेवा (CCS) से यह पता चलता है कि कितने विदेशी मुद्रा सेवा (FS) इंस्टेंसेस सक्रिय हैं?
  • मुद्रा रूपांतरण सेवा (CCS) सक्रिय इंस्टेंस के बीच लोड को कैसे वितरित करती है?

चूंकि हम चाहते हैं कि यह गतिशील हो, इसलिए हम FS सेवाओं में URL को CCS में हार्डकोड नहीं कर सकते। यही कारण है कि हम एक नाम सर्वर शुरू कर रहे हैं।

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

नीचे सीसीएस से एफएस के लिए अनुरोध करने पर क्या होगा इसका एक उच्च-स्तरीय अनुक्रम आरेख है।



लेखों की इस श्रृंखला में आगे:


  • एक विदेशी मुद्रा माइक्रोसिस्ट सेवा बनाना। हम स्प्रिंग बूट स्टार्टर वेब और स्प्रिंग बूट स्टार्टेड जेपीए के आधार पर एक साधारण REST सेवा बनाएंगे। हम JPA को लागू करने और H2 डेटाबेस से कनेक्ट करने के लिए हाइबरनेट का उपयोग करेंगे।
  • सीसीएस मुद्रा रूपांतरण सेवा का निर्माण। हम विदेशी मुद्रा microservice को कॉल करने के लिए Feign का उपयोग करके एक सरल REST सेवा बनाएंगे।
  • लोड संतुलन के लिए रिबन का उपयोग करें।
  • यूरेका नामकरण सेवा को लागू करें और यूरेका के माध्यम से एफएस और सीसीएस को कनेक्ट करें।

Source: https://habr.com/ru/post/hi484130/


All Articles