多线程方法与Akka actor模型

xti*_*ger 10 multithreading actor akka

我是akka演员的新手.我已经阅读了akka官方文档,但仍然不理解演员的工作方式与线程模型的比较.

我们来看一个像这样的简单例子.我有一个传统的HttpServer,它在线程池中有10个线程.当同时发出20个请求时,HttpServer将委托线程池中的所有10个线程来处理前10个请求,其他线程将在网络接口中排队等待线程获取.

基于actor的HttpServer如何对同样的问题做出反应?是否所有请求都在委派的actor之前排队,以按顺序处理它们并将消息发送给其他actor?如果是这样的话,我不明白演员如何提供比线程模型更好的性能,因为只有1个actor按顺序执行20个请求并不比10个线程进程20请求同时快.

我想要了解的是,当多个请求同时聚集在一起时,actor会如何反应?,不是演员在邮箱中如何处理和排队邮件,它已经在文档中出现了很多.有人可以模拟演员在这个例子中的工作方式吗?

Zim*_*oot 3

这很大程度上取决于您的 actor(系统)配置,但很可能您将有 20 个 actor 坐在一个公共路由器(例如,一个RoundRobin路由器或一个SmallestMailbox路由器)后面,并且ThreadPoolExecutor调度程序中有 10 个线程,在这种情况下,您的 Akka 服务器是其行为与传统服务器类似 - Actor 的实现方式与传统服务器中的实现方式会有所不同RunnableCallable但无论哪种情况,您都会有一个由 20 个工作人员组成的池在运行十个线程池。