import java.util.Collection;
import java.util.SortedMap;
import java.util.TreeMap;
public class ConsistentHash<T> {
private final HashFunction hashFunction;
private final int numberOfReplicas;
private final SortedMap<Integer, T> circle = new TreeMap<Integer, T>();
public ConsistentHash(HashFunction hashFunction, int numberOfReplicas, Collection<T> nodes) {
this.hashFunction = hashFunction;
this.numberOfReplicas = numberOfReplicas;
for (T node : nodes) {
add(node);
}
}
public void add(T node) {
for (int i = 0; i < numberOfReplicas; i++) {
circle.put(hashFunction.hash(node.toString() + i), node);
}
}
public void remove(T node) {
for (int i = 0; i < numberOfReplicas; i++) {
circle.remove(hashFunction.hash(node.toString() + i));
}
}
public T get(Object key) {
if (circle.isEmpty()) {
return null;
}
int hash = hashFunction.hash(key);
if (!circle.containsKey(hash)) {
SortedMap<Integer, T> tailMap = circle.tailMap(hash);
hash = tailMap.isEmpty() ? circle.firstKey() : tailMap.firstKey();
}
return circle.get(hash);
}
}
分享到:
相关推荐
分布式一致性算法,
分布式一致性算法Yac
为了提高分布式一致性算法的收敛速度, 提出了一种离散高阶分布式一致性算法。该算法通过单跳通信, 利用二跳邻接节点的前多步信息来加速分布式一致性算法的收敛速度。对无向通信拓扑下该算法的收敛性能和收敛速度, ...
分布式一致性算法Raft协议的学习记录,
#资源达人分享计划#
#资源达人分享计划#
基于Raft分布式一致性协议实现的局限及其对数据库的风险.docx
Raft 为什么是更易理解的分布式一致性算法
#资源达人分享计划#
分布式算法理论说明,分布式两阶段提交,paxos算法介绍
#资源达人分享计划#
#资源达人分享计划#
从Paxos到ZooKeeper一书高清的PDF、带完整书签,质量很好!
从Paxos到Zookeeper分布式一致性原理与实践.pdf从Paxos到Zookeeper分布式一致性原理与实践.pdf从Paxos到Zookeeper分布式一致性原理与实践.pdf从Paxos到Zookeeper分布式一致性原理与实践.pdf从Paxos到Zookeeper分布式...
用作分布式一致性算法的指导,里面有详细的流程说明,对于分布式电网调度也会有更深刻的理解,可用作编程的依据。
综述了多智能体系统分布式一致性问题的研究现状。从理论层面介绍了一致性问题的几种常见定义及与特性相关的主要参数;总结归纳了近年来几种一致性协议及其理论分析结果;分析和阐述了一致性问题的主要应用领域的进展...
基于多智能体一致性算法的matlab程序,对初学者很用用! 基于多智能体一致性算法的matlab程序,对初学者很用用!
分布式生成树算法的实现 基于VC++ 针对的是png图片对应的特定环路
从PAXOS到ZOOKEEPER分布式一致性原理与实践从PAXOS到ZOOKEEPER分布式一致性原理与实践从PAXOS到ZOOKEEPER分布式一致性原理与实践