मुझे एहसास है कि उपरोक्त प्रश्न शायद कुछ 'क्या ??' उठता है, लेकिन मुझे समझाने की कोशिश करें:
मैं संबंधित अवधारणाओं के एक जोड़े पर अपना सिर लपेटने की कोशिश कर रहा हूं, मूल रूप से इवेंट-सोर्सिंग (एक डीडीडी-अवधारणा के साथ संयोजन में सागा-पैटर्न ( http://www.rgoelines.com/Files/SOAPatterns/Saga.pdf ) : http://en.wikipedia.org/wiki/Domain-driven_design )
एक अच्छी पोस्ट जो इसे एक साथ लपेटती है: https://blog.jonathanoliver.com/cqrs-sagas-with-event-sourcing-part-ii-of-ii/
मुझे एक मिनट में सवाल मिल रहा है, लेकिन मुझे लगता है कि मुझे यह समझने की कोशिश करनी होगी कि मैं इसे पहले क्या समझता हूं (जो कि अच्छी तरह से गलत हो सकता है, इसलिए कृपया सही है अगर ऐसा है तो) क्योंकि यह अच्छी तरह से प्रभावित हो सकता है इसलिए मैं प्रश्न के साथ शुरू करने के लिए पूछ रहा है:
- सागा पैटर्न एक प्रकार का ब्रोकर है, जिसने एक एक्शन दिया (एंड-यूज़र, स्वचालित, आदि। अनिवार्य रूप से कुछ भी जो डेटा को बदलने जा रहा है) उस एक्शन को व्यावसायिक गतिविधियों में विभाजित करता है और इन गतिविधियों में से प्रत्येक को मैसेज बस में संदेश के रूप में भेजता है जो बदले में इसे संबंधित एकत्रित जड़ों को भेजता है जिसका ध्यान रखा जाना चाहिए।
- ये समग्र जड़ें पूरी तरह से स्वायत्त रूप से संचालित हो सकती हैं (चिंताओं का अच्छा पृथक्करण, महान मापनीयता, आदि)
- एक सागा-उदाहरण में स्वयं कोई व्यावसायिक तर्क नहीं होता है, जो कि एग्रीगेट जड़ों में निहित है जो इसे गतिविधियों को भेजता है। गाथा में निहित एकमात्र 'तर्क' 'प्रक्रिया'-तर्क है, (अक्सर एक स्टेटमाइन के रूप में लागू किया जाता है), जो प्राप्त किए गए कार्यों (साथ ही साथ अनुवर्ती घटनाओं) के आधार पर निर्धारित करता है कि क्या करना है (यानी: क्या गतिविधियों को भेजना है)
- सागा-पैटर्न एक प्रकार का वितरित लेनदेन पैटर्न लागू करता है। Ie: जब कुल जड़ों में से एक (जो फिर से स्वायत्त रूप से काम करता है, प्रत्येक माताओं के अस्तित्व को जाने बिना) विफल हो जाता है, तो पूरी कार्रवाई को वापस रोल करना पड़ सकता है।
- सागा को वापस उनकी गतिविधि की रिपोर्ट के पूरा होने पर, सभी मूल जड़ों को लागू किया जाता है। (सफलता के मामले में भी त्रुटि)
- मामले में सभी समुच्चय जड़ें एक सफलता लौटाती हैं, आंतरिक स्टेटमाइन यदि सागा निर्धारित करता है कि आगे क्या करना है (या इसे करना है)
- असफलता के मामले में, सागा सभी एग्रीगेट जड़ों को जारी करता है, जिन्होंने अंतिम कार्रवाई में एक तथाकथित मुआवजा एक्शन लिया, अर्थात: एग्रीगेट प्रत्येक रूट की अंतिम कार्रवाई को पूर्ववत करने की कार्रवाई।
- यह केवल 'माइनस 1 वोट' हो सकता है अगर एक्शन "प्लस 1 वोट" था, लेकिन यह पिछले संस्करण के लिए एक ब्लॉगपोस्ट को पुनर्स्थापित करने की तरह अधिक जटिल हो सकता है।
- ईवेंट-सोर्सिंग (दोनों को मिलाते हुए ब्लॉगपोस्ट देखें) का उद्देश्य उन प्रत्येक गतिविधियों के परिणामों को सहेजना है, जो प्रत्येक केंद्रीकृत इवेंट स्टोर में किए गए एग्रीगेट रूट्स (परिवर्तन इस संदर्भ में 'ईवेंट' कहलाते हैं)
- यह ईवेंट स्टोर 'सत्य का एकल संस्करण' है और इसका उपयोग स्टोर की गई घटनाओं (अनिवार्य रूप से ईवेंट लॉग की तरह) को पुन: व्यवस्थित करके सभी संस्थाओं की स्थिति को फिर से लिखने के लिए किया जा सकता है।
- दोनों को मिलाना (यानी: समग्र जड़ों को उपयोग करने के लिए इवेंट-सोर्स को आउटसोर्स करने से पहले सागा को रिपोर्ट करने से बचाने के लिए) बहुत सारी अच्छी संभावनाएं देता है, जिनमें से एक मेरे सवाल से चिंतित है ...
मुझे लगा कि मुझे अपने कंधे से उतरने की जरूरत है, क्योंकि एक बार में बहुत कुछ समझ में आता है। इस संदर्भ / मानसिकता को देखते हुए (यदि गलत हो तो कृपया सही करें)
प्रश्न: जब एक समग्र रूट को एक कम्पेनसेट एक्शन प्राप्त होता है और अगर उस एग्रीगेट रूट ने आउटसोर्स किया है तो यह इवेंट-सोर्सिंग का उपयोग करके राज्य-परिवर्तन है, सभी परिस्थितियों में कम्पेनसेट एक्शन नहीं होगा बस उसके लिए इवेंट स्टोर में अंतिम ईवेंट को हटा दें। सकल जड़ दी? (दृढ़ता-कार्यान्वयन को हटाने की अनुमति देता है)
इससे मुझे बहुत फायदा होगा (और इस संयोजन का एक और बड़ा फायदा होगा) लेकिन जैसा कि मैंने कहा कि मैं इन अवधारणाओं को गलत / अधूरी समझ के आधार पर बना रहा हूं।
मुझे आशा है कि यह बहुत लंबे समय तक प्रसारित नहीं हुआ।
धन्यवाद।