com.xiaoleilu.hutool
类 ConsistentHash<T>

java.lang.Object
  继承者 com.xiaoleilu.hutool.ConsistentHash<T>
类型参数:
T - 节点类型

public class ConsistentHash<T>
extends Object

一致性Hash算法 算法详解:http://blog.csdn.net/sparkliang/article/details/5279393 算法实现:https://weblogs.java.net/blog/2007/11/27/consistent-hashing

作者:
xiaoleilu

嵌套类摘要
static interface ConsistentHash.HashFunc
          Hash算法对象,用于自定义hash算法
 
构造方法摘要
ConsistentHash(ConsistentHash.HashFunc hashFunc, int numberOfReplicas, Collection<T> nodes)
          构造
ConsistentHash(int numberOfReplicas, Collection<T> nodes)
          构造,使用Java默认的Hash算法
 
方法摘要
 void add(T node)
          增加节点
每增加一个节点,就会在闭环上增加给定复制节点数
例如复制节点数是2,则每调用此方法一次,增加两个虚拟节点,这两个节点指向同一Node 由于hash算法会调用node的toString方法,故按照toString去重
 T get(Object key)
          获得一个最近的顺时针节点
 void remove(T node)
          移除节点的同时移除相应的虚拟节点
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

ConsistentHash

public ConsistentHash(int numberOfReplicas,
                      Collection<T> nodes)
构造,使用Java默认的Hash算法

参数:
numberOfReplicas - 复制的节点个数,增加每个节点的复制节点有利于负载均衡
nodes - 节点对象

ConsistentHash

public ConsistentHash(ConsistentHash.HashFunc hashFunc,
                      int numberOfReplicas,
                      Collection<T> nodes)
构造

参数:
hashFunc - hash算法对象
numberOfReplicas - 复制的节点个数,增加每个节点的复制节点有利于负载均衡
nodes - 节点对象
方法详细信息

add

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

参数:
node - 节点对象

remove

public void remove(T node)
移除节点的同时移除相应的虚拟节点

参数:
node - 节点对象

get

public T get(Object key)
获得一个最近的顺时针节点

参数:
key - 为给定键取Hash,取得顺时针方向上最近的一个虚拟节点对应的实际节点
返回:
节点对象


Copyright © 2014. All rights reserved.