Interface ConsistentHashFactory<CH extends ConsistentHash>

All Known Implementing Classes:
AbstractConsistentHashFactory, DefaultConsistentHashFactory, ReplicatedConsistentHashFactory, ScatteredConsistentHashFactory, SyncConsistentHashFactory, SyncReplicatedConsistentHashFactory, TopologyAwareConsistentHashFactory, TopologyAwareSyncConsistentHashFactory

@Deprecated(forRemoval=true) public interface ConsistentHashFactory<CH extends ConsistentHash>
Deprecated, for removal: This API element is subject to removal in a future version.
Since 11.0. Will be removed in 14.0, the segment allocation will no longer be customizable.
Factory for ConsistentHash instances.

We say a consistent hash ch is balanced iif rebalance(ch).equals(ch).

The consistent hashes created by create(int, int, List, Map) must be balanced, but the ones created by updateMembers(ConsistentHash, List, Map) and union(ConsistentHash, ConsistentHash) will likely be unbalanced.

Since:
5.2
Author:
Dan Berindei
See Also:
  • Method Summary

    Modifier and Type
    Method
    Description
    create(int numOwners, int numSegments, List<Address> members, Map<Address,Float> capacityFactors)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Create a new consistent hash instance.
    default CH
    create(Hash hashFunction, int numOwners, int numSegments, List<Address> members, Map<Address,Float> capacityFactors)
    Deprecated, for removal: This API element is subject to removal in a future version.
    since 11.0.
    default CH
    Deprecated, for removal: This API element is subject to removal in a future version.
    Recreates a ConsistentHash from a previously stored persistent state.
    rebalance(CH baseCH)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Create a new consistent hash instance, based on an existing instance, but balanced according to the implementation's rules.
    union(CH ch1, CH ch2)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Creates a union of two compatible ConsistentHashes (use the same hashing function and have the same configuration parameters).
    updateMembers(CH baseCH, List<Address> newMembers, Map<Address,Float> capacityFactors)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Updates an existing consistent hash instance to remove owners that are not in the newMembers list.
  • Method Details

    • create

      @Deprecated(forRemoval=true) default CH create(Hash hashFunction, int numOwners, int numSegments, List<Address> members, Map<Address,Float> capacityFactors)
      Deprecated, for removal: This API element is subject to removal in a future version.
      since 11.0. hashFunction is ignored, use create(int, int, List, Map) instead.
      Create a new consistent hash instance. The consistent hash will be balanced.
      Parameters:
      numOwners - The ideal number of owners for each key. The created consistent hash can have more or less owners, but each key will have at least one owner.
      numSegments - Number of hash-space segments. The implementation may round up the number of segments for performance, or may ignore the parameter altogether.
      members - A list of addresses representing the new cache members.
      capacityFactors - The capacity factor of each member. Determines the relative capacity of each node compared to the others. The implementation may ignore this parameter. If null, all the members are assumed to have a capacity factor of 1.
    • create

      CH create(int numOwners, int numSegments, List<Address> members, Map<Address,Float> capacityFactors)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Create a new consistent hash instance. The consistent hash will be balanced.
      Parameters:
      numOwners - The ideal number of owners for each key. The created consistent hash can have more or less owners, but each key will have at least one owner.
      numSegments - Number of hash-space segments. The implementation may round up the number of segments for performance, or may ignore the parameter altogether.
      members - A list of addresses representing the new cache members.
      capacityFactors - The capacity factor of each member. Determines the relative capacity of each node compared to the others. The implementation may ignore this parameter. If null, all the members are assumed to have a capacity factor of 1.
    • updateMembers

      CH updateMembers(CH baseCH, List<Address> newMembers, Map<Address,Float> capacityFactors)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Updates an existing consistent hash instance to remove owners that are not in the newMembers list.

      If a segment has at least one owner in newMembers, this method will not add another owner. This guarantees that the new consistent hash can be used immediately, without transferring any state.

      If a segment has no owners in newMembers and the ConsistentHash implementation (e.g. DefaultConsistentHash) requires at least one owner for each segment, this method may add one or more owners for that segment. Since the data in that segment was lost, the new consistent hash can still be used without transferring state.

      Parameters:
      baseCH - An existing consistent hash instance, should not be null
      newMembers - A list of addresses representing the new cache members.
      capacityFactors - The capacity factor of each member. Determines the relative capacity of each node compared to the others. The implementation may ignore this parameter. If null, all the members are assumed to have a capacity factor of 1.
      Returns:
      A new ConsistentHash instance, or baseCH if the existing instance does not need any changes.
    • rebalance

      CH rebalance(CH baseCH)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Create a new consistent hash instance, based on an existing instance, but balanced according to the implementation's rules.
      Parameters:
      baseCH - An existing consistent hash instance, should not be null
      Returns:
      A new ConsistentHash instance, or baseCH if the existing instance does not need any changes.
    • union

      CH union(CH ch1, CH ch2)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Creates a union of two compatible ConsistentHashes (use the same hashing function and have the same configuration parameters).

      The owners of a segment s in union(ch1, ch2) will include both the owners of s in ch1 and the owners of s in ch2, so a cache can switch from using union(ch1, ch2) to using ch2 without transferring any state.

    • fromPersistentState

      default CH fromPersistentState(ScopedPersistentState state)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Recreates a ConsistentHash from a previously stored persistent state. The returned ConsistentHash will not have proper addresses, but PersistentUUIDs instead so they will need to be replaced
      Parameters:
      state - the state to restore