Interface ShardCoordinator.ShardAllocationStrategy

All Superinterfaces:
NoSerializationVerificationNeeded
All Known Subinterfaces:
ShardCoordinator.ActorSystemDependentAllocationStrategy, ShardCoordinator.StartableAllocationStrategy
All Known Implementing Classes:
ExternalShardAllocationStrategy, ShardCoordinator.AbstractShardAllocationStrategy
Enclosing class:
ShardCoordinator

public static interface ShardCoordinator.ShardAllocationStrategy extends NoSerializationVerificationNeeded
Interface of the pluggable shard allocation and rebalancing logic used by the ShardCoordinator.

Java implementations should extend ShardCoordinator.AbstractShardAllocationStrategy.

  • Method Summary

    Modifier and Type
    Method
    Description
    scala.concurrent.Future<ActorRef>
    allocateShard(ActorRef requester, String shardId, scala.collection.immutable.Map<ActorRef,scala.collection.immutable.IndexedSeq<String>> currentShardAllocations)
    Invoked when the location of a new shard is to be decided.
    scala.concurrent.Future<scala.collection.immutable.Set<String>>
    rebalance(scala.collection.immutable.Map<ActorRef,scala.collection.immutable.IndexedSeq<String>> currentShardAllocations, scala.collection.immutable.Set<String> rebalanceInProgress)
    Invoked periodically to decide which shards to rebalance to another location.
  • Method Details

    • allocateShard

      scala.concurrent.Future<ActorRef> allocateShard(ActorRef requester, String shardId, scala.collection.immutable.Map<ActorRef,scala.collection.immutable.IndexedSeq<String>> currentShardAllocations)
      Invoked when the location of a new shard is to be decided.

      Parameters:
      requester - actor reference to the ShardRegion that requested the location of the shard, can be returned if preference should be given to the node where the shard was first accessed
      shardId - the id of the shard to allocate
      currentShardAllocations - all actor refs to ShardRegion and their current allocated shards, in the order they were allocated
      Returns:
      a Future of the actor ref of the ShardRegion that is to be responsible for the shard, must be one of the references included in the currentShardAllocations parameter
    • rebalance

      scala.concurrent.Future<scala.collection.immutable.Set<String>> rebalance(scala.collection.immutable.Map<ActorRef,scala.collection.immutable.IndexedSeq<String>> currentShardAllocations, scala.collection.immutable.Set<String> rebalanceInProgress)
      Invoked periodically to decide which shards to rebalance to another location.

      Parameters:
      currentShardAllocations - all actor refs to ShardRegion and their current allocated shards, in the order they were allocated
      rebalanceInProgress - set of shards that are currently being rebalanced, i.e. you should not include these in the returned set
      Returns:
      a Future of the shards to be migrated, may be empty to skip rebalance in this round