2011-01-31 16 views
11

मैं अलग-अलग एजेंटों को रखने के लिए MailboxProcessor कक्षाओं का उपयोग कर रहा हूं जो अपनी खुद की चीज करते हैं। आम तौर पर एजेंट एक ही प्रक्रिया में एक दूसरे के साथ संवाद कर सकते हैं, लेकिन मैं एजेंटों को एक दूसरे से बात करना चाहता हूं जब वे अलग प्रक्रियाओं या यहां तक ​​कि विभिन्न मशीनों पर हों। उनके बीच संचार को लागू करने के लिए किस तरह का तंत्र सबसे अच्छा है? क्या कोई मानक समाधान है?रिमोट मेलबॉक्स प्रोसेसर के बीच संदेश भेजना?

कृपया ध्यान दें कि मैं एजेंट चलाने के लिए उबंटू उदाहरणों का उपयोग कर रहा हूं।

+7

इसे किसने 'ऑफ-विषय' के रूप में वोट दिया? यदि आप सवाल नहीं समझते हैं तो कृपया इसमें हस्तक्षेप न करें। –

+1

http://stackoverflow.com/questions/501656/f-mailbox-processor-on- वितरित- सिस्टम कुछ अंतर्दृष्टि प्रदान कर सकते हैं। –

+0

शायद विंडोज़ एज़ूर कतारों को देखें। यह अलग-अलग मशीनों (वे उन्हें कार्यकर्ता भूमिकाओं को बुलाते हैं) को एक-दूसरे से बात करने के लिए उपयोग करते हैं। आप क्या कर सकते हैं प्रत्येक मशीन पर एक एजेंट है जो दूसरों के साथ संवाद करने का अनुरोध करने के लिए है, काम को सूचित करने के लिए सूचित किया गया है .. – jlezard

उत्तर

3

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

मैं RPYC (http://rpyc.wikidot.com/) जैसे कुछ को देखता हूं क्योंकि यह कुछ हद तक प्रोटोकॉल प्रदान करता है जैसा आप ढूंढ रहे हैं।

मूल रूप से उत्तर 'नहीं' है ऐसा करने का वास्तव में एक अच्छा तरीका नहीं है।

+0

क्या आप जानते हैं कि यह अन्य भाषाओं में कैसे होगा: एजेंट: एरलांग, स्कैला और सह? धन्यवाद! – jlezard

+0

ठीक है, Erlang में, आप साझा स्मृति नहीं है। प्रत्येक "धागा" वास्तव में एक अलग प्रक्रिया है। तो जब आप कहते हैं कि 'पिड! "foo" 'pid बस एक प्रक्रिया की एक आईडी है जिसे 'foo' 'भेजा जाता है। चूंकि कोई साझा मेमोरी नहीं है, और प्रक्रियाओं में पहले से ही पिड्स हैं, नेटवर्किंग यह आईपी मैपिंग्स के लिए पिड का एक शब्दकोश बनाने और उस जानकारी के आधार पर संदेशों को पास करने के समान सरल है। इस विधि के साथ समस्या यह है कि संदेश संचार के माध्यम से सभी संचार किया जाना चाहिए, और वर्तमान में संदेश की स्मृति प्रति भी शामिल है। प्रदर्शन के अनुसार यह हमेशा सबसे अच्छा नहीं है। मुझे स्कैला के साथ कोई अनुभव नहीं है। –

+0

और मुझे क्लैफी होना चाहिए, एरलांग प्रक्रियाएं ओएस प्रक्रिया नहीं हैं, वे वीएम प्रक्रियाएं हैं। एक एरलांग प्रक्रिया में कुछ सौ बाइट्स की मेमोरी ओवरहेड होती है। एक ओएस प्रक्रिया बहु-केबी रेंज में एक ओवरहेड है। –

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