multithreading - एक्टर मॉडल का उपयोग कब करना चाहिए?




concurrency functional-programming (2)

अभिनेता मॉडल का उपयोग कब किया जाना चाहिए?

यह निश्चित रूप से गतिरोध मुक्त वातावरण की गारंटी नहीं देता है।

एक्टर बी के संदेश का इंतजार कर सकता है जबकि बी ए का इंतजार करता है।

इसके अलावा, अगर किसी अभिनेता को यह सुनिश्चित करना है कि उसके संदेश को उसके अगले कार्य पर जाने से पहले संसाधित किया गया था, तो उसे एक संदेश भेजना होगा और सीधे अवरुद्ध होने के बजाय "आपके संदेश को संसाधित किया गया" संदेश की प्रतीक्षा करनी होगी।

मॉडल की शक्ति क्या है?


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

यदि अनुप्रयोग / कार्य में कोई भी परिवर्तनशील स्थिति शामिल नहीं है, तो अभिनेता ओवरकिल हो जाते हैं क्योंकि अभिनेता फ्रेमवर्क दौड़ की स्थिति से बचने के लिए बड़ी लंबाई में जाते हैं।


अभिनेता का उपयोग कम से कम दो मामलों में "स्वाभाविक" है:

  1. जब आप स्वतंत्र कार्यों के सेट में अपनी समस्या का निराकरण कर सकते हैं।
  2. जब आप अपनी समस्या को स्पष्ट वर्फ़्लो (यानी डेटाफ़्लो प्रोग्रामिंग ) से जुड़े कार्यों के एक सेट में विघटित कर सकते हैं।

उदाहरण के लिए, यदि आप फिल्टर की एक श्रृंखला का उपयोग करके जटिल डेटा को संसाधित करते हैं, तो अभिनेताओं की एक पाइपलाइन का उपयोग करना आसान है जहां प्रत्येक अभिनेता एक अपस्ट्रीम अभिनेता से डेटा प्राप्त करता है और एक डाउनस्ट्रीम अभिनेता के लिए डेटा सेट करता है।

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

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





actor-model