一致性哈希

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();
    }
}
posted @ 2021-10-12 23:28  Tianyiya  阅读(32)  评论(0)    收藏  举报