title: Different use case for akka cluster aware router & akka cluster sharding?
body: <ol>
  <li><p>Cluster aware router:</p>
  
  <pre><code>val router = system.actorOf(ClusterRouterPool(
    RoundRobinPool(0),
    ClusterRouterPoolSettings(
      totalInstances = 20,
      maxInstancesPerNode = 1,
      allowLocalRoutees = false,
      useRole = None
    )
  ).props(Props[Worker]), name = "router")
  </code></pre>
  
  <p>Here, we can send message to <code>router</code>, the message will send to a series of remote routee actors.</p></li>
  <li><p>Cluster sharding (Not consider persistence)</p>
  
  <pre><code>class NewShoppers extends Actor {
    ClusterSharding(context.system).start(
      "shardshoppers",
      Props(new Shopper),
      ClusterShardingSettings(context.system),
      Shopper.extractEntityId,
      Shopper.extractShardId
    )
  
    def proxy = {
      ClusterSharding(context.system).shardRegion("shardshoppers")
    }
  
    override def receive: Receive = {
      case msg =&gt; proxy forward msg
    }
  }
  </code></pre>
  
  <p>Here, we can send message to <code>proxy</code>, the message will send to a series of sharded actors (a.k.a. entities).</p></li>
  </ol>
  
  <p>So, my question is: <code>it seems both 2 methods can make the tasks distribute to a lot of actors. What's the design choice of above two? Which situation need which choice?</code></p>