Class ConsistentHash<T>

java.lang.Object
org.miaixz.bus.core.codec.hash.ConsistentHash<T>
Type Parameters:
T - 节点类型
All Implemented Interfaces:
Serializable

public class ConsistentHash<T> extends Object implements Serializable
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
    ConsistentHash(int numberOfReplicas, Collection<T> nodes)
    构造,使用Java默认的Hash算法
    ConsistentHash(Hash32<Object> hashFunc, int numberOfReplicas, Collection<T> nodes)
    构造
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    add(T node)
    增加节点 每增加一个节点,就会在闭环上增加给定复制节点数 例如复制节点数是2,则每调用此方法一次,增加两个虚拟节点,这两个节点指向同一Node 由于hash算法会调用node的toString方法,故按照toString去重
    get(Object key)
    获得一个最近的顺时针节点
    void
    remove(T node)
    移除节点的同时移除相应的虚拟节点

    Methods inherited from class java.lang.Object

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

    • ConsistentHash

      public ConsistentHash(int numberOfReplicas, Collection<T> nodes)
      构造,使用Java默认的Hash算法
      Parameters:
      numberOfReplicas - 复制的节点个数,增加每个节点的复制节点有利于负载均衡
      nodes - 节点对象
    • ConsistentHash

      public ConsistentHash(Hash32<Object> hashFunc, int numberOfReplicas, Collection<T> nodes)
      构造
      Parameters:
      hashFunc - hash算法对象
      numberOfReplicas - 复制的节点个数,增加每个节点的复制节点有利于负载均衡
      nodes - 节点对象
  • Method Details

    • add

      public void add(T node)
      增加节点 每增加一个节点,就会在闭环上增加给定复制节点数 例如复制节点数是2,则每调用此方法一次,增加两个虚拟节点,这两个节点指向同一Node 由于hash算法会调用node的toString方法,故按照toString去重
      Parameters:
      node - 节点对象
    • remove

      public void remove(T node)
      移除节点的同时移除相应的虚拟节点
      Parameters:
      node - 节点对象
    • get

      public T get(Object key)
      获得一个最近的顺时针节点
      Parameters:
      key - 为给定键取Hash,取得顺时针方向上最近的一个虚拟节点对应的实际节点
      Returns:
      节点对象