一致性哈希
import java.util.List;
import java.util.SortedMap;
import java.util.TreeMap;
public class ConsistentHash {
private String select(int virtualNodeNum, String key, List<String> addresses) {
TreeMap<Long, String> addressRing = new TreeMap<Long, String>();
for (String address : addresses) {
for (int i = 0; i < virtualNodeNum; i++) {
long addressHash = ("VIRTUAL-NODE-" + address + "-" + i).hashCode();
addressRing.put(addressHash, address);
}
}
long keyHash = key.hashCode();
SortedMap<Long, String> tailMap = addressRing.tailMap(keyHash);
if (!tailMap.isEmpty()) {
return tailMap.get(tailMap.firstKey());
}
return addressRing.firstEntry().getValue();
}
}
心之所向,素履以往 生如逆旅,一苇以航

浙公网安备 33010602011771号