घटना-संचालित वास्तुकला: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 3: Line 3:


== अवलोकन ==
== अवलोकन ==
एक घटना को [[राज्य (कंप्यूटर विज्ञान)|स्थिति (कंप्यूटर विज्ञान)]] में एक महत्वपूर्ण परिवर्तन के रूप में परिभाषित किया जा सकता है।<ref>K. Mani Chandy Event-driven Applications: Costs, Benefits and Design Approaches, ''California Institute of Technology'', 2006</ref> उदाहरण के लिए, जब कोई उपभोक्ता कार खरीदता है, तो कार की स्थिति बिक्री के लिए से बेची गई में परिवर्तित हो जाती है। एक कार डीलर का सिस्टम आर्किटेक्चर इस स्थिति परिवर्तन को एक घटना के रूप में मान सकता है जिसकी घटना को आर्किटेक्चर के भीतर अन्य अनुप्रयोगों के लिए जाना जा सकता है। एक औपचारिक दृष्टिकोण से, जो उत्पादित, प्रकाशित, प्रचारित, पता लगाया या उपभोग किया जाता है, वह एक (आमतौर पर अतुल्यकालिक) संदेश होता है, जिसे इवेंट नोटिफिकेशन कहा जाता है, न कि स्वयं घटना, जो स्थिति परिवर्तन है जो संदेश उत्सर्जन को ट्रिगर करता है। घटनाएँ यात्रा नहीं करतीं, वे बस घटित होती हैं। हालाँकि, घटना शब्द का उपयोग अक्सर अधिसूचना संदेश को निरूपित करने के लिए लक्षणालंकार का उपयोग किया जाता है, जिससे कुछ भ्रम हो सकता है। यह इवेंट-संचालित आर्किटेक्चर के कारण अक्सर 'संदेश-संचालित आर्किटेक्चर' के ऊपर डिज़ाइन किया जा रहा है, जहां इस तरह के संचार पैटर्न में प्रत्येक संचार को कैसे संभाला जाना चाहिए, यह अंतर करने के लिए इनपुट में से एक को टेक्स्ट-ओनली, संदेश की आवश्यकता होती है।
एक घटना को [[राज्य (कंप्यूटर विज्ञान)|स्थिति (कंप्यूटर विज्ञान)]] में एक महत्वपूर्ण परिवर्तन के रूप में परिभाषित किया जा सकता है।<ref>K. Mani Chandy Event-driven Applications: Costs, Benefits and Design Approaches, ''California Institute of Technology'', 2006</ref> उदाहरण के लिए, जब कोई उपभोक्ता कार खरीदता है, तो कार की स्थिति बिक्री के लिए से बेची गई में परिवर्तित हो जाती है। एक कार विक्रेता की प्रणाली वास्तुकला इस स्थिति परिवर्तन को एक घटना के रूप में मान सकता है जिसकी घटना को वास्तुकला के अन्दर अन्य अनुप्रयोगों के लिए जाना जा सकता है। एक औपचारिक दृष्टिकोण से, जो उत्पादित, प्रकाशित, प्रचारित, पता लगाया या उपभोग किया जाता है, वह एक (सामान्यतः अतुल्यकालिक) संदेश होता है, जिसे घटना अधिसूचना कहा जाता है, न कि स्वयं घटना, जो स्थिति परिवर्तन है जो संदेश उत्सर्जन को ट्रिगर करता है। घटनाएँ यात्रा नहीं करतीं, वे बस घटित होती हैं।चूंकि, घटना शब्द का उपयोग अधिकांशतः अधिसूचना संदेश को निरूपित करने के लिए लाक्षणिक रूप का उपयोग किया जाता है, जिससे कुछ भ्रम हो सकता है। यह घटना-संचालित वास्तुकला के कारण अधिकांशतः 'संदेश-संचालित वास्तुकला' के ऊपर डिज़ाइन किया जा रहा है, जहां इस तरह के संचार स्वरूप में प्रत्येक संचार को कैसे संभाला जाना चाहिए, यह अंतर करने के लिए इनपुट में से एक को टेक्स्ट-ओनली, संदेश की आवश्यकता होती है।


यह [[वास्तु पैटर्न]] उन अनुप्रयोगों और प्रणालियों के डिजाइन और कार्यान्वयन द्वारा लागू किया जा सकता है जो ढीले युग्मन और [[सेवा (सिस्टम आर्किटेक्चर)]] के बीच घटनाओं को प्रसारित करते हैं। एक घटना-संचालित प्रणाली में आम तौर पर घटना उत्सर्जक (या एजेंट), घटना उपभोक्ता (या डूब), और घटना चैनल शामिल होते हैं। एमिटर्स की घटनाओं का पता लगाने, इकट्ठा करने और स्थानांतरित करने की जिम्मेदारी है। एक घटना उत्सर्जक घटना के उपभोक्ताओं को नहीं जानता है, यह भी नहीं जानता कि उपभोक्ता मौजूद है या नहीं, और यदि यह मौजूद है, तो यह नहीं जानता कि घटना का उपयोग कैसे किया जाता है या आगे संसाधित किया जाता है। किसी घटना के प्रस्तुत होते ही प्रतिक्रिया लागू करने की जिम्मेदारी सिंक की होती है। प्रतिक्रिया पूरी तरह से सिंक द्वारा प्रदान की जा सकती है या नहीं भी हो सकती है। उदाहरण के लिए, सिंक के पास ईवेंट को किसी अन्य घटक को फ़िल्टर करने, बदलने और अग्रेषित करने की ज़िम्मेदारी हो सकती है या यह इस तरह की घटना के लिए स्वयं निहित प्रतिक्रिया प्रदान कर सकता है। ईवेंट चैनल ऐसे वाहक होते हैं जिनमें ईवेंट उत्सर्जकों से ईवेंट उपभोक्ताओं तक ईवेंट प्रसारित किए जाते हैं। घटनाओं के सही वितरण का ज्ञान केवल घटना चैनल के भीतर ही मौजूद है।{{Citation needed|date=August 2018}} ईवेंट चैनलों का भौतिक कार्यान्वयन पारंपरिक घटकों जैसे संदेश-उन्मुख मिडलवेयर या पॉइंट-टू-पॉइंट संचार पर आधारित हो सकता है जिसके लिए अधिक उपयुक्त की आवश्यकता हो सकती है {{clarify span|transactional executive framework|date=September 2013}}.
यह [[वास्तु पैटर्न|वास्तु]] स्वरूप उन अनुप्रयोगों और प्रणालियों के डिजाइन और कार्यान्वयन द्वारा लागू किया जा सकता है जो शिथिल युग्मित सॉफ्टवेयर घटक और सेवाओं के बीच घटनाओं को प्रसारित करते हैं। एक घटना-संचालित प्रणाली में सामान्यतः घटना उत्सर्जक (या एजेंट), घटना उपभोक्ता (या सिंक), और घटना चैनल शामिल होते हैं। एमिटर्स की घटनाओं का पता लगाने, इकट्ठा करने और स्थानांतरित करने की जिम्मेदारी है। एक घटना उत्सर्जक घटना के उपभोक्ताओं को नहीं जानता है, यह भी नहीं जानता कि उपभोक्ता उपस्थित  है या नहीं, और यदि यह उपस्थित  है, तो यह नहीं जानता कि घटना का उपयोग कैसे किया जाता है या आगे संसाधित किया जाता है। किसी घटना के प्रस्तुत होते ही प्रतिक्रिया लागू करने की जिम्मेदारी सिंक की होती है। प्रतिक्रिया पूरी तरह से सिंक द्वारा प्रदान की जा सकती है या नहीं भी हो सकती है। उदाहरण के लिए, सिंक के पास ईवेंट को किसी अन्य घटक को फ़िल्टर करने, बदलने और अग्रेषित करने की ज़िम्मेदारी हो सकती है या यह इस तरह की घटना के लिए स्वयं निहित प्रतिक्रिया प्रदान कर सकता है। ईवेंट चैनल ऐसे वाहक होते हैं जिनमें ईवेंट उत्सर्जकों से ईवेंट उपभोक्ताओं तक ईवेंट प्रसारित किए जाते हैं। घटनाओं के सही वितरण का ज्ञान केवल घटना चैनल के अन्दर ही उपस्थित  है। ईवेंट चैनलों का भौतिक कार्यान्वयन पारंपरिक घटकों जैसे संदेश-उन्मुख मिडलवेयर या पॉइंट-टू-पॉइंट संचार पर आधारित हो सकता है जिसके लिए अधिक उपयुक्त की आवश्यकता हो सकती है.


