Search Results for

    Show / Hide Table of Contents

    Class LeastShardAllocationStrategy

    Use LeastShardAllocationStrategy(int, double) instead. The new rebalance algorithm was included in Akka.Net 1.4.11. It can reach optimal balance in less rebalance rounds (typically 1 or 2 rounds). The amount of shards to rebalance in each round can still be limited to make it progress slower.

    This implementation of IShardAllocationStrategy allocates new shards to the ShardRegion with least number of previously allocated shards.

    When a node is added to the cluster the shards on the existing nodes will be rebalanced to the new node. evenly spread on the remaining nodes (by picking regions with least shards).

    When a node is added to the cluster the shards on the existing nodes will be rebalanced to the new node. It picks shards for rebalancing from the ShardRegion with most number of previously allocated shards.

    They will then be allocated to the ShardRegion with least number of previously allocated shards, i.e. new members in the cluster. There is a configurable threshold of how large the difference must be to begin the rebalancing.The difference between number of shards in the region with most shards and the region with least shards must be greater than the rebalanceThreshold for the rebalance to occur.

    A rebalanceThreshold of 1 gives the best distribution and therefore typically the best choice. A higher threshold means that more shards can be rebalanced at the same time instead of one-by-one. That has the advantage that the rebalance process can be quicker but has the drawback that the the number of shards (and therefore load) between different nodes may be significantly different. Given the recommendation of using 10x shards than number of nodes and rebalanceThreshold=10 can result in one node hosting ~2 times the number of shards of other nodes.Example: 1000 shards on 100 nodes means 10 shards per node.One node may have 19 shards and others 10 without a rebalance occurring.

    The number of ongoing rebalancing processes can be limited by maxSimultaneousRebalance.

    Inheritance
    object
    AbstractLeastShardAllocationStrategy
    LeastShardAllocationStrategy
    Implements
    IActorSystemDependentAllocationStrategy
    IShardAllocationStrategy
    INoSerializationVerificationNeeded
    Inherited Members
    AbstractLeastShardAllocationStrategy.ClusterState
    AbstractLeastShardAllocationStrategy.SelfMember
    AbstractLeastShardAllocationStrategy.Start(ActorSystem)
    AbstractLeastShardAllocationStrategy.AllocateShard(IActorRef, string, IImmutableDictionary<IActorRef, IImmutableList<string>>)
    AbstractLeastShardAllocationStrategy.IsAGoodTimeToRebalance(IEnumerable<AbstractLeastShardAllocationStrategy.RegionEntry>)
    AbstractLeastShardAllocationStrategy.MostSuitableRegion(IEnumerable<AbstractLeastShardAllocationStrategy.RegionEntry>)
    AbstractLeastShardAllocationStrategy.RegionEntriesFor(IImmutableDictionary<IActorRef, IImmutableList<string>>)
    object.Equals(object)
    object.Equals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    object.ToString()
    Namespace: Akka.Cluster.Sharding
    Assembly: Akka.Cluster.Sharding.dll
    Syntax
    [Serializable]
    [Obsolete("Use ShardAllocationStrategy.LeastShardAllocationStrategy instead. This will be removed in v1.6.")]
    public class LeastShardAllocationStrategy : AbstractLeastShardAllocationStrategy, IActorSystemDependentAllocationStrategy, IShardAllocationStrategy, INoSerializationVerificationNeeded

    Constructors

    | Edit this page View Source

    LeastShardAllocationStrategy(int, int)

    TBD

    Declaration
    public LeastShardAllocationStrategy(int rebalanceThreshold, int maxSimultaneousRebalance)
    Parameters
    Type Name Description
    int rebalanceThreshold

    TBD

    int maxSimultaneousRebalance

    TBD

    Methods

    | Edit this page View Source

    Rebalance(IImmutableDictionary<IActorRef, IImmutableList<string>>, IImmutableSet<string>)

    TBD

    Declaration
    public override Task<IImmutableSet<string>> Rebalance(IImmutableDictionary<IActorRef, IImmutableList<string>> currentShardAllocations, IImmutableSet<string> rebalanceInProgress)
    Parameters
    Type Name Description
    IImmutableDictionary<IActorRef, IImmutableList<string>> currentShardAllocations

    TBD

    IImmutableSet<string> rebalanceInProgress

    TBD

    Returns
    Type Description
    Task<IImmutableSet<string>>

    TBD

    Overrides
    AbstractLeastShardAllocationStrategy.Rebalance(IImmutableDictionary<IActorRef, IImmutableList<string>>, IImmutableSet<string>)

    Implements

    IActorSystemDependentAllocationStrategy
    IShardAllocationStrategy
    INoSerializationVerificationNeeded

    Extension Methods

    ObjectExtensions.IsDefaultForType<T>(T)
    ObjectExtensions.AsOption<T>(T)
    Extensions.AsInstanceOf<T>(object)
    In this article
    • githubEdit this page
    • View Source
    Back to top
    Contribute
    • Project Chat
    • Discussion Forum
    • Source Code
    Support
    • Akka.NET Support Plans
    • Akka.NET Observability Tools
    • Akka.NET Training & Consulting
    Maintained By
    • Petabridge - The Akka.NET Company
    • Learn Akka.NET