ऑर्केस्ट्रेटिंग माइक्रोसर्विस


200

ऑर्केस्ट्रेटिंग माइक्रोसर्विस का मानक पैटर्न क्या है?

यदि एक माइक्रोसिस्ट सेवा केवल अपने स्वयं के डोमेन के बारे में जानती है, लेकिन डेटा का एक प्रवाह है जिसके लिए कई सेवाओं को किसी न किसी तरह से सहभागिता की आवश्यकता होती है, तो इसके बारे में क्या तरीका है?

मान लीजिए कि हमारे पास ऐसा कुछ है:

  • चालान-प्रक्रिया
  • शिपमेंट

और तर्क के लिए, मान लें कि एक बार आदेश भेज दिया गया है, तो चालान बनाया जाना चाहिए।

कहीं, कोई व्यक्ति बटन दबाता है GUI, "मैं कर रहा हूँ, चलो यह करते हैं!" एक क्लासिक मोनोलिथ सेवा वास्तुकला में, मैं कहूंगा कि या तो ESBइसे संभालना है, या शिपमेंट सेवा को इनवॉयस सेवा का ज्ञान है और वह केवल कॉल करता है।

लेकिन इस नई सूक्ष्म दुनिया की बहादुर लोगों से निपटने का तरीका क्या है?

मुझे लगता है कि यह अत्यधिक राय-आधारित माना जा सकता है। लेकिन इसके लिए एक ठोस पक्ष है, क्योंकि माइक्रोसर्विस ऊपर ऐसा करने वाले नहीं हैं। इसलिए "इसके बजाय परिभाषा के अनुसार क्या करना चाहिए" होना चाहिए, जो कि राय-आधारित नहीं है।

गोली मार।

जवाबों:


316

बुक बिल्डिंग माइक्रोसर्विसेज ने अपने उत्तर में @RogerAlsing द्वारा वर्णित शैलियों का विस्तार से वर्णन किया है।

आर्केस्ट्रा बनाम कोरियोग्राफी के तहत पेज 43 पर किताब कहती है:

जैसा कि हम अधिक से अधिक जटिल तर्क देना शुरू करते हैं, हमें व्यक्तिगत प्रक्रियाओं की सीमा में खिंचाव वाली व्यावसायिक प्रक्रियाओं के प्रबंधन की समस्या से निपटना होगा। और microservices के साथ, हम इस सीमा को जल्द से जल्द मार देंगे। [...] जब वास्तव में इस प्रवाह को लागू करने की बात आती है, तो वास्तुकला की दो शैलियाँ हैं जिनका हम अनुसरण कर सकते हैं। ऑर्केस्ट्रेशन के साथ, हम एक केंद्रीय मस्तिष्क पर निर्भर करते हैं कि इस प्रक्रिया को निर्देशित करने और ड्राइव करने के लिए, बहुत कुछ एक ऑर्केस्ट्रा में कंडक्टर की तरह। कोरियोग्राफी के साथ, हम इसकी नौकरी के सिस्टम के प्रत्येक भाग को सूचित करते हैं और इसे विवरण का काम करने देते हैं, जैसे नर्तक सभी अपने रास्ते में प्रवेश करते हैं और एक बैले में उनके आसपास दूसरों पर प्रतिक्रिया करते हैं।

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

आर्केस्ट्रा स्टाइल

इस शैली के अंतर्गत, उपर्युक्त पुस्तक:

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

नोट: मुझे लगता है कि जब लेखक टूलींग का उल्लेख करता है, तो वह BPM (जैसे गतिविधि , अपाचे ODE , कैमुंडा ) का उल्लेख कर रहा है । तथ्य की बात के रूप में, वर्कफ़्लो पैटर्न वेबसाइट में इस तरह के ऑर्केस्ट्रेशन को करने के लिए पैटर्न का एक भयानक सेट है और यह विभिन्न विक्रेता टूल का मूल्यांकन विवरण भी प्रदान करता है जो इसे इस तरह लागू करने में मदद करते हैं। मुझे नहीं लगता कि लेखक का मतलब है कि एकीकरण की इस शैली को लागू करने के लिए इनमें से किसी एक उपकरण का उपयोग करना आवश्यक है, हालांकि, अन्य हल्के ऑर्केस्ट्रेशन फ्रेमवर्क का उपयोग किया जा सकता है जैसे स्प्रिंग इंटीग्रेशन , अपाचे ऊंट या खच्चर ESB

