2011-06-04 8 views
5

यह देखते हुए कि आपके पास कई सिस्टम हैं, जो ईवेंट द्वारा एकीकृत हैं, और वे सभी ईवेंट सोर्सिंग का उपयोग कर रहे हैं। आप घटनाओं को कहां स्टोर करते हैं?इवेंट सोर्सिंग का उपयोग करने वाले वितरित सिस्टम में ईवेंट कहां स्टोर करें?

मेरे मामले में मैं तीन सिस्टम:

  • एक वेबसाइट है, जो एक दुकान
  • वेबसाइट ग्राहकों को प्रबंधित करने के लिए एक बैकेंड है, उत्पाद आदि
  • एक लेखा प्रणाली

जब भी एक सिस्टम घटना उन सिस्टमों में से एक में होती है तो ईवेंट प्रकाशित होता है और अन्य सिस्टम द्वारा संसाधित किया जा सकता है। सभी सिस्टम इवेंट सोर्सिंग का उपयोग कर रहे हैं।

मुझे आश्चर्य है कि आप कहां सेव करेंगे। निस्संदेह प्रत्येक सिस्टम को संसाधित होने वाली सभी घटनाओं को संग्रहीत करना पड़ता है क्योंकि यह ईवेंट सोर्सिंग का उपयोग कर रहा है और इसलिए एक बार संसाधित होने वाली घटनाओं पर निर्भर करता है।

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

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

मेरे लिए इस समस्या के कुछ अलग-अलग दृष्टिकोण हैं।

  1. प्रत्येक सिस्टम प्रकाशित होने वाली सभी घटनाओं को बचाता है। यह आपको आवश्यक होने पर या किसी अन्य सिस्टम में आयात करने की घटनाओं को पुन: प्रकाशित करने की क्षमता देता है।
  2. प्रत्येक सिस्टम उन सभी घटनाओं को बचाता है, जो भी संसाधित होने की आवश्यकता नहीं है (अभी तक)।
  3. सभी सिस्टम की सभी घटनाओं को केंद्रीय घटना लॉग में संग्रहीत किया जाता है। यदि आपको अतीत में हुई घटना को खरीदने की आवश्यकता है, लेकिन आपने सदस्यता नहीं ली है तो आप इसे यहां से आयात कर सकते हैं।

आप ऐसी स्थिति को कैसे संभालेंगे? आप अपनी घटनाओं को कहां से बचाते हैं? आपके उत्तर के लिए

संपादित

धन्यवाद रॉय Dictus। मुझे अभी भी यह सुनिश्चित नहीं है कि निम्न परिस्थितियों को कैसे संभाला जाए:

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

अब विपणन विभाग भी पसंदीदा विवरणों के बारे में जानकारी ग्राहक विवरण पृष्ठ पर दिखाना चाहता है। चूंकि बैकएंड ने ग्राहक मार्केड प्रोडक्ट्स की सदस्यता नहीं ली है, इस जानकारी को बैकएंड में उपलब्ध नहीं है। मुझे वह जानकारी कहां मिलती है?

उत्तर

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

संपादित अपने अतिरिक्त प्रश्न समायोजित करने के लिए:

अन्य अनुप्रयोग अचानक अतिरिक्त जानकारी में रुचि हो जाता है, यह, इसके अलावा घटनाओं यह अब में रुचि रखता है के लिए श्रोताओं को जोड़ने के लिए है

सब। इन घटनाओं के स्रोत फिर उन घटनाओं को फिर से चला सकते हैं। रीप्ले इवेंट-संचालित सिस्टम की एक शक्तिशाली विशेषता है जो ऐसे परिदृश्यों की अनुमति देता है। इसलिए, घटना स्रोत केवल चयनित घटनाओं को फिर से चलाते हैं (कहते हैं, पिछले 6 महीनों के सभी ग्राहकमार्क किए गए इटैमएफ़ाइट कार्यक्रम)। जिन प्रणालियों ने पहले से ही इन घटनाओं का उपभोग किया है उन्हें यह समझना चाहिए कि जिन घटनाओं को फिर से चलाया गया है वे "पुराने" हैं (यानी, जिनके बारे में यह पहले ही संसाधित हो चुका है) और उन्हें अनदेखा करें।

इस तरह, किसी भी उपप्रणाली जिसे अन्य उपप्रणाली से अतिरिक्त जानकारी का उपयोग करने के लिए अद्यतन किया गया है, वह जानकारी प्राप्त कर सकती है और एक बैच ऑपरेशन में सभी अद्यतित हो सकती है।

+0

धन्यवाद। कृपया नीचे मेरा संपादन देखें। मैंने एक परिदृश्य जोड़ा जो मुझे नहीं पता कि अभी तक कैसे संभालना है। – Alebo

0

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

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

+0

मैंने बस इस उदाहरण को बनाया है। हालांकि मुझे लगता है कि ऐतिहासिक डेटा तक पहुंचने की आवश्यकता होगी, क्योंकि जो भी बैकएंड में पसंदीदा को देखता है, वह उन्हें पूरा होने की उम्मीद करेगा। – Alebo

संबंधित मुद्दे