After reading the Akka documentation and also some posts online, I still don't have a clear understanding of the relationship between a router and a dispatcher.
1) Does a router always use a dispatcher for dispatching to the routees? Can a router do its job without using a dispatcher?
2) If there are no additional dispatchers defined in the configuration, my understanding is that the default dispatcher will be used. In my actor system, I have a cluster with two producer actors that use the router actor and three consumer actors. The producers and consumers are all running in different JVMs--what does it mean for an actor system to have one default dispatcher?
My understanding is that a dispatcher is like a thread pool executor. In this case, in different JVMs, wouldn't each JVM have its own instance of a dispatcher and its own thread pool executor?
3) Related to the above question (https://doc.akka.io/docs/akka/current/dispatchers.html#problem-blocking-on-default-dispatcher):
Using context.dispatcher as the dispatcher on which the blocking Future executes can be a problem, since this dispatcher is by default used for all other actor processing unless you set up a separate dispatcher for the actor.
If the actors are running in different JVMs, is the above still applicable? If so, what does it mean?