हालाँकि, अन्य पुस्तकें जो मैंने माइक्रोसॉर्विस के विषय पर पढ़ी हैं और सामान्य तौर पर मैंने वेब में जितने लेख पाए हैं उनमें से अधिकांश में ऑर्केस्ट्रेशन के इस दृष्टिकोण को महसूस किया गया है और इसके बजाय अगले एक का उपयोग करने का सुझाव दिया गया है।

कोरियोग्राफी की शैली

कोरियोग्राफी की शैली में लेखक कहता है:

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

नोट: आज तक मुझे यकीन नहीं है कि अगर कोरियोग्राफ़ी इवेंट-संचालित आर्किटेक्चर (EDA) का दूसरा नाम है , लेकिन अगर EDA इसे करने का सिर्फ एक तरीका है, तो अन्य तरीके क्या हैं? (यह भी देखें कि "इवेंट-ड्रिवेन" से आपका क्या मतलब है? और इवेंट-मीनिंग आर्किटेक्चर का मतलब )। इसके अलावा, ऐसा लगता है कि CQRS और EventSourcing जैसी चीजें इस वास्तुकला शैली के साथ बहुत कुछ प्रतिध्वनित करती हैं, है ना?

अब, इसके बाद मजा आता है। माइक्रोसर्विसेज की पुस्तक यह नहीं मानती है कि आरईएस के साथ माइक्रोसर्विसेज लागू होने जा रहे हैं। पुस्तक में अगले भाग में तथ्य की बात के रूप में, वे आरपीसी और एसओए-आधारित समाधानों और अंत में आरईएसटी पर विचार करने के लिए आगे बढ़ते हैं। यहाँ एक महत्वपूर्ण बात यह है कि माइक्रोसिस्टम्स REST का अर्थ नहीं लगाता है।

तो, HATEOAS के बारे में क्या? (अनुप्रयोग राज्य के इंजन के रूप में हाइपरमीडिया)

अब, यदि हम Restful दृष्टिकोण का पालन करना चाहते हैं तो हम HATEOAS या रॉय फील्डिंग को नजरअंदाज नहीं कर सकते हैं, तो अपने ब्लॉग में यह कहते हुए बहुत खुशी होगी कि हमारा समाधान वास्तव में REST नहीं है। REST API पर उनकी ब्लॉग पोस्ट देखें हाइपरटेक्स्ट संचालित :

मैं किसी HTTP- आधारित इंटरफ़ेस को REST API कहने वाले लोगों की संख्या से निराश हो रहा हूं। अन्य वास्तुशिल्प शैली को इस धारणा पर स्पष्ट करने के लिए क्या किया जाना चाहिए कि हाइपरटेक्स्ट एक बाधा है? दूसरे शब्दों में, यदि एप्लिकेशन स्टेट (और इसलिए API) का इंजन हाइपरटेक्स्ट द्वारा संचालित नहीं किया जा रहा है, तो यह RESTful नहीं हो सकता है और REST API नहीं हो सकता है। अवधि। क्या कहीं कुछ टूटा हुआ मैनुअल है जिसे ठीक करने की आवश्यकता है?

इसलिए, जैसा कि आप देख सकते हैं, क्षेत्ररक्षण को लगता है कि HATEOAS के बिना आप वास्तव में Restful अनुप्रयोगों का निर्माण नहीं कर रहे हैं। क्षेत्ररक्षण के लिए, HateOAS सेवाओं को ऑर्केस्ट्रेट करने के लिए जाने का रास्ता है। मैं सिर्फ यह सब सीख रहा हूं, लेकिन मेरे लिए, HATEOAS स्पष्ट रूप से परिभाषित नहीं करता है कि वास्तव में लिंक के पीछे ड्राइविंग बल कौन है या क्या है। एक यूआई में जो उपयोगकर्ता हो सकता है, लेकिन कंप्यूटर-से-कंप्यूटर इंटरैक्शन में, मुझे लगता है कि उच्च स्तर की सेवा द्वारा किया जाना चाहिए।

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

