2011-06-09 13 views
8

मैं इस बारे में अध्ययन कर रहा हूं कि मैं एक वितरित आर्किटेक्चर कैसे विकसित कर सकता हूं जो प्रोटोकॉल अनुरोध/प्रतिक्रियाओं को अभिनेताओं के माध्यम से समेकन की अवधारणा का उपयोग करके लागू करता है।अक्का और स्कैला का उपयोग कर अनुरोध/प्रतिक्रिया प्रोटोकॉल को लागू करने का सबसे अच्छा तरीका क्या है?

मैंने निष्कर्ष निकाला कि ऐसा करने का सबसे अच्छा तरीका वायदा/वादे के तुल्यकालिक संचालन के साथ प्रतिक्रिया प्रणाली बना रहा है, और प्रतिक्रिया के तुरंत बाद, सूचनाएं प्राप्त करने के लिए एक खुला चैनल छोड़कर।

इस प्रकार एक आर्किटेक्चर जो वास्तव में एक इनबॉक्स संदेश की तरह काम करेगा।

इसमें कुछ समस्याएं हैं।

इस प्रकार मुझे दो अंतराल (दो परतों में अभिनेता) बनाए रखना होगा?

समस्या: व्यू मॉड्यूल अनुरोध करता है कि एक विशेष तत्व संसाधित हो। वह इस आदेश को एप्लिकेशन सर्वर पर रिमोटएक्टर के माध्यम से संसाधित करने के लिए भेजती है। इस सर्वर को तुरंत वादा वापस कर देना चाहिए कि तत्व संसाधित होने पर यह आपको सूचित करेगा। इसके बाद, व्यू मॉड्यूल प्रसंस्करण पूरा होने की अधिसूचना का इंतजार कर रहा है।

आप इस समस्या को कैसे देखते हैं?

मैं स्कैला, अक्का और Google गिइस का उपयोग कर रहा हूं।

मुझे विश्वास है कि यह एक सामान्य समस्या है कि हर कोई अपने समाधान का उपयोग कर सकता है। क्षमा करें अगर मैं stackoverflow साइट की शर्तों को चोट पहुंचा रहा हूँ।

अग्रिम धन्यवाद

उत्तर

4

मैं, किसी भी अच्छे जवाब आप अक्का पर मिल सकता है से विचलित करने के लिए क्योंकि मैं दुर्भाग्य से अक्का के बारे में ज्यादा पता नहीं है और यह अभिनेताओं सुविधाओं वितरित नहीं करना चाहते हैं, लेकिन मैं करना चाहते हैं पूछें कि क्या आपने कोई विकल्प माना है।

ऐसा लगता है कि आपको मूल रूप से एक एसिंक्रोनस आरपीसी लाइब्रेरी की आवश्यकता है। स्कैला में लिखे गए दो शक्तिशाली पुस्तकालय हैं जिन्हें मैं जानता हूं कि आपकी आवश्यकताओं को पूरा कर सकते हैं - http://sna-projects.com/norbert/ और http://twitter.github.com/finagle/। Finagle एसिंक्रोनस गणना निर्भरताओं को व्यक्त करने और वायदा पर श्रोताओं को पंजीकृत करने के लिए कुछ वास्तव में शक्तिशाली combinators देता है। मैं वर्तमान में नॉरबर्ट को बनाए रख रहा हूं, जिसे हम अपने कुछ वितरित सिस्टमों जैसे खोज के लिए लिंक्डइन में उपयोग करते हैं।

+0

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

4
//On "server" node 
class SomeActor extends Actor { 
    def receive = { 
    case messageToRemoteActor => self reply_? TypeOfResponseMessage() 
    } 
} 

Actor.remote.register("myRemoteActor", actorOf[SomeActor]) 

//On "client" node 
val remoteActor = Actor.remote.actorFor("myRemoteActor", "hostnameOrIpOfNodeContainingTheActorAbove", port) 

val f: Future[TypeOfResponseMessage] = remoteActor !!! messageToRemoteActor 

f.onComplete(_.value.get match { 
    case Left(exception) => handle(exception) 
    case Right(result) => handle(result) 
}) 
+0

अभिनेता में प्राप्त विधि में उपयोग किया जाने वाला डिफ़ॉल्ट कार्यान्वयन क्या है? – ricardogobbo

+0

क्या डिफ़ॉल्ट कार्यान्वयन? –

+0

जब आपने अपनी प्रतिक्रिया संपादित की तो आपने मेरे प्रश्न का उत्तर दिया। =) धन्यवाद! मुझे इस प्रश्न में वर्णित एक समस्या है। शायद आप मेरी सहायता कर सकते हैं। [Serialization के दौरान StackOverflowError] (http://stackoverflow.com/questions/6416222/akka-stackoverflowerror-during-object-serialization) – ricardogobbo

1

क्यों न केवल 0 एमक्यू के आरईक्यू-आरईपी सॉकेट का उपयोग करें?

https://github.com/zcox/akka-zeromq-java

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

जहां इस पर http://blog.getintheloop.eu/2009/05/22/lift-amqp-with-rabbitmq-and-scala-tutorial-and-screencast/

नोट देखो कि मैं नहीं हूँ सुझाव है कि आप आज AMQP का उपयोग के बाद से एक RabbitMQ दलाल अपने तत्काल समस्या के लिए overkill होगा जन्म दे सकता है की एक उदाहरण के लिए। इसके बजाय, मैं सुझाव दे रहा हूं कि आप अपना समय एक आर्किटेक्चर (संदेश क्यूइंग) का उपयोग करने में निवेश करें जो आपको लंबे समय तक लाभांश का भुगतान करेगा।

+0

मैंने हमारी परियोजनाओं में 0 एमक्यू का उपयोग करने पर विचार किया। मॉड्यूल और विकास प्लेटफार्मों के बीच संचार के लिए यह एक अच्छा समाधान होगा। लेकिन चूंकि यह एक मॉड्यूल का आंतरिक वास्तुकला है, मेरा मानना ​​है कि यह एक तरह की तकनीक का उपयोग करने के लिए समय और संसाधनों का अपशिष्ट होगा। अक्का के निर्माता जोनास बोनर टीम, [टाइपसेफ] (http://typesafe.com/) नामक एक परियोजना पर काम कर रही हैं, जो मॉड्यूल के बीच संचार के लिए एक उद्यम मंच प्रदान करेगी। इस मामले में, मेरा मानना ​​है कि स्कैला और अक्का का उपयोग इस वास्तुकला के लिए बुद्धिमान लगता है। – ricardogobbo

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

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