Sockets Scala提供了一种为每个套接字连接使用一个参与者的方法

Sockets Scala提供了一种为每个套接字连接使用一个参与者的方法,sockets,scala,scalability,actor,Sockets,Scala,Scalability,Actor,我想知道如何在Scala中避免一个套接字连接线程。我对此考虑了很多,但最终我总是得到一些代码,用于侦听每个客户端连接的传入数据 问题是我想开发一个应用程序,它应该同时处理几千个连接。但是,由于缺乏可伸缩性和上下文切换,我当然不想为每个连接创建线程 这样做的“正确”方式是什么。在我的世界中,每个连接应该有一个参与者,而不需要为每个参与者阻塞一个线程 我有一个将参与者与非阻塞套接字(即NIO)混合的应用程序。我这样做的方式是有一个专用的IO线程,它使用reactor模式向参与者发送消息(与将工作委托

我想知道如何在Scala中避免一个套接字连接线程。我对此考虑了很多,但最终我总是得到一些代码,用于侦听每个客户端连接的传入数据

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


这样做的“正确”方式是什么。在我的世界中,每个连接应该有一个参与者,而不需要为每个参与者阻塞一个线程

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

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

在单个IO线程的情况下,这在理论上是一个瓶颈,但在实践中(在我们的观察中)并不是太多,因为IO线程正在进行非计算密集型工作。在《Scala编程》一书中,关于NIO有很多很好的讨论。作者使用了一个名为naggati的库,它提供了一个结合NIO和参与者的框架