scala – 播放Websocket示例 – 只有一位Akka演员?

在随播放框架提供的Websocket聊天示例中,在我看来,只创建/使用了一个actor;它还使用“接收”,如果我理解的话,强制演员和线程之间的1:1映射,有效地使这个聊天服务器单线程?

检查代码https://github.com/playframework/Play20/blob/master/samples/scala/websocket-chat/app/models/ChatRoom.scala

如果这个分析正确吗?如果是,您是否有关于如何使该服务器具有高度可扩展性的指针?

解决方法

http://www.playframework.org/documentation/2.0.1/AkkaCore上有关于该示例中使用的websockets的认调度程序配置的一些细节.

Each WebSocket connection state is managed by an Agent actor. A new actor is created for each WebSocket,and is killed when the socket is closed.

该网页还显示认配置:

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

认情况下,所有调度程序都将在线程池上运行其actor集.因此,对于创建websocket的每个客户端,将创建一个actor.分配了多少个线程取决于使用哪个执行程序服务.似乎fork-join-executor将根据需求创建线程,直到parallelism-max.

最重要的是,还有演员来处理行动和承诺.

在akka中似乎有许多旋钮来微调性能.请参阅http://doc.akka.io/docs/akka/2.0.1/general/configuration.html.使服务器“高度可扩展”可能涉及大量基准测试和一些硬件.

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...