An IO Command is sent to an IO System, which then routes the command to a random worker using a round-robin router.
An IO System is basically a collection of worker actors.
An IO System is basically a collection of worker actors. You can attach either servers or clients to an IOSystem.
You may have multiple IOSystems per ActorSystem and actors attached to different IOSystems have no rules about cross communication. The main thing to keep in mind is that all actors in a single IOSystem will share event loops.
An IO Command is sent to an IO System, which then routes the command to a random worker using a round-robin router. If you want more determinism over how items are distributed across workers, just use multiple IO Systems
TODO: It may be a better idea to move these into WorkerCommand with a tag trait to show they can be accepted by the IOSystem, and then also add methods onto the IOSystem to eliminate confusion