यह कितना अच्छा लगता है, इसके बावजूद, क्लाइंट को यह जानने की जरूरत है कि क्या लिंक को POSTed, PUTed, GETed, PATCHed इत्यादि होना चाहिए और क्लाइंट को अभी भी यह तय करने की आवश्यकता है कि पेलोड को क्या पारित करना है। क्लाइंट को अभी भी पता होना चाहिए कि क्या करना है अगर वह विफल हो जाता है (पुन: प्रयास, क्षतिपूर्ति, रद्द करें, आदि)।

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

मुझे लगता है कि हम या तो ऑर्केस्ट्रेशन या कोरियोग्राफी के साथ HATEOAS का उपयोग कर सकते हैं।

एपीआई गेटवे पैटर्न

एक और दिलचस्प पैटर्न क्रिस रिचर्डसन द्वारा सुझाया गया है, जिसने एक एपीआई गेटवे पैटर्न को भी प्रस्तावित किया था ।

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

एक एप्लिकेशन क्लाइंट, जैसे कि एक देशी मोबाइल एप्लिकेशन, व्यक्तिगत सेवाओं के लिए Restful HTTP अनुरोध कर सकता है [...] सतह पर यह आकर्षक लग सकता है। हालांकि, ग्राहकों द्वारा आवश्यक व्यक्तिगत सेवाओं और डेटा के एपीआई के बीच बारीकियों में एक महत्वपूर्ण बेमेल होने की संभावना है। उदाहरण के लिए, एक वेब पेज प्रदर्शित करना संभावित रूप से बड़ी संख्या में सेवाओं के लिए कॉल की आवश्यकता हो सकती है। उदाहरण के लिए, Amazon.com बताता है कि कैसे कुछ पृष्ठों को 100+ सेवाओं के लिए कॉल की आवश्यकता होती है। एक हाई-स्पीड इंटरनेट कनेक्शन पर भी कई अनुरोध करते हुए, अकेले-कम बैंडविड्थ, उच्च-विलंबता मोबाइल नेटवर्क, को बहुत ही अक्षम और एक खराब उपयोगकर्ता अनुभव के परिणामस्वरूप।

ग्राहकों के लिए प्रति पृष्ठ बहुत कम संख्या में अनुरोध करने के लिए एक बेहतर तरीका है, शायद एक इंटरनेट पर, एक एपीआई गेटवे के रूप में जाना जाने वाला फ्रंट-एंड सर्वर पर।

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

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

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

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

यह ऊपर उल्लिखित ऑर्केस्ट्रेशन शैली के समान सुंदर लगता है, बस थोड़ा अलग इरादे के साथ, इस मामले में, यह सभी के प्रदर्शन और बातचीत के सरलीकरण के बारे में लगता है।


15
अच्छा उत्तर! एक प्रश्न: अगर मैं एक कोरियोग्राफ़ी-शैली के माइक्रोसर्विसेज को एक एपीआई-गेटवे के साथ जोड़ देता हूं, तो क्या एपीआई-गेटवे केंद्रीय गवर्निंग अथॉरिटी में नहीं बदलेगा, जिसे आप ऑर्केस्ट्रेशन-स्टाइल माइक्रोसर्विस के नकारात्मक पहलू के रूप में वर्णित करते हैं? या, दूसरे शब्दों में, जहां "ऑर्केस्ट्रेशन स्टाइल" और एपीआई-गेटवे पैटर्न के बीच अंतर है?
फ्रिट्ज़ डुकार्ड

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

बहुत बढ़िया जवाब! एपीआई गेटवे के बारे में बस एक सवाल: क्या अगली पीढ़ी एपीआई गेटवे को ग्राफकलाइन करता है, और एपीआई गेटवे को अच्छी तरह से बदल सकता है?
केन्हो

