मैं जावा से आ रहा हूं, जहां मैं Runnable
एस को ExecutorService
पर थ्रेड पूल द्वारा समर्थित करता हूं। जावा में यह बहुत स्पष्ट है कि थ्रेड पूल के आकार में सीमा निर्धारित कैसे करें।स्कैला में कलाकारों का उपयोग करते समय समवर्ती सीमा को कैसे सीमित करें?
मुझे स्कैला कलाकारों का उपयोग करने में दिलचस्पी है, लेकिन मैं अस्पष्टता को सीमित करने के बारे में अस्पष्ट हूं।
चलिए बस कहें, कल्पनात्मक रूप से, कि मैं एक वेब सेवा बना रहा हूं जो "नौकरियां" स्वीकार करता है। नौकरी POST
अनुरोधों के साथ जमा की जाती है, और मैं चाहता हूं कि मेरी सेवा नौकरी को लागू करे, फिर तुरंत 202 Accepted
लौटाएं - यानी नौकरियां असीमित रूप से संभाली जाती हैं।
यदि मैं कतार में नौकरियों को संसाधित करने के लिए कलाकारों का उपयोग कर रहा हूं, तो मैं संसाधित नौकरियों की संख्या को कैसे सीमित कर सकता हूं?
मैं इस दृष्टिकोण के कुछ अलग तरीकों के बारे में सोच सकता हूं; मैं सोच रहा हूं कि क्या कोई समुदाय सर्वोत्तम अभ्यास है, या कम से कम, कुछ स्पष्ट रूप से स्थापित दृष्टिकोण जो स्कैला दुनिया में कुछ हद तक मानक हैं।
एक दृष्टिकोण मैंने सोचा है कि एक समन्वयक अभिनेता है जो नौकरी कतार और नौकरी प्रसंस्करण अभिनेताओं का प्रबंधन करेगा; मुझे लगता है कि यह एक साधारण int फ़ील्ड का उपयोग करके ट्रैक कर सकता है कि वर्तमान में कितनी नौकरियां संसाधित की जा रही हैं। मुझे यकीन है कि उस दृष्टिकोण के साथ कुछ गड़बड़ियां होंगी, हालांकि, जब कोई त्रुटि होती है तो ट्रैक को ट्रैक करना सुनिश्चित होता है ताकि संख्या कम हो सके। यही कारण है कि मैं सोच रहा हूं कि क्या स्कैला पहले से ही एक सरल या अधिक encapsulated दृष्टिकोण प्रदान करता है।
बीटीडब्ल्यू मैंने इस प्रश्न a while ago से पूछने की कोशिश की लेकिन मैंने इसे बुरी तरह से पूछा।
धन्यवाद!
बहुत उपयोगी, धन्यवाद! मुझे यकीन नहीं है कि मैं _throttle_ शब्द का उपयोग करूंगा, लेकिन किसी भी तरह से, ऐसे समय होते हैं जहां किसी को एक साथ "प्रक्रियाओं" की संख्या को बाधित करने की आवश्यकता होती है क्योंकि वे जो काम करते हैं वह संसाधन-केंद्रित होता है। –
यह दृष्टिकोण वांछित परिणाम नहीं दे सकता है। यह जेवीएम स्मृति से बाहर होने तक नौकरियों को कतारबद्ध करने की अनुमति देगा। कलाकारों द्वारा उपयोग किए जा सकने वाले धागे की संख्या सीमित करने से केवल उन नौकरियों की संख्या सीमित हो जाएगी जो वास्तव में एक साथ निष्पादित की जाती हैं। मैंने कलाकारों की तुलना में तेजी से काम उत्पन्न करके ओओएम त्रुटियों का उत्पादन किया है, इसलिए आपको सावधान रहना होगा। –
मुझे लगता है कि इस दृष्टिकोण का एक नकारात्मक पक्ष यह है कि यह वैश्विक है। कभी-कभी मेरे पास विभिन्न प्रकार की प्रक्रियाएं होती हैं जिन्हें मुझे चलाने की आवश्यकता होती है जिसमें संसाधन उपयोग के विभिन्न स्तर होते हैं - जावा थ्रेड पूल के साथ, मैं आसानी से विभिन्न सेटिंग्स के साथ विभिन्न पूल का उपयोग कर सकता हूं। 'Actors.maxPoolSize' के साथ, मैं केवल सभी कलाकारों के लिए एक ही संख्या का उपयोग कर सकता हूं, क्योंकि वे सभी एक ही थ्रेड पूल द्वारा संचालित हैं, है ना? –