2012-05-10 9 views
6

प्ले फ्रेमवर्क के साथ प्रदान की गई वेबसाइटकेट चैट नमूना में, ऐसा लगता है कि केवल एक अभिनेता का निर्माण/उपयोग किया जाता है; इसके अलावा यह "प्राप्त" का उपयोग करता है, जो कि अगर मैं अच्छी तरह से समझता हूं, तो एक अभिनेता और थ्रेड के बीच 1: 1 मैपिंग को मजबूर करता है, प्रभावी ढंग से इस चैट सर्वर को मोनो-थ्रेडेड बना देता है?Play Websocket नमूना - केवल एक Akka अभिनेता?

चेक यहाँ कोड: https://github.com/playframework/Play20/blob/master/samples/scala/websocket-chat/app/models/ChatRoom.scala

इस विश्लेषण सही है? यदि हां, तो क्या आपके पास पॉइंटर्स हैं कि इस सर्वर को अत्यधिक स्केलेबल कैसे बनाया जा सकता है?

उत्तर

8

उस उदाहरण में उपयोग किए जाने वाले websockets के लिए डिफ़ॉल्ट प्रेषक कॉन्फ़िगरेशन पर http://www.playframework.org/documentation/2.0.1/AkkaCore पर कुछ विवरण हैं।

प्रत्येक वेबसाकेट कनेक्शन स्थिति एक एजेंट अभिनेता द्वारा प्रबंधित की जाती है। प्रत्येक वेबसाकेट के लिए एक नया अभिनेता बनाया जाता है, और सॉकेट बंद होने पर मारा जाता है।

वेब पेज भी डिफ़ॉल्ट कॉन्फ़िगरेशन से पता चलता है कि:

websockets-dispatcher = { 
    fork-join-executor { 
    parallelism-factor = 1.0 
    parallelism-max = 24 
    } 
} 

डिफ़ॉल्ट रूप से सभी प्रेषकों एक धागा पूल पर अभिनेताओं में से उनके सेट चलेंगे। तो प्रत्येक ग्राहक के लिए एक वेबसाइकिल बनाने के लिए, एक अभिनेता बनाया जाएगा। कितने धागे आवंटित किए जाते हैं इस पर निर्भर करता है कि किस निष्पादक सेवा का उपयोग किया जाता है। ऐसा लगता है कि fork-join-executorparallelism-max तक मांग पर धागे बनाएगा।

इसके शीर्ष पर कार्यकर्ताओं और वादों को संसाधित करने के लिए कलाकार भी हैं।

ठीक ट्यून प्रदर्शन के लिए अक्का में कई knobs होने लगते हैं। http://doc.akka.io/docs/akka/2.0.1/general/configuration.html देखें। सर्वर को "अत्यधिक स्केलेबल" बनाना संभवतः बेंचमार्किंग और कुछ हार्डवेयर को शामिल करेगा।

5

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

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