Scala方法每个套接字连接使用一个actor

Ste*_*fan 5 sockets scala scalability actor

我想知道如何避免一个套接字连接pr.Scala中的线程.我已经考虑了很多,但我总是最终得到一些代码,它们正在监听每个客户端连接的传入数据.

问题是我想开发一个应该同时处理几千个连接的应用程序.但是,由于缺乏可伸缩性和上下文切换,我当然不希望为每个连接创建一个线程.

什么是"正确"的方式来做到这一点.在我的世界中,每个连接都应该有一个actor,而不需要为每个actor阻塞一个线程.

mih*_*nus 5

在"Programming Scala"一书中,作者使用了一个名为naggati的库,它提供了一个结合了NIO和演员的框架,http: //programming-scala.labs.oreilly.com/ch09.html .


oxb*_*kes 4

我有一个将参与者与非阻塞套接字(即 NIO)混合在一起的应用程序。我这样做的方法是拥有一个专用的 IO 线程,它使用反应器模式向 actor 发送消息(与将工作委托给 Java 系统中的线程池的方式大致相同)。

显然,使用旧的阻塞套接字,每个连接只能使用一个线程。演员可以处理这个问题,但这当然限制了可以同时处理的连接数量。

在单个 IO 线程的情况下,这在理论上一个瓶颈,但在实践中(根据我们的观察)并不多,因为 IO 线程正在执行计算非密集型工作。关于 NIO反应器模式有很多很好的讨论。