Class ConsistentHashMap<P>

java.lang.Object
org.forgerock.opendj.ldap.ConsistentHashMap<P>
Type Parameters:
P - The type of partition object.

public final class ConsistentHashMap<P> extends Object
An implementation of "consistent hashing" supporting per-partition weighting. This implementation is thread safe and allows partitions to be added and removed during use.

This implementation maps partitions to one or more points on a circle ranging from Integer.MIN_VALUE to Integer.MAX_VALUE. The number of points per partition is dictated by the partition's weight. A partition with a weight which is higher than another partition will receive a proportionally higher load.

See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a new consistent hash map which will hash keys using MD5.
    ConsistentHashMap(org.forgerock.util.Function<Object,Integer,org.forgerock.util.promise.NeverThrowsException> hashFunction)
    Creates a new consistent hash map which will hash keys using the provided hash function.
  • Method Summary

    Modifier and Type
    Method
    Description
    put(String partitionId, P partition)
    Puts a partition into this consistent hash map using the default weight which is sufficiently high to ensure a reasonably uniform distribution among all partitions having the same weight.
    put(String partitionId, P partition, int weight)
    Puts a partition into this consistent hash map using the specified weight.
    remove(String partitionId)
    Removes the partition that was previously added using the provided partition ID.
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • ConsistentHashMap

      Creates a new consistent hash map which will hash keys using MD5.
    • ConsistentHashMap

      public ConsistentHashMap(org.forgerock.util.Function<Object,Integer,org.forgerock.util.promise.NeverThrowsException> hashFunction)
      Creates a new consistent hash map which will hash keys using the provided hash function.
      Parameters:
      hashFunction - The function which should be used for hashing keys.
  • Method Details

    • put

      public ConsistentHashMap<P> put(String partitionId, P partition)
      Puts a partition into this consistent hash map using the default weight which is sufficiently high to ensure a reasonably uniform distribution among all partitions having the same weight.
      Parameters:
      partitionId - The partition ID.
      partition - The partition.
      Returns:
      This consistent hash map.
    • put

      public ConsistentHashMap<P> put(String partitionId, P partition, int weight)
      Puts a partition into this consistent hash map using the specified weight. If all partitions have the same weight then they will each receive a similar amount of load. A partition having a weight which is twice that of another will receive twice the load. Weight values should generally be great than 200 in order to minimize the risk of unexpected imbalances due to the way in which logical partitions are mapped to real partitions.
      Parameters:
      partitionId - The partition ID.
      partition - The partition.
      weight - The partition's weight, which should typically be over 200 and never negative.
      Returns:
      This consistent hash map.
    • remove

      public ConsistentHashMap<P> remove(String partitionId)
      Removes the partition that was previously added using the provided partition ID.
      Parameters:
      partitionId - The partition ID.
      Returns:
      This consistent hash map.
    • toString

      public String toString()
      Overrides:
      toString in class Object