2016-02-05 7 views
9

मुझे पता है कि यह एक बहुत ही कमजोर सवाल है और इसे ढेर के लिए अनुचित समझा जा सकता है। दुर्भाग्यवश छोटे अनुप्रयोग (कलाकारों की संख्या के मामले में) और 'ट्यूटोरियल जैसी' संदेश संदेश प्रेषण के ऊपरी हिस्से के बारे में अंतर्ज्ञान विकसित करने में मदद नहीं करते हैं और 'स्केल ऑब्जेक्ट' और 'कॉर्बा ऑब्जेक्ट' के बीच ग्रैन्युलरिटी के लिए एक तेज स्थान की सहायता नहीं करते हैं। ।अक्का अभिनेता कितने भारी हैं?

हालांकि निश्चित रूप से एक ग्राहक के साथ वार्तालाप की स्थिति को बनाए रखने के लिए उदाहरण के लिए एक अभिनेता का हकदार है, ज्यादातर वास्तविक उपयोग मामलों में इसमें कई वर्गों द्वारा सशर्त/समांतर/वैकल्पिक इंटरैक्शन शामिल होंगे। यह अभिनेताओं को काफी जटिल सेवाओं के लिए मुखौटा के रूप में पसंद करता है, जैसे कि केवल सेवानिवृत्त ईजेबी, या छोटे-छोटे ऑब्जेक्ट्स के समान, एक-दूसरे के बीच संदेशों को फायर करना, जब भी संचार को असीमित तरीके से कार्यान्वित किया जा सकता है।

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

इस प्रश्न के लिए हम मान सकते हैं कि संचार का विशाल बहुमत एक मशीन के भीतर होता है और नेटवर्क क्रॉसिंग महत्वहीन होता है।

उत्तर

8

मुझे यकीन नहीं है कि आपका मतलब है कि "संदेश भेजने के ऊपरी भाग" से आपका क्या मतलब है। जब नेटवर्क/क्रमबद्धता शामिल नहीं होती है तो ओवरहेड नगण्य है: एक तरफ एक कतार में एक संदेश धक्का देता है, दूसरा इसे से पढ़ता है।

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

एक स्मृति पदचिह्न भी बहुत छोटा है। अक्का खुद का दावा है कि आपके पास केवल 1 जीबी ढेर के लिए ~ 2.5 मिलियन अभिनेता हो सकते हैं। तुलना करें कि यह एक सामान्य प्रणाली है, वास्तव में, कुछ भी नहीं।

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

अंतिम बिंदु यह है कि आपको एक संदर्भ में अक्का ओवरहेड की तुलना करनी चाहिए। उदाहरण के लिए, यदि आपका सिस्टम डेटाबेस क्वेरी कर रहा है, या HTTP अनुरोधों की सेवा/प्रदर्शन कर रहा है, या यहां तक ​​कि कुछ प्रकार के महत्वपूर्ण आईओ भी कर रहा है, तो संभवतया इन गतिविधियों के ऊपर की ओर अक्का के ऊपरी हिस्से को इतना महत्वहीन बनाता है ताकि आप इसके बारे में सोचने से भी परेशान न हों। 50 मिलियन के लिए डीबी को एक राउंडट्रिप की तरह ~ 2.5 लाख अक्का संदेश से ओवरहेड के बराबर होगा। फर्क पड़ता है क्या?

तो क्या आपको एक एज केस परिदृश्य मिल सकता है जहां अक्का आपको प्रदर्शन दंड का भुगतान करने के लिए मजबूर करेगी? शायद। अक्का एक सुनहरा हथौड़ा नहीं है (और कुछ भी नहीं है)।
लेकिन सभी उपरोक्त दिमाग में आपको यह सोचना चाहिए कि क्या यह अक्का है जो आपके विशिष्ट संदर्भ में प्रदर्शन बाधा है या आप माइक्रो-ऑप्टिमाइज़ेशन में समय बर्बाद कर रहे हैं।

+1

कुछ कठिन संख्याओं के लिए धन्यवाद। मैं व्यक्तिगत यूडीपी/आईपी पैकेट को संभालने के संदर्भ में इसके बारे में सोच रहा था, जहां एक अभिनेता को उनमें से प्रत्येक का ध्यान रखना होगा और वार्तालाप को पहचानने के बाद ही यह जिम्मेदार अभिनेता को सौंपने का एक हिस्सा है, अक्सर जगह पर बनाया गया। हालांकि विवाद के उस बिंदु को हटाना संभव है, यह जटिलता में काफी वृद्धि करेगा और कभी भी ग्राहकों को पूरी तरह से पारगमन नहीं करेगा, जो कि बहुत कम छोटे स्तर के डिवाइस हैं जो केवल बहुत ही सरल सॉफ्टवेयर चला सकते हैं। – Turin

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