क्या अक्का ने जेएमएस / एएमक्यूपी के दलालों को अश्लील संदेश दिया है? [बन्द है]


19

मैंने पिछले सप्ताह डीप डाइविंग को अक्का डॉक्स में बिताया और अंत में समझा कि एक्टर सिस्टम क्या हैं, और वे समस्याएं जो वे हल करते हैं।

मेरी समझ (और अनुभव) पारंपरिक जेएमएस / एएमक्यूपी संदेश दलालों के लिए है कि वे निम्नलिखित प्रदान करने के लिए मौजूद हैं:

  • निर्माता और उपभोक्ता के बीच अतुल्यकालिक प्रसंस्करण; तथा
  • संदेश वितरण की गारंटी, दृढ़ता, वापसी और कमियां शामिल हैं

लेकिन क्या अक्का सभी आवश्यक बुनियादी ढांचे और परिचालन ओवरहेड के बिना यह प्रदान नहीं करता है?

  • अक्का में, सभी अभिनेता संचार अतुल्यकालिक और गैर-अवरोधक हैं; तथा
  • अक्का में, वापसी, SupervisorStrategiesपतन और वृद्धि को पूरा करने के लिए मौजूद हैं। अभिनेताओं को लगभग किसी भी प्रकार के स्टोर के लिए बनाए रखने के लिए कॉन्फ़िगर किया जा सकता है , अगर यह एक आवश्यकता भी है।

तो इससे मुझे आश्चर्य हो रहा है: यदि मेरा ऐप अक्का का उपयोग करता है, तो क्या मुझे कभी जेएमएस / एएमक्यूपी दलालों (जैसे ActiveMQ, RabbitMQ, Kafka) को तस्वीर में लाने की आवश्यकता है? दूसरे शब्दों में, क्या कभी कोई उपयोग का मामला है जहां एक नया अक्का-आधारित ऐप फिर एक नए जेएमएस / एएमक्यूपी ब्रोकर क्लस्टर की शुरूआत करेगा ? क्यों या क्यों नहीं?

एकमात्र तर्क यह होगा कि शायद मेरे अक्का ऐप को किसी अन्य सिस्टम के साथ एकीकृत करना है। लेकिन उस मामले में, अक्का-कैमल मॉड्यूल अक्का को ऊंट की थकावट में टैप करने की अनुमति देता है, एकीकरण क्षमताओं की लगभग अनंत सूची (टीसीपी, एफ़टीपी, ज़ीरोएमक्यू, सूची आगे बढ़ती है ...)।

विचार?


3
क्या आपका आखिरी पैराग्राफ एक कारण नहीं है कि अक्का संदेश दलालों को अप्रचलित क्यों नहीं करता है? उदाहरण के लिए, मैं एक जावा एप्लिकेशन पर काम कर रहा हूं जो जेएमएस-अनुरूप संदेश ब्रोकर के माध्यम से रिमोट सी ++ अनुप्रयोगों के साथ इंटरैक्ट करता है। मैं अक्का-कैमल का उपयोग करके अपने जावा एप्लिकेशन को लिख सकता हूं, लेकिन मुझे सी ++ एप्लिकेशन की वजह से ब्रोकर की आवश्यकता होगी।
थॉमस ओवेन्स

अहह धन्यवाद @ThomasOwens (+1) लेकिन आपके पास (सही है तो) मेरे सवाल को गलत समझा। मैं कुछ ही मिनटों में शब्द बदल दूंगा ताकि इसकी अधिक स्पष्टता हो। मैं वास्तव में क्या पूछ रहा हूं: यदि मैं अक्का ऐप बना रहा हूं, तो क्या मुझे कभी भी एक नया जेएमएस / एएमक्यूपी ब्रोकर पेश करना होगा ? मुझे लगता है कि उत्तर "नहीं" है, क्योंकि अक्का + ऊंट (फिर से मुझे लगता है ) एक दलाल द्वारा आमतौर पर हल की गई सभी समस्याओं को हल करता है। आपके उदाहरण में, JMS ब्रोकर पहले से ही C ++ ऐप के साथ संवाद करने के तरीके के रूप में मौजूद है ; मैं इसे अपने नए अक्का ऐप के साथ नहीं जोड़ रहा हूं। और इसलिए अक्का-कैमल मॉड्यूल मेरे लिए संदेश भेजने का ध्यान रखेगा।
13