मैं इसे व्यावहारिक दृष्टिकोण से समझने की कोशिश कर रहा हूं। कोरियोग्राफी अधिक शिथिल युग्मित है -> उस स्थिति में एक इवेंटलिस्ट को एपि विधि से गतिशील रूप से जोड़ा जाना चाहिए? अन्यथा यदि प्रत्येक एपी विधि किसी प्राप्त घटना पर प्रतिक्रिया नहीं करेगा (-> और इस प्रकार शिथिल युग्मित नहीं है)
विंसेंट

मैं इस बात से सहमत नहीं हूं कि कोरियोग्राफी अधिक शिथिल युग्मित है और इस प्रकार ऑर्केस्ट्रेशन को माइक्रोसर्विस के साथ बचाए जाने की आवश्यकता है। मैंने इसके बारे में उदाहरण के लिए berndruecker.io/complex-event-flows-in-distributed-systems में बात की थी । आपको अपनी वास्तुकला में अधिक संतुलित दृष्टिकोण की आवश्यकता है।
बर्न रूडकर

35

यहां विभिन्न दृष्टिकोणों को एकत्र करने की कोशिश की जा रही है।

डोमेन घटनाएँ

इसके लिए प्रमुख दृष्टिकोण डोमेन घटनाओं का उपयोग करना प्रतीत होता है, जहां प्रत्येक सेवा उन घटनाओं के बारे में प्रकाशित करती है जो हुई हैं और अन्य सेवाएं उन घटनाओं की सदस्यता ले सकती हैं। यह स्मार्ट एंडपॉइंट, डंब पाइप की अवधारणा के साथ हाथ से जाने के लिए लगता है जो मार्टिन फॉलर द्वारा यहां वर्णित है: http://martinfowler.com/articles/microservices.html#SmartEndpointsAndDumbPipes

डोमेन घटनाएँ

प्रतिनिधि

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

प्रॉक्सी

रचना के अन्य पैटर्न

इस पृष्ठ में विभिन्न रचना पैटर्न हैं।


यहां एक अच्छा वीडियो है जो अन्य पैटर्न हैं और आप उन्हें कैसे जोड़ सकते हैं youtu.be/tSN1gOVQfPs?t=35m35s उन्हें अपनी प्रतिक्रिया में जोड़ें
Grygoriy Gonchar

निक छवियों @Roger, जो उपकरण आप उपयोग कर रहे थे?
सेल्वाकुमार एस्रा

1
@ सिल्वकुमारएस्सरा ड्रा.आईओ
रोजर जोहानसन

7

तो, पुरानी SOA सेवाओं के ऑर्केस्ट्रेशन से अलग माइक्रोसेकवर्स का ऑर्केस्ट्रेशन कैसे "माइक्रो" नहीं है? ज्यादा नहीं।

माइक्रोसर्विसेज आमतौर पर http (REST) ​​या मैसेजिंग / इवेंट्स का उपयोग करके संवाद करते हैं। ऑर्केस्ट्रेशन अक्सर ऑर्केस्ट्रेशन प्लेटफार्मों से जुड़ा होता है जो आपको वर्कफ़्लो को स्वचालित करने के लिए सेवाओं के बीच एक स्क्रिप्टेड इंटरैक्शन बनाने की अनुमति देता है। पुराने SOA दिनों में, इन प्लेटफार्मों ने WS-BPEL का उपयोग किया था। आज के उपकरण BPEL का उपयोग नहीं करते हैं। आधुनिक ऑर्केस्ट्रेशन उत्पादों के उदाहरण: नेटफ्लिक्स कंडक्टर, कैमुंडा, ज़ीबे, एज़ुर लॉजिक ऐप्स, बेकर।

ध्यान रखें कि ऑर्केस्ट्रेशन एक मिश्रित पैटर्न है जो सेवाओं की जटिल रचनाओं को बनाने के लिए कई क्षमताएं प्रदान करता है। माइक्रोसोर्सेज़ को अक्सर उन सेवाओं के रूप में देखा जाता है जिन्हें जटिल रचनाओं में भाग नहीं लेना चाहिए और बल्कि अधिक स्वायत्त होना चाहिए।

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


