`
- 浏览:
52608 次
- 性别:
- 来自:
北京
-
一致性 hash 算法( consistent hashing )介绍:http://blog.csdn.net/sparkliang/archive/2010/02/02/5279393.aspx一致性 hash 算法简单实现:hashcode产生接口
-
packageconsistentHash;
-
-
-
-
-
-
-
@SuppressWarnings("all")
-
publicinterfaceHashFunction{
-
publicinthash(Objectkey);
-
}
一致性 hash循环圈
-
packageconsistentHash;
-
-
importjava.util.Collection;
-
importjava.util.SortedMap;
-
importjava.util.TreeMap;
-
-
-
-
-
-
-
@SuppressWarnings("all")
-
publicclassConsistentHash<T>{
-
-
privatefinalHashFunctionhashFunction;
-
-
privatefinalintnumberOfReplicas;
-
-
privatefinalSortedMap<Integer,T>circle=newTreeMap<Integer,T>();
-
-
-
-
-
-
-
-
-
-
publicConsistentHash(HashFunctionhashFunction,intnumberOfReplicas,Collection<T>nodes){
-
this.hashFunction=hashFunction;
-
this.numberOfReplicas=numberOfReplicas;
-
-
for(Tnode:nodes){
-
add(node);
-
}
-
}
-
-
-
-
-
-
-
publicvoidadd(Tnode){
-
for(inti=0;i<numberOfReplicas;i++){
-
circle.put(hashFunction.hash(node.toString()+i),node);
-
}
-
}
-
-
-
-
-
-
-
publicvoidremove(Tnode){
-
for(inti=0;i<numberOfReplicas;i++){
-
circle.remove(hashFunction.hash(node.toString()+i));
-
}
-
}
-
-
-
-
-
-
-
-
publicTget(Objectkey){
-
if(circle.isEmpty()){
-
returnnull;
-
}
-
inthash=hashFunction.hash(key);
-
if(!circle.containsKey(hash)){
-
-
SortedMap<Integer,T>tailMap=circle.tailMap(hash);
-
hash=tailMap.isEmpty()?circle.firstKey():tailMap.firstKey();
-
}
-
returncircle.get(hash);
-
}
-
-
publicstaticvoidmain(String[]args){
-
SortedMap<Integer,String>tailMap=newTreeMap<Integer,String>();
-
tailMap.put(1,"111");
-
tailMap.put(3,"333");
-
tailMap.put(4,"444");
-
tailMap.put(2,"222");
-
System.out.println(tailMap.firstKey());
-
System.out.println(tailMap.get(tailMap.firstKey()));
-
}
-
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
一致性hash应用于负载均衡算法,本实现由C++语言开发。 一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义: 1、平衡性(Balance)2、单调性(Monotonicity) 3、分散性(Spread)4、负载(Load)
一致性 hash 算法介绍
一致性Hash算法的原理及实现
Ketama算法是一致性hash算法的一个优秀实现。增删节点后数据命中率及均分率都很高。
IT面试常见的题目,对于分布式存储系统中常碰到的故障问题,如何解决,就是采用一致性hash算法
一致性hash算法简介加C++实现
一致性hash算法
简单模拟实现一致性Hash,透过虚拟节点映射至实际结点,解决一致性Hash的单调性和平衡性问题。
一致性hash算法实现有两个关键问题需要解决,一个是用于结点存储和查找的数据结构的选择,另一个是结点hash算法的选择。 首先来谈一下一致性hash算法中用于存储结点的数据结构。通过了解一致性hash的原理,我们...
一致性哈希算法,广泛应用于分布式计算,C版实现,属于分布式服务器管理的核心算法。
别人写的一个一致性hash的java实现,分享下
一致性hash算法简介
摘要视图订阅登录 | 注册算法艺术(8)1004760次第1338名90篇16篇4篇595条一致性hash算法 - consistent hashing - s
主要介绍了PHP实现的一致性Hash算法,结合实例形式详细分析了php一致性Hash算法的概念、原理及相关实现与使用技巧,需要的朋友可以参考下
如果没有找到,则取整个环的第个节点。测试结果测试代码是整理的,主体法没有变分布平均性测试:测试随机成的众多key是否会平均分布到各个结点上测试结果如下:最上是参
一致性Hash算法,易于扩容;添加了 单元测试,使用Spring提供的RestTemplate调用RestFul风格的API接口;整合了 quartz 定时任务框架 ,并进行了封装,只需在构建完定时任务Job类后,在 application-quartz....
1、解决案:排序+List 2、解决案:遍历+List 1、最好情况是只有个服务器节点的Hash值于带路由结点的Hash值,其 2、最坏情况是所有服务器节点的H
c++实现的一致性hash算法库,可以直接编译成静态库、动态库,包含demo程序。