2
शायद मैं गलत समझ रहा हूं, लेकिन कैमल जेएमएस (उदाहरण के लिए) को प्रतिस्थापित नहीं करता है, लेकिन यह एक इंटरफ़ेस प्रदान करता है जिसका उपयोग एमएमएस के माध्यम से संदेश भेजने के लिए किया जा सकता है। आप JMS को AMQP, RabbitMQ, या XMPP से बदल सकते हैं। मेरे उदाहरण में, यहां तक ​​कि अगर मेरे जावा + अक्का और सी ++ एप्लिकेशन नए थे, तो उनके लिए जेएमएस पर संवाद करने के लिए, मुझे अभी भी किसी तरह के जेएमएस-अनुरूप संदेश कतार को पेश करना होगा और फिर मैं अक्का-कैमल का उपयोग कर सकता हूं। इसके साथ संवाद करें। ऊंट एक दलाल प्रदान नहीं करता है, बस कई प्रोटोकॉल के भीतर संचार के लिए साधन है। अक्का-कैमल, कैमल के इंटरफेस पर अधिक परिचित इंटरफ़ेस प्रदान करता है।
थॉमस ओवेन्स

धन्यवाद फिर से @ThomasOwens (+1) - मुझे लगता है कि आप बस इस अतिरेक को दूर कर रहे हैं। आपके उदाहरण में एक मौजूदा C ++ ऐप है - शायद कुछ विरासत प्रणाली, और एक मौजूदा JMS-अनुरूप ब्रोकर है जो C ++ ऐप पहले से ही बाहरी दुनिया के साथ एकीकरण के लिए उपयोग करता है। इस मामले में, मेरा नया अक्का ऐप होगा - जैसे आपने कहा - इस ब्रोकर से संदेशों का निर्माण / उपभोग करने के लिए अक्का-ऊंट मॉड्यूल का उपयोग करें। लेकिन यह वह नहीं है जो मैं यहाँ पूछ रहा हूँ! मैं सोच रहा था कि क्या कभी कोई कारण है कि मुझे 2 चीजों का निर्माण करने की आवश्यकता होगी : (1) मेरा नया अक्का ऐप, और (2) एक ही समय में एक
जेएमएस

3
आप ऊंट की अनंत एकीकरण क्षमताओं का उल्लेख करते हैं, लेकिन यह कुछ भी नहीं के साथ एकीकृत कर सकते हैं। इसे एकीकृत करने के लिए कुछ होना चाहिए, अन्यथा आप सेवाओं के एक समूह के लिए समर्थन का आनंद ले रहे हैं जो आप नहीं चला रहे हैं। यदि आप किसी चीज़ के साथ एकीकरण करने के लिए कैमल का उपयोग करना चाहते हैं, तो JMS, या एक HTTP या FTP सर्वर या कुछ को किक करें। अन्यथा यह केवल आनंद के साथ अनंत एकीकरण क्षमता प्रदान कर रहा है जबकि कुछ भी नहीं के साथ एकीकरण।
जिमी हॉफ

जवाबों:


12

अभिनेता मॉडल

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

अक्का एक ढांचा है जो अभिनेता मॉडल को लागू करता है और आपको पहले से निर्मित सभी बुनियादी सुविधाओं और सुविधाओं के साथ अभिनेता प्रणालियों का निर्माण करने की अनुमति देता है (जैसे जावास्क्रिप्ट के बजाय JQuery का उपयोग करना)।

संदेश

संदेश प्रणाली ऐसे अनुप्रयोग हैं जो संदेश भेज और पुनः प्राप्त कर सकते हैं। विषयों, पब / उप, दृढ़ता और अन्य विशेषताओं के साथ बुनियादी कतारों से लेकर बड़े उद्यम सॉफ्टवेयर तक कई किस्में हैं लेकिन अंतिम लक्ष्य समान है। कुछ बाइट्स को कहीं सहेजें और बाद में उन्हें पुनः प्राप्त करें, किसी प्रकार के ऑर्डर के साथ। आज प्राथमिक उपयोग का मामला विभिन्न प्रणालियों या गति पर अतुल्यकालिक प्रसंस्करण के लिए प्रणालियों को अपघटित करने और अनुमति देने का है। RabbitMQ, NATS, Kafka, आदि संदेश प्रणालियों के सभी उदाहरण हैं।

तुलना

अभिनेता मॉडल और अक्का ढांचा निम्न-स्तरीय उपकरण हैं जो एप्लिकेशन बनाने का एक शानदार तरीका हैं , जैसे संदेश कतार।

क्या आप संदेश कतार के बजाय अक्का का उपयोग कर सकते हैं? ज़रूर। यदि आप ऐसे सॉफ़्टवेयर का निर्माण कर रहे हैं जो पहले से ही अभिनेता मॉडल का उपयोग करता है, तो आपको शायद एक बाहरी संदेश कतार की आवश्यकता नहीं है, विशेष रूप से उसी धागे या एप्लिकेशन के भीतर संदेश भेजने के लिए। आप अन्य मशीनों पर चलने वाले अन्य अभिनेता प्रणालियों को संदेश भेजने के लिए अक्का रीमोटिंग क्षमताओं का उपयोग कर सकते हैं।

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

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


एसओ पर इस महान अभिनेता मॉडल बनाम संदेश के बारे में बहुत अच्छा जवाब है: /programming/5693346/when-to-use-actors-instead-of-messaging-solutions-such-as-websphere-mq- या-TIBCO

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