看了Akka的文档和网上的一些帖子,我对路由器和调度器的关系还是没有很清楚的认识。
1) 路由器是否总是使用调度器来调度给路由?路由器可以在不使用调度程序的情况下完成其工作吗?
2)如果配置中没有定义额外的调度器,我的理解是会使用默认的调度器。在我的 actor 系统中,我有一个集群,其中包含两个使用路由器 actor 的生产者 actor 和三个消费者 actor。生产者和消费者都运行在不同的 JVM 中——对于一个actor系统来说,拥有一个默认的调度器意味着什么?
我的理解是调度程序就像线程池执行程序。在这种情况下,在不同的 JVM 中,不是每个 JVM 都有自己的调度程序实例和自己的线程池执行程序吗?
3)与上述问题相关(https://doc.akka.io/docs/akka/current/dispatchers.html#problem-blocking-on-default-dispatcher):
使用 context.dispatcher 作为阻塞 Future 执行的调度器可能是一个问题,因为这个调度器默认用于所有其他 actor 处理,除非您为 actor 设置单独的调度器。
如果参与者在不同的 JVM 中运行,上述内容是否仍然适用?如果是这样,这意味着什么?