2013-03-21 5 views
48

मैं सिर्फ स्कैला अभिनेताओं बनाम जावा धागे के प्रदर्शन की तुलना कर रहा था।स्कैला/अक्का अभिनेताओं की तुलना में जावा धागे भारी कैसे हैं?

मैं अंतर देखने के लिए आश्चर्यचकित था, मैंने देखा कि मेरे सिस्टम के साथ मैं केवल अधिकतम ~ 2000 थ्रेड (एक समय में रहना) उत्पन्न करने में सक्षम था लेकिन उसी प्रणाली के साथ मैं स्केल के ~ 500,000 कलाकारों को फैलाने में सक्षम था।

दोनों कार्यक्रमों ने JVM की लगभग 81 एमबी हीप मेमोरी का उपयोग किया।

क्या आप समझा सकते हैं कि कैसे जावा धागा स्केल/अक्का अभिनेताओं की तुलना में यह भारी वजन है? स्कैला-अभिनेता को इतना हल्का वजन बनाने वाला मुख्य कारक क्या है?

यदि मैं सर्वोत्तम स्केलेबिलिटी प्राप्त करना चाहता हूं, तो क्या मुझे जावा आधारित पारंपरिक वेब/ऐप सर्वर जैसे जेबॉस या टॉमकैट के बजाय अभिनेता आधारित वेब सर्वर के लिए जाना चाहिए?

धन्यवाद।

+3

आपके वेब सर्वर प्रश्न के लिए, यह आपके लिए आवश्यक चीज़ों पर निर्भर करता है। नेटी जैसे एनआईओ के आधार पर उच्च थ्रूपुट पर वास्तव में स्केलेबल समाधान हैं, और वे अभिनेताओं का उपयोग नहीं करते हैं। क्या आपको एक पूर्ण उड़ा हुआ वेब सर्वर चाहिए? उच्च यातायात सेवाएं? ज्ञात ढांचे के साथ उच्च एकीकरण (जी, वसंत, ...)? आम तौर पर अभिनेता, और अकका 2.1 विशेष रूप से क्लस्टरिंग या खेलने के लिए समर्थन के साथ! जो अक्का पर आधारित है, भी एक "स्केलेबल" समाधान है, लेकिन सभी परिदृश्यों के लिए कोई चांदी की बुलेट नहीं है। यह वास्तव में आपकी जरूरतों पर निर्भर करता है। –

उत्तर

37

स्कैला अभिनेता (अक्का विविधता सहित) जावा थ्रेड का उपयोग करते हैं। कोई जादू नहीं है: एक साथ चल रहे कुछ हज़ार धागे से अधिकतर अधिकांश डेस्कटॉप मशीनों के लिए एक समस्या है।

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

Akka docs मूल बातें अच्छी तरह से समझाएं।

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

+0

मुझे यकीन नहीं है कि डॉक्स आपके द्वारा लिखे गए समर्थन का समर्थन करते हैं, क्योंकि वे कहते हैं "... आमतौर पर कई कलाकार एक थ्रेड साझा करते हैं"। – Suma

+2

@ सुमा - मुझे नहीं लगता कि आप मेरा दूसरा पैराग्राफ समझ गए हैं। –

16

एक अक्का अभिनेता धागे के बराबर नहीं है। यह Callable जैसा है जो थ्रेडपूल पर निष्पादित किया जाता है।

जब एक अभिनेता को एक संदेश भेजा जाता है, तो उस अभिनेता को संदेश को संसाधित करने के लिए थ्रेडपूल पर रखा जाता है। जब यह किया जाता है, तो पूल किए गए थ्रेड का उपयोग अन्य अभिनेताओं को निष्पादित करने के लिए किया जा सकता है।

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