gpt4 book ai didi

scala - Play Websocket示例-仅一位Akka Actor ?

转载 作者:行者123 更新时间:2023-12-04 13:33:47 25 4
gpt4 key购买 nike

在 Play Framework 附带的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上有一些有关该示例中使用的Websocket的默认调度程序配置的详细信息。

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
}
}

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

最重要的是,还有行动者来处理行动和 promise 。

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

关于scala - Play Websocket示例-仅一位Akka Actor ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10543068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com