Package org.miaixz.bus.core.codec.hash
Class ConsistentHash<T>
java.lang.Object
org.miaixz.bus.core.codec.hash.ConsistentHash<T>
- Type Parameters:
T- 节点类型
- All Implemented Interfaces:
Serializable
一致性Hash算法 算法详解:http://blog.csdn.net/sparkliang/article/details/5279393
算法实现:https://weblogs.java.net/blog/2007/11/27/consistent-hashing
- Since:
- Java 17+
- Author:
- Kimi Liu
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionConsistentHash(int numberOfReplicas, Collection<T> nodes) 构造,使用Java默认的Hash算法ConsistentHash(Hash32<Object> hashFunc, int numberOfReplicas, Collection<T> nodes) 构造 -
Method Summary
-
Constructor Details
-
ConsistentHash
构造,使用Java默认的Hash算法- Parameters:
numberOfReplicas- 复制的节点个数,增加每个节点的复制节点有利于负载均衡nodes- 节点对象
-
ConsistentHash
构造- Parameters:
hashFunc- hash算法对象numberOfReplicas- 复制的节点个数,增加每个节点的复制节点有利于负载均衡nodes- 节点对象
-
-
Method Details
-
add
增加节点 每增加一个节点,就会在闭环上增加给定复制节点数 例如复制节点数是2,则每调用此方法一次,增加两个虚拟节点,这两个节点指向同一Node 由于hash算法会调用node的toString方法,故按照toString去重- Parameters:
node- 节点对象
-
remove
移除节点的同时移除相应的虚拟节点- Parameters:
node- 节点对象
-
get
获得一个最近的顺时针节点- Parameters:
key- 为给定键取Hash,取得顺时针方向上最近的一个虚拟节点对应的实际节点- Returns:
- 节点对象
-