यह ध्यान दिया जाना चाहिए कि आपके पोस्ट में "आज के उपकरण", अभी भी किसी प्रवाह में "मॉडल" के लिए किसी न किसी रूप में घटनाओं, डेटा और गतिविधियों का उपयोग करते हैं - कैमुंडा BPMN का उपयोग करता है, जो BPEL के करीब है, और दूसरों के पास बस है एक समान अवधारणा का प्रतिनिधित्व करने के लिए अपने स्वयं के डीएसएल को परिभाषित किया।
Hightower

5

तो आप दो सेवाएं दे रहे हैं:

  1. चालान माइक्रो सेवा
  2. शिपमेंट माइक्रो सेवा

वास्तविक जीवन में, आपके पास कुछ ऐसा होगा जहां आप ऑर्डर की स्थिति रखते हैं। चलो इसे ऑर्डर सेवा कहते हैं। अगला आपके पास ऑर्डर प्रोसेसिंग उपयोग के मामले हैं, जो जानते हैं कि क्या करना है जब ऑर्डर एक राज्य से दूसरे में बदलते हैं। इन सभी सेवाओं में डेटा का एक निश्चित सेट होता है, और अब आपको कुछ और चाहिए, जो सभी समन्वय करता है। यह हो सकता है:

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

इसके साथ मुख्य बिंदु यह है कि नियंत्रण बाहरी है। ऐसा इसलिए है क्योंकि आपके सभी एप्लिकेशन घटक व्यक्तिगत बिल्डिंग ब्लॉक हैं, शिथिल युग्मित हैं। यदि आपके उपयोग के मामले बदलते हैं, तो आपको एक घटक को एक स्थान पर बदलना होगा, जो ऑर्केस्ट्रेशन घटक है। यदि आप एक अलग क्रम प्रवाह जोड़ते हैं, तो आप आसानी से एक और ऑर्केस्ट्रेटर जोड़ सकते हैं जो पहले वाले के साथ हस्तक्षेप नहीं करता है। माइक्रो सर्विस की सोच न केवल स्कैलेबिलिटी और फैंसी रेस्ट एपीआई के बारे में है, बल्कि एक स्पष्ट संरचना, घटकों के बीच निर्भरता कम करने और सामान्य डेटा और कार्यक्षमता के पुन: उपयोग के बारे में भी है जो आपके व्यवसाय में साझा किए जाते हैं।

एचटीएच, मार्क


1

यदि राज्य को प्रबंधित करने की आवश्यकता है तो CQRS के साथ इवेंट सोर्सिंग संचार का आदर्श तरीका है। एल्स, एक अतुल्यकालिक संदेश प्रणाली (AMQP) का उपयोग इंटर माइक्रो सर्विस के लिए किया जा सकता है।

आपके प्रश्न से, यह स्पष्ट है कि CQRS के साथ ES सही मिश्रण होना चाहिए। जावा का उपयोग करते समय, एक्सॉन ढांचे पर एक नज़र डालें। या कफका या रैबिटएमक्यू का उपयोग करके कस्टम समाधान का निर्माण करें।


-2

मैंने इस विषय पर कुछ पोस्ट लिखी हैं:

शायद ये पोस्ट भी मदद कर सकती हैं:

एपीआई गेटवे पैटर्न - कोर्स-दानेदार एपी बनाम बनाम दानेदार एपिस

https://www.linkedin.com/pulse/api-gateway-pattern-ronen-hamias/ https://www.linkedin.com/pulse/successfulapi-ronen-hamias/

मोटे-दानेदार बनाम महीन दाने वाली सेवा एपीआई

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


-2

मूल प्रश्न का उत्तर SAGA पैटर्न है।


4
अपने उत्तर का विस्तार करने के लिए देखभाल?
पैट्रिक मेवज़ेक

सागा लेनदेन की नकल करने की कोशिश करता है, प्रत्येक ऑपरेशन के लिए आप एक पूर्ववत संचालन प्रदान करते हैं। यदि संचालन की एक श्रृंखला विफल हो जाती है, तो पूर्ववत संचालन सभी मूल में वापस आ जाते हैं।
sschrass 16

कुछ रैंडम जवाब लगता है। विस्तार की जरूरत है।
भावेश
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.