जेएमएस के बजाय स्काला के अभिनेताओं के पक्ष में कौन से डिजाइन निर्णय होंगे?


83

जेएमएस के बजाय स्काला एक्टर्स का उपयोग करने में क्या अंतर हैं?

उदाहरण के लिए एक प्रदर्शन और मापनीयता के परिप्रेक्ष्य में, स्केल अभिनेता मॉडल जेएमएस की तुलना में क्या जोड़ता है? किन मामलों में JMS के बजाय अभिनेताओं का उपयोग करना अधिक समझ में आता है, अर्थात अभिनेता किन समस्याओं को हल करता है जिन्हें JMS कवर नहीं कर सकता है?

जवाबों:


113

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

एक अभिनेता के बराबर निकटतम जेएमएस एक संदेश संचालित बीन होगा जो एक गैर-स्थिर, गैर-लेन-देन, गैर-पब / उप कतार द्वारा समर्थित है। मुझे लगता है कि एक "सरल जेएमएस बीन" कॉल करूँगा।

अब, आपके प्रश्नों के लिए।

प्रदर्शन एक कठिन बात है क्योंकि जेएमएस कार्यान्वयन के बजाय एक विनिर्देश है। साधारण JMS बीन का उपयोग करते समय कोई भी कम नहीं, मैं प्रदर्शन की उम्मीद करता हूं कि समय और स्मृति में अभिनेता के लिए शायद ही एक किनारे के समान हो। जैसा कि आप पब / उप, लेनदेन, आदि जैसे जेएमएस की क्षमताओं को जोड़ते हैं, स्वाभाविक रूप से प्रदर्शन आगे भी कम हो जाएगा, लेकिन फिर आप सेब की तुलना संतरे से करने की कोशिश कर रहे हैं।

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

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

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

जिस तरह से, एक स्काला अभिनेता पुस्तकालय है कि स्थानों में और अधिक चाल है कि JMS कवर देखने के लिए तक अक्का । अक्का कई आम अभिनेता पदानुक्रम रणनीतियों के लिए एक घोषणात्मक दृष्टिकोण भी लाता है।


मुझे लगता है कि मैंने इसे कवर किया है। मैंने स्पष्ट करने के लिए पिछले कुछ पैराग्राफ को अपडेट किया है और मैंने अभिनेता पदानुक्रमों के बारे में भी थोड़ा समझाया है।
जेम्स आइरी

2
क्रिस्टियन, बिल्कुल नहीं। अक्का अभिनेता आम तौर पर स्काला अभिनेताओं की तुलना में अधिक हल्के होते हैं। हालांकि, उनकी एपीआई और कॉन्फ़िगरेशन सेटिंग्स थोड़ी अधिक जटिल हैं। जब मैं विलंबता / थ्रूपुट कोई समस्या नहीं है (उदाहरण के लिए, काम करने वाले कार्यकर्ता कार्यों के लिए), और अक्का अभिनेताओं के लिए, जब वे होते हैं, या यदि मुझे पर्यवेक्षण की आवश्यकता होती है, तो मैं स्काला एक्टर्स का उपयोग करता हूं।
अलेक्जेंडर टेमेरेव

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