एक घटना-संचालित वास्तुकला के आसपास बिल्डिंग सिस्टम वितरित कंप्यूटिंग मॉडल में क्षैतिज मापनीयता को सरल करता है और उन्हें विफलता के प्रति अधिक लचीला बनाता है। ऐसा इसलिए है क्योंकि उच्च-उपलब्धता के लिए कई समांतर स्नैपशॉट में एप्लिकेशन स्थिति की प्रतिलिपि बनाई जा सकती है।<ref name="Fowler1">Martin Fowler, [https://martinfowler.com/eaaDev/EventSourcing.html Event Sourcing], December, 2005</ref> नई घटनाओं को कहीं भी शुरू किया जा सकता है, लेकिन इससे भी महत्वपूर्ण बात यह है कि डेटा स्टोर के नेटवर्क में आने पर प्रत्येक को अपडेट करते हुए प्रसारित किया जाता है। अतिरिक्त नोड्स जोड़ना भी तुच्छ हो जाता है: आप बस आवेदन की स्थिति की एक प्रति ले सकते हैं, इसे घटनाओं की एक धारा खिला सकते हैं और इसके साथ चल सकते हैं।<ref name="Fowler2">Martin Fowler, [https://martinfowler.com/eaaDev/ParallelModel.html Parallel Model], December, 2005</ref>
एक घटना-संचालित वास्तुकला के आसपास बिल्डिंग प्रणाली वितरित कंप्यूटिंग मॉडल में क्षैतिज मापनीयता को सरल करता है और उन्हें विफलता के प्रति अधिक लचीला बनाता है। ऐसा इसलिए है क्योंकि उच्च-उपलब्धता के लिए कई समांतर स्नैपशॉट में एप्लिकेशन स्थिति की प्रतिलिपि बनाई जा सकती है।<ref name="Fowler1">Martin Fowler, [https://martinfowler.com/eaaDev/EventSourcing.html Event Sourcing], December, 2005</ref> नई घटनाओं को कहीं भी शुरू किया जा सकता है, लेकिन इससे भी महत्वपूर्ण बात यह है कि डेटा स्टोर के नेटवर्क में आने पर प्रत्येक को अपडेट करते हुए प्रसारित किया जाता है। अतिरिक्त नोड्स जोड़ना भी तुच्छ हो जाता है: आप बस आवेदन की स्थिति की एक प्रति ले सकते हैं, इसे घटनाओं की एक धारा खिला सकते हैं और इसके साथ चल सकते हैं।<ref name="Fowler2">Martin Fowler, [https://martinfowler.com/eaaDev/ParallelModel.html Parallel Model], December, 2005</ref>
इवेंट-संचालित आर्किटेक्चर सेवा-उन्मुख आर्किटेक्चर (SOA) का पूरक हो सकता है क्योंकि सेवाओं को आने वाली घटनाओं पर ट्रिगर द्वारा सक्रिय किया जा सकता है।<ref name="Hanson1">{{cite web |last1=Hanson |first1=Jeff |date=2005-01-31 |df=mdy |url=https://www.infoworld.com/article/2072262/event-driven-services-in-soa.html |title=SOA में घटना-संचालित सेवाएं|work=[[JavaWorld]] |access-date=2020-07-21}}</ref><ref>{{cite web |last1=Sliwa |first1=Carol |date=2003-05-12 |df=mdy |url=https://www.computerworld.com/article/2570503/event-driven-architecture-poised-for-wide-adoption.html |title=घटना-संचालित वास्तुकला व्यापक रूप से अपनाने के लिए तैयार है|work=[[Computerworld]] |access-date=2020-07-21}}</ref>
यह प्रतिमान विशेष रूप से तब उपयोगी होता है जब सिंक कोई प्रदान नहीं करता है {{clarify span|self-contained executive|date=September 2013}}.


घटना-संचालित SOA|SOA 2.0 उन निहितार्थों को विकसित करता है जो SOA और EDA आर्किटेक्चर एक नए ईवेंट पैटर्न बनाने के लिए पहले के अज्ञात कारण संबंधों का लाभ उठाकर एक समृद्ध, अधिक मजबूत स्तर प्रदान करते हैं।{{vague|date=September 2013}} यह नया [[ व्यापारिक सूचना ]] पैटर्न आगे स्वायत्त मानव या स्वचालित प्रसंस्करण को ट्रिगर करता है जो मूल्य-वर्धित जानकारी को मान्यता प्राप्त पैटर्न में इंजेक्ट करके उद्यम के लिए घातीय मूल्य जोड़ता है जो पहले प्राप्त नहीं किया जा सकता था।{{vague|date=September 2013}}
घटना-संचालित वास्तुकला सेवा-उन्मुख वास्तुकला (SOA) का पूरक हो सकता है क्योंकि सेवाओं को आने वाली घटनाओं पर ट्रिगर द्वारा सक्रिय किया जा सकता है।<ref name="Hanson1">{{cite web |last1=Hanson |first1=Jeff |date=2005-01-31 |df=mdy |url=https://www.infoworld.com/article/2072262/event-driven-services-in-soa.html |title=SOA में घटना-संचालित सेवाएं|work=[[JavaWorld]] |access-date=2020-07-21}}</ref><ref>{{cite web |last1=Sliwa |first1=Carol |date=2003-05-12 |df=mdy |url=https://www.computerworld.com/article/2570503/event-driven-architecture-poised-for-wide-adoption.html |title=घटना-संचालित वास्तुकला व्यापक रूप से अपनाने के लिए तैयार है|work=[[Computerworld]] |access-date=2020-07-21}}</ref>
 
यह प्रतिमान विशेष रूप से तब उपयोगी होता है जब सिंक कोई प्रदान नहीं करता है .
 
घटना-संचालित SOA|SOA 2.0 उन निहितार्थों को विकसित करता है जो SOA और EDA वास्तुकला एक नए ईवेंट स्वरूपबनाने के लिए पहले के अज्ञात कारण संबंधों का लाभ उठाकर एक समृद्ध, अधिक मजबूत स्तर प्रदान करते हैं।{{vague|date=September 2013}} यह नया [[ व्यापारिक सूचना | व्यापारिक सूचना]] स्वरूपआगे स्वायत्त मानव या स्वचालित प्रसंस्करण को ट्रिगर करता है जो मूल्य-वर्धित जानकारी को मान्यता प्राप्त स्वरूपमें इंजेक्ट करके उद्यम के लिए घातीय मूल्य जोड़ता है जो पहले प्राप्त नहीं किया जा सकता था।{{vague|date=September 2013}}


== घटना संरचना ==
== घटना संरचना ==
एक ईवेंट को दो भागों में बनाया जा सकता है, इवेंट हेडर और इवेंट बॉडी। इवेंट हेडर में इवेंट का नाम, इवेंट के लिए टाइम स्टैम्प और इवेंट के प्रकार जैसी जानकारी शामिल हो सकती है।
एक ईवेंट को दो भागों में बनाया जा सकता है, घटना हेडर और घटना बॉडी। घटना हेडर में घटना का नाम, घटना के लिए टाइम स्टैम्प और घटना के प्रकार जैसी जानकारी शामिल हो सकती है।
इवेंट बॉडी पता लगाए गए स्थिति परिवर्तन का विवरण प्रदान करती है। एक घटना निकाय को पैटर्न या तर्क के साथ भ्रमित नहीं होना चाहिए जो कि घटना की घटना की प्रतिक्रिया में लागू हो सकता है।
घटना बॉडी पता लगाए गए स्थिति परिवर्तन का विवरण प्रदान करती है। एक घटना निकाय को स्वरूपया तर्क के साथ भ्रमित नहीं होना चाहिए जो कि घटना की घटना की प्रतिक्रिया में लागू हो सकता है।


== घटना प्रवाह परतें ==
== घटना प्रवाह परतें ==
Line 22: Line 24:




=== इवेंट प्रोड्यूसर ===
=== घटना प्रोड्यूसर ===
पहली तार्किक परत घटना निर्माता है, जो एक तथ्य को समझती है और एक घटना संदेश के रूप में उस तथ्य का प्रतिनिधित्व करती है। एक उदाहरण के रूप में, एक इवेंट प्रोड्यूसर एक ईमेल क्लाइंट, एक ई-कॉमर्स सिस्टम, एक मॉनिटरिंग एजेंट या किसी प्रकार का भौतिक सेंसर हो सकता है।
पहली तार्किक परत घटना निर्माता है, जो एक तथ्य को समझती है और एक घटना संदेश के रूप में उस तथ्य का प्रतिनिधित्व करती है। एक उदाहरण के रूप में, एक घटना प्रोड्यूसर एक ईमेल क्लाइंट, एक ई-कॉमर्स प्रणाली, एक मॉनिटरिंग एजेंट या किसी प्रकार का भौतिक सेंसर हो सकता है।


इस तरह के विविध डेटा स्रोतों से एकत्र किए गए डेटा को मूल्यांकन के लिए डेटा के एकल मानकीकृत रूप में परिवर्तित करना इस पहली तार्किक परत के डिजाइन और कार्यान्वयन में एक महत्वपूर्ण कार्य है।<ref name="Michelson1" />हालाँकि, यह देखते हुए कि एक घटना एक जोरदार घोषणात्मक ढांचा है, किसी भी सूचनात्मक संचालन को आसानी से लागू किया जा सकता है, इस प्रकार उच्च स्तर के मानकीकरण की आवश्यकता समाप्त हो जाती है।{{cn|date=January 2017}}
इस तरह के विविध डेटा स्रोतों से एकत्र किए गए डेटा को मूल्यांकन के लिए डेटा के एकल मानकीकृत रूप में परिवर्तित करना इस पहली तार्किक परत के डिजाइन और कार्यान्वयन में एक महत्वपूर्ण कार्य है।<ref name="Michelson1" />हालाँकि, यह देखते हुए कि एक घटना एक जोरदार घोषणात्मक ढांचा है, किसी भी सूचनात्मक संचालन को आसानी से लागू किया जा सकता है, इस प्रकार उच्च स्तर के मानकीकरण की आवश्यकता समाप्त हो जाती है।{{cn|date=January 2017}}


=== इवेंट चैनल ===
=== घटना चैनल ===
यह दूसरी तार्किक परत है। एक ईवेंट चैनल एक इवेंट जेनरेटर से ईवेंट इंजन में एकत्रित की गई जानकारी को प्रसारित करने का एक तंत्र है<ref name="Michelson1"/>या डूबो।
यह दूसरी तार्किक परत है। एक ईवेंट चैनल एक घटना जेनरेटर से ईवेंट इंजन में एकत्रित की गई जानकारी को प्रसारित करने का एक तंत्र है<ref name="Michelson1"/>यासिंको।
यह एक टीसीपी/आईपी कनेक्शन, या किसी भी प्रकार की इनपुट फ़ाइल (फ्लैट, एक्सएमएल प्रारूप, ई-मेल, आदि) हो सकता है। एक ही समय में कई ईवेंट चैनल खोले जा सकते हैं। आमतौर पर, क्योंकि इवेंट प्रोसेसिंग इंजन को उन्हें लगभग वास्तविक समय में प्रोसेस करना होता है, इवेंट चैनल एसिंक्रोनस रूप से पढ़े जाएंगे। घटनाओं को एक कतार में संग्रहीत किया जाता है, बाद में इवेंट प्रोसेसिंग इंजन द्वारा संसाधित किए जाने की प्रतीक्षा की जाती है।
यह एक टीसीपी/आईपी कनेक्शन, या किसी भी प्रकार की इनपुट फ़ाइल (फ्लैट, एक्सएमएल प्रारूप, ई-मेल, आदि) हो सकता है। एक ही समय में कई ईवेंट चैनल खोले जा सकते हैं। सामान्यतः, क्योंकि घटना प्रोसेसिंग इंजन को उन्हें लगभग वास्तविक समय में प्रोसेस करना होता है, घटना चैनल एसिंक्रोनस रूप से पढ़े जाएंगे। घटनाओं को एक कतार में संग्रहीत किया जाता है, बाद में घटना प्रोसेसिंग इंजन द्वारा संसाधित किए जाने की प्रतीक्षा की जाती है।


=== इवेंट प्रोसेसिंग इंजन ===
=== घटना प्रोसेसिंग इंजन ===
इवेंट प्रोसेसिंग इंजन एक तार्किक परत है जो किसी घटना की पहचान करने और फिर उचित प्रतिक्रिया का चयन करने और निष्पादित करने के लिए जिम्मेदार है। यह कई दावों को भी ट्रिगर कर सकता है। उदाहरण के लिए, यदि इवेंट प्रोसेसिंग इंजन में आने वाली घटना स्टॉक में कम उत्पाद आईडी है, तो यह "ऑर्डर उत्पाद आईडी" और "कर्मचारियों को सूचित करें" जैसी प्रतिक्रियाओं को ट्रिगर कर सकती है।<ref name="Michelson1"/>
घटना प्रोसेसिंग इंजन एक तार्किक परत है जो किसी घटना की पहचान करने और फिर उचित प्रतिक्रिया का चयन करने और निष्पादित करने के लिए जिम्मेदार है। यह कई दावों को भी ट्रिगर कर सकता है। उदाहरण के लिए, यदि घटना प्रोसेसिंग इंजन में आने वाली घटना स्टॉक में कम उत्पाद आईडी है, तो यह "ऑर्डर उत्पाद आईडी" और "कर्मचारियों को सूचित करें" जैसी प्रतिक्रियाओं को ट्रिगर कर सकती है।<ref name="Michelson1"/>




=== डाउनस्ट्रीम इवेंट-संचालित गतिविधि ===
=== डाउनस्ट्रीम घटना-संचालित गतिविधि ===
यह तार्किक परत है जहां घटना के परिणाम दिखाए जाते हैं। यह कई अलग-अलग तरीकों और रूपों में किया जा सकता है; उदाहरण के लिए, एक ईमेल किसी को भेजा जाता है और एक एप्लिकेशन स्क्रीन पर किसी प्रकार की चेतावनी प्रदर्शित कर सकता है।<ref name="Michelson1"/>सिंक (ईवेंट प्रोसेसिंग इंजन) द्वारा प्रदान किए गए स्वचालन के स्तर के आधार पर डाउनस्ट्रीम गतिविधि की आवश्यकता नहीं हो सकती है।
यह तार्किक परत है जहां घटना के परिणाम दिखाए जाते हैं। यह कई अलग-अलग तरीकों और रूपों में किया जा सकता है; उदाहरण के लिए, एक ईमेल किसी को भेजा जाता है और एक एप्लिकेशन स्क्रीन पर किसी प्रकार की चेतावनी प्रदर्शित कर सकता है।<ref name="Michelson1"/>सिंक (ईवेंट प्रोसेसिंग इंजन) द्वारा प्रदान किए गए स्वचालन के स्तर के आधार पर डाउनस्ट्रीम गतिविधि की आवश्यकता नहीं हो सकती है।


== इवेंट प्रोसेसिंग स्टाइल्स ==
== घटना प्रोसेसिंग स्टाइल्स ==
इवेंट प्रोसेसिंग की तीन सामान्य शैलियाँ हैं: सरल, धारा और जटिल। एक परिपक्व घटना-संचालित वास्तुकला में तीन शैलियों का अक्सर एक साथ उपयोग किया जाता है।<ref name="Michelson1">Brenda M. Michelson, Event-Driven Architecture Overview, ''Patricia Seybold Group'', February 2, 2006</ref>
घटना प्रोसेसिंग की तीन सामान्य शैलियाँ हैं: सरल, धारा और जटिल। एक परिपक्व घटना-संचालित वास्तुकला में तीन शैलियों का अधिकांशतःएक साथ उपयोग किया जाता है।<ref name="Michelson1">Brenda M. Michelson, Event-Driven Architecture Overview, ''Patricia Seybold Group'', February 2, 2006</ref>




=== सरल घटना प्रसंस्करण ===
=== सरल घटना प्रसंस्करण ===
सरल घटना प्रसंस्करण उन घटनाओं से संबंधित है जो स्थिति के विशिष्ट, औसत दर्जे के परिवर्तनों से सीधे संबंधित हैं। साधारण ईवेंट प्रोसेसिंग में, एक उल्लेखनीय घटना घटित होती है जो डाउनस्ट्रीम क्रिया(ओं) को आरंभ करती है। सरल घटना प्रसंस्करण का उपयोग आमतौर पर काम के वास्तविक समय के प्रवाह को चलाने के लिए किया जाता है, जिससे अंतराल समय और लागत कम हो जाती है।<ref name="Michelson1"/>
सरल घटना प्रसंस्करण उन घटनाओं से संबंधित है जो स्थिति के विशिष्ट, औसत दर्जे के परिवर्तनों से सीधे संबंधित हैं। साधारण ईवेंट प्रोसेसिंग में, एक उल्लेखनीय घटना घटित होती है जो डाउनस्ट्रीम क्रिया(ओं) को आरंभ करती है। सरल घटना प्रसंस्करण का उपयोग सामान्यतः काम के वास्तविक समय के प्रवाह को चलाने के लिए किया जाता है, जिससे अंतराल समय और लागत कम हो जाती है।<ref name="Michelson1"/>


उदाहरण के लिए, टायर के दबाव या परिवेश के तापमान में परिवर्तन का पता लगाने वाले सेंसर द्वारा साधारण घटनाओं का निर्माण किया जा सकता है। कार का टायर गलत दबाव सेंसर से एक साधारण घटना उत्पन्न करेगा जो चालक को टायर की स्थिति के बारे में सलाह देने वाली पीली रोशनी को ट्रिगर करेगा।
उदाहरण के लिए, टायर के दबाव या परिवेश के तापमान में परिवर्तन का पता लगाने वाले सेंसर द्वारा साधारण घटनाओं का निर्माण किया जा सकता है। कार का टायर गलत दबाव सेंसर से एक साधारण घटना उत्पन्न करेगा जो चालक को टायर की स्थिति के बारे में सलाह देने वाली पीली रोशनी को ट्रिगर करेगा।


===[[इवेंट स्ट्रीम प्रोसेसिंग]]===
===[[इवेंट स्ट्रीम प्रोसेसिंग|घटना स्ट्रीम प्रोसेसिंग]]===
इवेंट स्ट्रीम प्रोसेसिंग (ईएसपी) में सामान्य और उल्लेखनीय दोनों तरह की घटनाएं होती हैं। सामान्य घटनाओं (आदेशों, आरएफआईडी प्रसारण) को उल्लेखनीयता के लिए जांचा जाता है और सूचना ग्राहकों को प्रवाहित किया जाता है। इवेंट स्ट्रीम प्रोसेसिंग का उपयोग आमतौर पर उद्यम में और उसके आसपास सूचना के वास्तविक समय के प्रवाह को चलाने के लिए किया जाता है, जो समय पर निर्णय लेने में सक्षम बनाता है।<ref name="Michelson1"/>
घटना स्ट्रीम प्रोसेसिंग (ईएसपी) में सामान्य और उल्लेखनीय दोनों तरह की घटनाएं होती हैं। सामान्य घटनाओं (आदेशों, आरएफआईडी प्रसारण) को उल्लेखनीयता के लिए जांचा जाता है और सूचना ग्राहकों को प्रवाहित किया जाता है। घटना स्ट्रीम प्रोसेसिंग का उपयोग सामान्यतः उद्यम में और उसके आसपास सूचना के वास्तविक समय के प्रवाह को चलाने के लिए किया जाता है, जो समय पर निर्णय लेने में सक्षम बनाता है।<ref name="Michelson1"/>




=== [[जटिल घटना प्रसंस्करण]] ===
=== [[जटिल घटना प्रसंस्करण]] ===
कॉम्प्लेक्स इवेंट प्रोसेसिंग (सीईपी) सरल और सामान्य घटनाओं के पैटर्न को अनुमान लगाने की अनुमति देता है कि एक जटिल घटना हुई है। जटिल घटना प्रसंस्करण घटनाओं के संगम का मूल्यांकन करता है और फिर कार्रवाई करता है। घटनाएँ (उल्लेखनीय या साधारण) घटना प्रकारों को पार कर सकती हैं और लंबी अवधि में घटित हो सकती हैं। घटना सहसंबंध कारण, लौकिक या स्थानिक हो सकता है। सीईपी में परिष्कृत ईवेंट दुभाषियों, इवेंट पैटर्न की परिभाषा और मिलान, और सहसंबंध तकनीकों के रोजगार की आवश्यकता होती है। सीईपी का उपयोग आमतौर पर व्यावसायिक विसंगतियों, खतरों और अवसरों का पता लगाने और उनका जवाब देने के लिए किया जाता है।<ref name="Michelson1"/>
कॉम्प्लेक्स घटना प्रोसेसिंग (सीईपी) सरल और सामान्य घटनाओं के स्वरूपको अनुमान लगाने की अनुमति देता है कि एक जटिल घटना हुई है। जटिल घटना प्रसंस्करण घटनाओं के संगम का मूल्यांकन करता है और फिर कार्रवाई करता है। घटनाएँ (उल्लेखनीय या साधारण) घटना प्रकारों को पार कर सकती हैं और लंबी अवधि में घटित हो सकती हैं। घटना सहसंबंध कारण, लौकिक या स्थानिक हो सकता है। सीईपी में परिष्कृत ईवेंट दुभाषियों, घटना स्वरूपकी परिभाषा और मिलान, और सहसंबंध तकनीकों के रोजगार की आवश्यकता होती है। सीईपी का उपयोग सामान्यतः व्यावसायिक विसंगतियों, खतरों और अवसरों का पता लगाने और उनका जवाब देने के लिए किया जाता है।<ref name="Michelson1"/>




=== ऑनलाइन इवेंट प्रोसेसिंग ===
=== ऑनलाइन घटना प्रोसेसिंग ===
[[OLEP]] (OLEP) जटिल घटनाओं को संसाधित करने और लगातार डेटा को प्रबंधित करने के लिए अतुल्यकालिक वितरित ईवेंट-लॉग का उपयोग करता है।<ref>{{Cite web|url=https://queue.acm.org/detail.cfm?id=3321612|title=ऑनलाइन इवेंट प्रोसेसिंग - एसीएम कतार|website=queue.acm.org|access-date=2019-05-30}}</ref> ओएलईपी विषम प्रणालियों में एक जटिल परिदृश्य की संबंधित घटनाओं को मज़बूती से बनाने की अनुमति देता है। यह उच्च मापनीयता के साथ बहुत लचीले वितरण पैटर्न को सक्षम बनाता है और मजबूत स्थिरता प्रदान करता है। हालाँकि, यह प्रसंस्करण समय के लिए ऊपरी सीमा की गारंटी नहीं दे सकता है।
[[OLEP]] (OLEP) जटिल घटनाओं को संसाधित करने और लगातार डेटा को प्रबंधित करने के लिए अतुल्यकालिक वितरित ईवेंट-लॉग का उपयोग करता है।<ref>{{Cite web|url=https://queue.acm.org/detail.cfm?id=3321612|title=ऑनलाइन इवेंट प्रोसेसिंग - एसीएम कतार|website=queue.acm.org|access-date=2019-05-30}}</ref> ओएलईपी विषम प्रणालियों में एक जटिल परिदृश्य की संबंधित घटनाओं को मज़बूती से बनाने की अनुमति देता है। यह उच्च मापनीयता के साथ बहुत लचीले वितरण स्वरूपको सक्षम बनाता है और मजबूत स्थिरता प्रदान करता है।चूंकि, यह प्रसंस्करण समय के लिए ऊपरी सीमा की गारंटी नहीं दे सकता है।


== अत्यधिक ढीला युग्मन और अच्छी तरह से वितरित ==
== अत्यधिक ढीला युग्मन और अच्छी तरह से वितरित ==
एक घटना संचालित वास्तुकला अत्यंत शिथिल युग्मित और अच्छी तरह से वितरित है। इस वास्तुकला का महान वितरण मौजूद है क्योंकि एक घटना लगभग कुछ भी हो सकती है और लगभग कहीं भी मौजूद हो सकती है। वास्तुकला अत्यंत शिथिल युग्मित है क्योंकि घटना स्वयं इसके कारण के परिणामों के बारे में नहीं जानती है। उदा. यदि हमारे पास एक अलार्म सिस्टम है जो सामने का दरवाजा खुलने पर सूचना रिकॉर्ड करता है, तो दरवाजा खुद नहीं जानता है कि दरवाजा खुलने पर अलार्म सिस्टम सूचना जोड़ देगा, बस दरवाजा खोल दिया गया है।<ref name="Michelson1"/>
एक घटना संचालित वास्तुकला अत्यंत शिथिल युग्मित और अच्छी तरह से वितरित है। इस वास्तुकला का महान वितरण उपस्थित  है क्योंकि एक घटना लगभग कुछ भी हो सकती है और लगभग कहीं भी उपस्थित  हो सकती है। वास्तुकला अत्यंत शिथिल युग्मित है क्योंकि घटना स्वयं इसके कारण के परिणामों के बारे में नहीं जानती है। उदा. यदि हमारे पास एक अलार्म प्रणाली है जो सामने का दरवाजा खुलने पर सूचना रिकॉर्ड करता है, तो दरवाजा खुद नहीं जानता है कि दरवाजा खुलने पर अलार्म प्रणाली सूचना जोड़ देगा, बस दरवाजा खोल दिया गया है।<ref name="Michelson1"/>






=== सिमेंटिक कपलिंग और आगे का शोध ===
=== सिमेंटिक कपलिंग और आगे का शोध ===
घटना संचालित आर्किटेक्चर में स्थान, समय और तुल्यकालन के भीतर ढीला युग्मन है, सूचना विनिमय और वितरित वर्कफ़्लोज़ के लिए एक स्केलेबल बुनियादी ढांचा प्रदान करता है। हालांकि, इवेंट सब्सक्रिप्शन और पैटर्न के माध्यम से इवेंट-आर्किटेक्चर कसकर युग्मित हैं, अंतर्निहित इवेंट स्कीमा और मूल्यों के शब्दों के लिए। स्मार्ट शहरों और सेंसर वेब जैसे बड़े और खुले परिनियोजन में घटनाओं की सिमेंटिक विषमता का उच्च स्तर इवेंट-आधारित सिस्टम को विकसित करने और बनाए रखने में मुश्किल बनाता है। घटना-आधारित प्रणालियों के भीतर सिमेंटिक कपलिंग को संबोधित करने के लिए घटनाओं के अनुमानित सिमेंटिक मिलान का उपयोग अनुसंधान का एक सक्रिय क्षेत्र है।<ref>Hasan, Souleiman, Sean O’Riain, and Edward Curry. 2012. [http://www.edwardcurry.org/publications/Hasan_DEBS_2012.pdf “Approximate Semantic Matching of Heterogeneous Events.”] In 6th ACM International Conference on Distributed Event-Based Systems (DEBS 2012), 252–263. Berlin, Germany: ACM. [https://dx.doi.org/10.1145/2335484.2335512 “DOI”].</ref>
घटना संचालित वास्तुकला में स्थान, समय और तुल्यकालन के अन्दर ढीला युग्मन है, सूचना विनिमय और वितरित वर्कफ़्लोज़ के लिए एक स्केलेबल बुनियादी ढांचा प्रदान करता है। हालांकि, घटना सब्सक्रिप्शन और स्वरूपके माध्यम से घटना-वास्तुकला कसकर युग्मित हैं, अंतर्निहित घटना स्कीमा और मूल्यों के शब्दों के लिए। स्मार्ट शहरों और सेंसर वेब जैसे बड़े और खुले परिनियोजन में घटनाओं की सिमेंटिक विषमता का उच्च स्तर घटना-आधारित प्रणाली को विकसित करने और बनाए रखने में मुश्किल बनाता है। घटना-आधारित प्रणालियों के अन्दर सिमेंटिक कपलिंग को संबोधित करने के लिए घटनाओं के अनुमानित सिमेंटिक मिलान का उपयोग अनुसंधान का एक सक्रिय क्षेत्र है।<ref>Hasan, Souleiman, Sean O’Riain, and Edward Curry. 2012. [http://www.edwardcurry.org/publications/Hasan_DEBS_2012.pdf “Approximate Semantic Matching of Heterogeneous Events.”] In 6th ACM International Conference on Distributed Event-Based Systems (DEBS 2012), 252–263. Berlin, Germany: ACM. [https://dx.doi.org/10.1145/2335484.2335512 “DOI”].</ref>




Line 70: Line 72:


=== जावा स्विंग ===
=== जावा स्विंग ===
[[ जावा (प्रोग्रामिंग भाषा) ]] [[स्विंग (जावा)]] एपीआई एक इवेंट संचालित आर्किटेक्चर पर आधारित है। यह यूजर इंटरफेस से संबंधित घटकों और कार्यक्षमता प्रदान करने के लिए स्विंग के पीछे की प्रेरणा के साथ विशेष रूप से अच्छी तरह से काम करता है। एपीआई एक नामकरण सम्मेलन का उपयोग करता है (उदाहरण के लिए ActionListener और ActionEvent ) घटनाओं की चिंताओं को जोड़ने और व्यवस्थित करने के लिए। एक वर्ग जिसे किसी विशेष घटना के बारे में पता होना चाहिए, बस उपयुक्त श्रोता को लागू करता है, विरासत में मिली विधियों को ओवरराइड करता है, और फिर उस वस्तु में जोड़ा जाता है जो घटना को सक्रिय करता है। एक बहुत ही सरल उदाहरण हो सकता है:
[[ जावा (प्रोग्रामिंग भाषा) ]] [[स्विंग (जावा)]] एपीआई एक घटना संचालित वास्तुकला पर आधारित है। यह यूजर इंटरफेस से संबंधित घटकों और कार्यक्षमता प्रदान करने के लिए स्विंग के पीछे की प्रेरणा के साथ विशेष रूप से अच्छी तरह से काम करता है। एपीआई एक नामकरण सम्मेलन का उपयोग करता है (उदाहरण के लिए ActionListener और ActionEvent ) घटनाओं की चिंताओं को जोड़ने और व्यवस्थित करने के लिए। एक वर्ग जिसे किसी विशेष घटना के बारे में पता होना चाहिए, बस उपयुक्त श्रोता को लागू करता है, विरासत में मिली विधियों को ओवरराइड करता है, और फिर उस वस्तु में जोड़ा जाता है जो घटना को सक्रिय करता है। एक बहुत ही सरल उदाहरण हो सकता है:


<syntaxhighlight lang="java">
<syntaxhighlight lang="java">
Line 167: Line 169:


=== [[वस्तु पास्कल]] ===
=== [[वस्तु पास्कल]] ===
घटनाएँ ऑब्जेक्ट पास्कल भाषा के मूलभूत तत्वों में से एक हैं। यूनी-कास्ट मॉडल (वन-टू-वन) का उपयोग यहां किया जाता है, यानी प्रेषक केवल एक प्राप्तकर्ता को सूचना भेजता है। इस सीमा का लाभ यह है कि इसके लिए किसी विशेष ईवेंट श्रोता की आवश्यकता नहीं होती है। घटना स्वयं किसी अन्य वस्तु में एक विधि के लिए सूचक है। यदि पॉइंटर खाली नहीं है, तो जब कोई ईवेंट होता है, तो ईवेंट हैंडलर को कॉल किया जाता है। घटनाओं का उपयोग आमतौर पर उन कक्षाओं में किया जाता है जो जीयूआई का समर्थन करते हैं। हालाँकि, यह घटनाओं के लिए आवेदन का एकमात्र क्षेत्र नहीं है। निम्नलिखित कोड घटनाओं का उपयोग करने का एक उदाहरण है:
घटनाएँ ऑब्जेक्ट पास्कल भाषा के मूलभूत तत्वों में से एक हैं। यूनी-कास्ट मॉडल (वन-टू-वन) का उपयोग यहां किया जाता है, यानी प्रेषक केवल एक प्राप्तकर्ता को सूचना भेजता है। इस सीमा का लाभ यह है कि इसके लिए किसी विशेष ईवेंट श्रोता की आवश्यकता नहीं होती है। घटना स्वयं किसी अन्य वस्तु में एक विधि के लिए सूचक है। यदि पॉइंटर खाली नहीं है, तो जब कोई ईवेंट होता है, तो ईवेंट हैंडलर को कॉल किया जाता है। घटनाओं का उपयोग सामान्यतः उन कक्षाओं में किया जाता है जो जीयूआई का समर्थन करते हैं।चूंकि, यह घटनाओं के लिए आवेदन का एकमात्र क्षेत्र नहीं है। निम्नलिखित कोड घटनाओं का उपयोग करने का एक उदाहरण है:


<syntaxhighlight lang="delphi">
<syntaxhighlight lang="delphi">
unit MyCustomClass;   
unit MyCustomClass;   


Line 282: Line 284:
* [[अंतरिक्ष आधारित वास्तुकला]]
* [[अंतरिक्ष आधारित वास्तुकला]]
* जटिल घटना प्रसंस्करण
* जटिल घटना प्रसंस्करण
* इवेंट स्ट्रीम प्रोसेसिंग
* घटना स्ट्रीम प्रोसेसिंग
* [[इवेंट प्रोसेसिंग टेक्निकल सोसायटी]]
* [[इवेंट प्रोसेसिंग टेक्निकल सोसायटी|घटना प्रोसेसिंग टेक्निकल सोसायटी]]
* [[मंचित घटना-संचालित वास्तुकला]] (SEDA)
* [[मंचित घटना-संचालित वास्तुकला]] (SEDA)
* [[रिएक्टर पैटर्न]]
* [[रिएक्टर पैटर्न]]
Line 291: Line 293:
*EDA और SOA के बीच अंतर को परिभाषित करने वाला लेख: [http://soa-eda.blogspot.com/2006/11/how-eda-extends-soa-and-why-it-is.html EDA SOA का विस्तार कैसे करता है और क्यों यह महत्वपूर्ण है] जैक वैन हूफ द्वारा।
*EDA और SOA के बीच अंतर को परिभाषित करने वाला लेख: [http://soa-eda.blogspot.com/2006/11/how-eda-extends-soa-and-why-it-is.html EDA SOA का विस्तार कैसे करता है और क्यों यह महत्वपूर्ण है] जैक वैन हूफ द्वारा।
*किसी SOA में बहने वाली व्यावसायिक घटनाओं का वास्तविक-विश्व उदाहरण: [http://www.udidahan.com/2008/11/01/soa-eda-and-cep-a-wining-combo/ SOA, EDA, और CEP - एक विजेता कॉम्बो] उदी दहन द्वारा।
*किसी SOA में बहने वाली व्यावसायिक घटनाओं का वास्तविक-विश्व उदाहरण: [http://www.udidahan.com/2008/11/01/soa-eda-and-cep-a-wining-combo/ SOA, EDA, और CEP - एक विजेता कॉम्बो] उदी दहन द्वारा।
*इवेंट डेटा की अवधारणा का वर्णन करने वाला लेख: [https://web.archive.org/web/20160405073553/https://keen.io/blog/53958349217/analytics-for-hackers-how-to-think-about- हैकर्स के लिए इवेंट-डेटा एनालिटिक्स, मिशेल वेटज़लर द्वारा इवेंट डेटा के बारे में कैसे सोचें]। (वेब संग्रह)
*घटना डेटा की अवधारणा का वर्णन करने वाला लेख: [https://web.archive.org/web/20160405073553/https://keen.io/blog/53958349217/analytics-for-hackers-how-to-think-about- हैकर्स के लिए घटना-डेटा एनालिटिक्स, मिशेल वेटज़लर द्वारा घटना डेटा के बारे में कैसे सोचें]। (वेब संग्रह)


==संदर्भ==
==संदर्भ==

Revision as of 21:57, 7 March 2023

घटना-संचालित वास्तुकला (EDA) एक सॉफ़्टवेयर वास्तुशिल्प प्रतिमान है जो घटना (कंप्यूटिंग) के उत्पादन, पहचान, खपत और प्रतिक्रिया को बढ़ावा देता है।

अवलोकन

एक घटना को स्थिति (कंप्यूटर विज्ञान) में एक महत्वपूर्ण परिवर्तन के रूप में परिभाषित किया जा सकता है।[1] उदाहरण के लिए, जब कोई उपभोक्ता कार खरीदता है, तो कार की स्थिति बिक्री के लिए से बेची गई में परिवर्तित हो जाती है। एक कार विक्रेता की प्रणाली वास्तुकला इस स्थिति परिवर्तन को एक घटना के रूप में मान सकता है जिसकी घटना को वास्तुकला के अन्दर अन्य अनुप्रयोगों के लिए जाना जा सकता है। एक औपचारिक दृष्टिकोण से, जो उत्पादित, प्रकाशित, प्रचारित, पता लगाया या उपभोग किया जाता है, वह एक (सामान्यतः अतुल्यकालिक) संदेश होता है, जिसे घटना अधिसूचना कहा जाता है, न कि स्वयं घटना, जो स्थिति परिवर्तन है जो संदेश उत्सर्जन को ट्रिगर करता है। घटनाएँ यात्रा नहीं करतीं, वे बस घटित होती हैं।चूंकि, घटना शब्द का उपयोग अधिकांशतः अधिसूचना संदेश को निरूपित करने के लिए लाक्षणिक रूप का उपयोग किया जाता है, जिससे कुछ भ्रम हो सकता है। यह घटना-संचालित वास्तुकला के कारण अधिकांशतः 'संदेश-संचालित वास्तुकला' के ऊपर डिज़ाइन किया जा रहा है, जहां इस तरह के संचार स्वरूप में प्रत्येक संचार को कैसे संभाला जाना चाहिए, यह अंतर करने के लिए इनपुट में से एक को टेक्स्ट-ओनली, संदेश की आवश्यकता होती है।

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

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

घटना-संचालित वास्तुकला सेवा-उन्मुख वास्तुकला (SOA) का पूरक हो सकता है क्योंकि सेवाओं को आने वाली घटनाओं पर ट्रिगर द्वारा सक्रिय किया जा सकता है।[4][5]

यह प्रतिमान विशेष रूप से तब उपयोगी होता है जब सिंक कोई प्रदान नहीं करता है .

घटना-संचालित SOA|SOA 2.0 उन निहितार्थों को विकसित करता है जो SOA और EDA वास्तुकला एक नए ईवेंट स्वरूपबनाने के लिए पहले के अज्ञात कारण संबंधों का लाभ उठाकर एक समृद्ध, अधिक मजबूत स्तर प्रदान करते हैं।[vague] यह नया व्यापारिक सूचना स्वरूपआगे स्वायत्त मानव या स्वचालित प्रसंस्करण को ट्रिगर करता है जो मूल्य-वर्धित जानकारी को मान्यता प्राप्त स्वरूपमें इंजेक्ट करके उद्यम के लिए घातीय मूल्य जोड़ता है जो पहले प्राप्त नहीं किया जा सकता था।[vague]

घटना संरचना

एक ईवेंट को दो भागों में बनाया जा सकता है, घटना हेडर और घटना बॉडी। घटना हेडर में घटना का नाम, घटना के लिए टाइम स्टैम्प और घटना के प्रकार जैसी जानकारी शामिल हो सकती है। घटना बॉडी पता लगाए गए स्थिति परिवर्तन का विवरण प्रदान करती है। एक घटना निकाय को स्वरूपया तर्क के साथ भ्रमित नहीं होना चाहिए जो कि घटना की घटना की प्रतिक्रिया में लागू हो सकता है।

घटना प्रवाह परतें

एक घटना संचालित वास्तुकला को चार तार्किक परतों पर बनाया जा सकता है, जो एक घटना के संवेदन (यानी, एक महत्वपूर्ण अस्थायी स्थिति या तथ्य) से शुरू होती है, एक घटना संरचना के रूप में इसके तकनीकी प्रतिनिधित्व के निर्माण के लिए आगे बढ़ती है और एक गैर के साथ समाप्त होती है। उस घटना पर प्रतिक्रियाओं का खाली सेट।[6]


घटना प्रोड्यूसर

पहली तार्किक परत घटना निर्माता है, जो एक तथ्य को समझती है और एक घटना संदेश के रूप में उस तथ्य का प्रतिनिधित्व करती है। एक उदाहरण के रूप में, एक घटना प्रोड्यूसर एक ईमेल क्लाइंट, एक ई-कॉमर्स प्रणाली, एक मॉनिटरिंग एजेंट या किसी प्रकार का भौतिक सेंसर हो सकता है।

इस तरह के विविध डेटा स्रोतों से एकत्र किए गए डेटा को मूल्यांकन के लिए डेटा के एकल मानकीकृत रूप में परिवर्तित करना इस पहली तार्किक परत के डिजाइन और कार्यान्वयन में एक महत्वपूर्ण कार्य है।[6]हालाँकि, यह देखते हुए कि एक घटना एक जोरदार घोषणात्मक ढांचा है, किसी भी सूचनात्मक संचालन को आसानी से लागू किया जा सकता है, इस प्रकार उच्च स्तर के मानकीकरण की आवश्यकता समाप्त हो जाती है।[citation needed]

घटना चैनल

यह दूसरी तार्किक परत है। एक ईवेंट चैनल एक घटना जेनरेटर से ईवेंट इंजन में एकत्रित की गई जानकारी को प्रसारित करने का एक तंत्र है[6]यासिंको। यह एक टीसीपी/आईपी कनेक्शन, या किसी भी प्रकार की इनपुट फ़ाइल (फ्लैट, एक्सएमएल प्रारूप, ई-मेल, आदि) हो सकता है। एक ही समय में कई ईवेंट चैनल खोले जा सकते हैं। सामान्यतः, क्योंकि घटना प्रोसेसिंग इंजन को उन्हें लगभग वास्तविक समय में प्रोसेस करना होता है, घटना चैनल एसिंक्रोनस रूप से पढ़े जाएंगे। घटनाओं को एक कतार में संग्रहीत किया जाता है, बाद में घटना प्रोसेसिंग इंजन द्वारा संसाधित किए जाने की प्रतीक्षा की जाती है।

घटना प्रोसेसिंग इंजन

घटना प्रोसेसिंग इंजन एक तार्किक परत है जो किसी घटना की पहचान करने और फिर उचित प्रतिक्रिया का चयन करने और निष्पादित करने के लिए जिम्मेदार है। यह कई दावों को भी ट्रिगर कर सकता है। उदाहरण के लिए, यदि घटना प्रोसेसिंग इंजन में आने वाली घटना स्टॉक में कम उत्पाद आईडी है, तो यह "ऑर्डर उत्पाद आईडी" और "कर्मचारियों को सूचित करें" जैसी प्रतिक्रियाओं को ट्रिगर कर सकती है।[6]


डाउनस्ट्रीम घटना-संचालित गतिविधि

यह तार्किक परत है जहां घटना के परिणाम दिखाए जाते हैं। यह कई अलग-अलग तरीकों और रूपों में किया जा सकता है; उदाहरण के लिए, एक ईमेल किसी को भेजा जाता है और एक एप्लिकेशन स्क्रीन पर किसी प्रकार की चेतावनी प्रदर्शित कर सकता है।[6]सिंक (ईवेंट प्रोसेसिंग इंजन) द्वारा प्रदान किए गए स्वचालन के स्तर के आधार पर डाउनस्ट्रीम गतिविधि की आवश्यकता नहीं हो सकती है।

घटना प्रोसेसिंग स्टाइल्स

घटना प्रोसेसिंग की तीन सामान्य शैलियाँ हैं: सरल, धारा और जटिल। एक परिपक्व घटना-संचालित वास्तुकला में तीन शैलियों का अधिकांशतःएक साथ उपयोग किया जाता है।[6]


सरल घटना प्रसंस्करण

सरल घटना प्रसंस्करण उन घटनाओं से संबंधित है जो स्थिति के विशिष्ट, औसत दर्जे के परिवर्तनों से सीधे संबंधित हैं। साधारण ईवेंट प्रोसेसिंग में, एक उल्लेखनीय घटना घटित होती है जो डाउनस्ट्रीम क्रिया(ओं) को आरंभ करती है। सरल घटना प्रसंस्करण का उपयोग सामान्यतः काम के वास्तविक समय के प्रवाह को चलाने के लिए किया जाता है, जिससे अंतराल समय और लागत कम हो जाती है।[6]

उदाहरण के लिए, टायर के दबाव या परिवेश के तापमान में परिवर्तन का पता लगाने वाले सेंसर द्वारा साधारण घटनाओं का निर्माण किया जा सकता है। कार का टायर गलत दबाव सेंसर से एक साधारण घटना उत्पन्न करेगा जो चालक को टायर की स्थिति के बारे में सलाह देने वाली पीली रोशनी को ट्रिगर करेगा।

घटना स्ट्रीम प्रोसेसिंग

घटना स्ट्रीम प्रोसेसिंग (ईएसपी) में सामान्य और उल्लेखनीय दोनों तरह की घटनाएं होती हैं। सामान्य घटनाओं (आदेशों, आरएफआईडी प्रसारण) को उल्लेखनीयता के लिए जांचा जाता है और सूचना ग्राहकों को प्रवाहित किया जाता है। घटना स्ट्रीम प्रोसेसिंग का उपयोग सामान्यतः उद्यम में और उसके आसपास सूचना के वास्तविक समय के प्रवाह को चलाने के लिए किया जाता है, जो समय पर निर्णय लेने में सक्षम बनाता है।[6]


जटिल घटना प्रसंस्करण

कॉम्प्लेक्स घटना प्रोसेसिंग (सीईपी) सरल और सामान्य घटनाओं के स्वरूपको अनुमान लगाने की अनुमति देता है कि एक जटिल घटना हुई है। जटिल घटना प्रसंस्करण घटनाओं के संगम का मूल्यांकन करता है और फिर कार्रवाई करता है। घटनाएँ (उल्लेखनीय या साधारण) घटना प्रकारों को पार कर सकती हैं और लंबी अवधि में घटित हो सकती हैं। घटना सहसंबंध कारण, लौकिक या स्थानिक हो सकता है। सीईपी में परिष्कृत ईवेंट दुभाषियों, घटना स्वरूपकी परिभाषा और मिलान, और सहसंबंध तकनीकों के रोजगार की आवश्यकता होती है। सीईपी का उपयोग सामान्यतः व्यावसायिक विसंगतियों, खतरों और अवसरों का पता लगाने और उनका जवाब देने के लिए किया जाता है।[6]


ऑनलाइन घटना प्रोसेसिंग

OLEP (OLEP) जटिल घटनाओं को संसाधित करने और लगातार डेटा को प्रबंधित करने के लिए अतुल्यकालिक वितरित ईवेंट-लॉग का उपयोग करता है।[7] ओएलईपी विषम प्रणालियों में एक जटिल परिदृश्य की संबंधित घटनाओं को मज़बूती से बनाने की अनुमति देता है। यह उच्च मापनीयता के साथ बहुत लचीले वितरण स्वरूपको सक्षम बनाता है और मजबूत स्थिरता प्रदान करता है।चूंकि, यह प्रसंस्करण समय के लिए ऊपरी सीमा की गारंटी नहीं दे सकता है।

अत्यधिक ढीला युग्मन और अच्छी तरह से वितरित

एक घटना संचालित वास्तुकला अत्यंत शिथिल युग्मित और अच्छी तरह से वितरित है। इस वास्तुकला का महान वितरण उपस्थित है क्योंकि एक घटना लगभग कुछ भी हो सकती है और लगभग कहीं भी उपस्थित हो सकती है। वास्तुकला अत्यंत शिथिल युग्मित है क्योंकि घटना स्वयं इसके कारण के परिणामों के बारे में नहीं जानती है। उदा. यदि हमारे पास एक अलार्म प्रणाली है जो सामने का दरवाजा खुलने पर सूचना रिकॉर्ड करता है, तो दरवाजा खुद नहीं जानता है कि दरवाजा खुलने पर अलार्म प्रणाली सूचना जोड़ देगा, बस दरवाजा खोल दिया गया है।[6]


सिमेंटिक कपलिंग और आगे का शोध

घटना संचालित वास्तुकला में स्थान, समय और तुल्यकालन के अन्दर ढीला युग्मन है, सूचना विनिमय और वितरित वर्कफ़्लोज़ के लिए एक स्केलेबल बुनियादी ढांचा प्रदान करता है। हालांकि, घटना सब्सक्रिप्शन और स्वरूपके माध्यम से घटना-वास्तुकला कसकर युग्मित हैं, अंतर्निहित घटना स्कीमा और मूल्यों के शब्दों के लिए। स्मार्ट शहरों और सेंसर वेब जैसे बड़े और खुले परिनियोजन में घटनाओं की सिमेंटिक विषमता का उच्च स्तर घटना-आधारित प्रणाली को विकसित करने और बनाए रखने में मुश्किल बनाता है। घटना-आधारित प्रणालियों के अन्दर सिमेंटिक कपलिंग को संबोधित करने के लिए घटनाओं के अनुमानित सिमेंटिक मिलान का उपयोग अनुसंधान का एक सक्रिय क्षेत्र है।[8]


कार्यान्वयन और उदाहरण

जावा स्विंग

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

public class FooPanel extends JPanel implements ActionListener {
    public FooPanel() {
        super();

        JButton btn = new JButton("Click Me!");
        btn.addActionListener(this);

        this.add(btn);
    }

    @Override
    public void actionPerformed(ActionEvent ae) {
        System.out.println("Button has been clicked!");
    }
}

वैकल्पिक रूप से, एक अन्य कार्यान्वयन विकल्प श्रोता को ऑब्जेक्ट में क्लास (कंप्यूटर प्रोग्रामिंग) के रूप में जोड़ना है # अनाम और इस प्रकार लैम्ब्डा नोटेशन (जावा 1.8 के बाद से) का उपयोग करना है। नीचे एक उदाहरण है।

public class FooPanel extends JPanel {
    public FooPanel() {
        super();

        JButton btn = new JButton("Click Me!");
        btn.addActionListener(ae -> System.out.println("Button has been clicked!"));
        this.add(btn);
    }
}


जावास्क्रिप्ट

(() => {
  'use strict';

  class EventEmitter {
    constructor() {
      this.events = new Map();
    }

    on(event, listener) {
      if (typeof listener !== 'function') {
        throw new TypeError('The listener must be a function');
      }
      let listeners = this.events.get(event);
      if (!listeners) {
        listeners = new Set();
        this.events.set(event, listeners); 
      }
      listeners.add(listener);
      return this;
    }

    off(event, listener) {
      if (!arguments.length) {
        this.events.clear();
      } else if (arguments.length === 1) {
        this.events.delete(event);
      } else {
        const listeners = this.events.get(event);
        if (listeners) {
          listeners.delete(listener);
        }
      }
      return this;
    }

    emit(event, ...args) {
      const listeners = this.events.get(event);
      if (listeners) {
        for (let listener of listeners) {
          listener.apply(this, args);
        }
      }
      return this;
    }
  }

  this.EventEmitter = EventEmitter;
})();

उपयोग:

const events = new EventEmitter();
events.on('foo', () => { console.log('foo'); });
events.emit('foo'); // Prints "foo"
events.off('foo');
events.emit('foo'); // Nothing will happen


वस्तु पास्कल

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

unit MyCustomClass;  

interface

uses
  Classes;
  
type
  {definition of your own event}
  TAccidentEvent = procedure(Sender: TObject; const AValue: Integer) of object;

  TMyCustomObject = class(TObject)
  private
    FData: Integer;              // an example of a simple field in a class
    FOnAccident: TAccidentEvent; // event - reference to a method in some object
    FOnChange: TNotifyEvent;     // event - reference to a method in some object 
    procedure SetData(Value: Integer); // a method that sets the value of a field in the class 
  protected
    procedure DoAccident(const AValue: Integer); virtual; // a method that generates an event based on your own definition 
    procedure DoChange; // a method that generates an event based on a definition from the VCL library 
  public
    constructor Create; virtual;   // class constructor 
    destructor Destroy; override;  // class destructor
  published
    property Data: TAccidentEvent read FData write SetData; // declaration of a property in a class
    property OnAccident: TAccidentEvent read FOnAccident write FOnAccident; // exposing the event outside the class
    property OnChange: TNotifyEvent read FOnChange write FOnChange;         // exposing the event outside the class
    procedure MultiplyBy(const AValue: Integer);  // a method that uses its own definition of the event
  end;
  
implementation

constructor TMyCustomObject.Create;
begin
  FData := 0;
end;

destructor TMyCustomObject.Destroy;
begin
  FData := 0;
  inherited Destroy;
end;

procedure TMyCustomObject.DoAccident(const AValue: Integer);
begin
  if Assigned(FOnAccident)
   then FOnAccident(Self, AValue);
end;

procedure TMyCustomObject.DoChange;
begin
  if Assigned(FOnChange)
   then FOnChange(Self);
end;

procedure TMyCustomObject.MultiplyBy(const AValue: Integer);
begin
  FData := FData * AValue;
  if FData > 1000000
   then DoAccident(FData);
end;

procedure TMyCustomObject.SetData(Value: Integer);
begin
  if FData <> Value
   then
    begin
     FData := Value;
     DoChange;
    end;
end.

निर्मित वर्ग का उपयोग इस प्रकार किया जा सकता है:

...
procedure TMyForm.ShowCustomInfo(Sender: TObject);
begin
  if Sender is TMyCustomObject
   then ShowMessage('Data has changed.');
end;

procedure TMyForm.PerformAcident(Sender: TObject; const AValue: Integer);
begin
  if Sender is TMyCustomObject
   then ShowMessage('The data has exceeded 1000000! New value is: ' + AValue.ToString);
end;
...
{declaring a variable that is an object of the specified class}
var
  LMyObject: TMyCustomObject; 
...
{creation of the object}
LMyObject := TMyCustomObject.Create;
...
{assigning a methods to an events}
LMyObject.OnChange := MyForm.ShowCustomInfo;
LMyObject.OnAccident := MyForm.PerformAcident;
...
{removing an object when it is no longer needed}
LMyObject.Free; 
...


यह भी देखें

लेख

संदर्भ

  1. K. Mani Chandy Event-driven Applications: Costs, Benefits and Design Approaches, California Institute of Technology, 2006
  2. Martin Fowler, Event Sourcing, December, 2005
  3. Martin Fowler, Parallel Model, December, 2005
  4. Hanson, Jeff (January 31, 2005). "SOA में घटना-संचालित सेवाएं". JavaWorld. Retrieved 2020-07-21.
  5. Sliwa, Carol (May 12, 2003). "घटना-संचालित वास्तुकला व्यापक रूप से अपनाने के लिए तैयार है". Computerworld. Retrieved 2020-07-21.
  6. 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 Brenda M. Michelson, Event-Driven Architecture Overview, Patricia Seybold Group, February 2, 2006
  7. "ऑनलाइन इवेंट प्रोसेसिंग - एसीएम कतार". queue.acm.org. Retrieved 2019-05-30.
  8. Hasan, Souleiman, Sean O’Riain, and Edward Curry. 2012. “Approximate Semantic Matching of Heterogeneous Events.” In 6th ACM International Conference on Distributed Event-Based Systems (DEBS 2012), 252–263. Berlin, Germany: ACM. “DOI”.


बाहरी संबंध