博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一致性hash算法
阅读量:6804 次
发布时间:2019-06-26

本文共 1083 字,大约阅读时间需要 3 分钟。

  hot3.png

介绍

http://blog.csdn.net/cywosp/article/details/23397179/

http://www.cnblogs.com/haippy/archive/2011/12/10/2282943.html

http://blog.csdn.net/caigen1988/article/details/7708806

http://www.blogjava.net/hello-yun/archive/2012/10/10/389289.html

 

java 实现

http://www.iteye.com/topic/1132274

http://blog.csdn.net/wuhuan_wp/article/details/7010071

http://www.oschina.net/code/snippet_730640_22941

思路

1 定义一个Hash算法

2 定义一个Map,以IP等作为key,hash出N个key复本作为Key(value为真实的节点)存入Map

      for (int i = 0; i < numberOfReplicas; i++) {

                    circle.put(hashFunc.hash(node.toString() + i), node);
                }

3取值:hash传入的值,Map.get(hash(key)),如果没有,取tailMap的第一个key,再Map.get(hash(key))

        public T get(Object key) {

            readReadWriteLock.readLock().lock();
            try{
                if (circle.isEmpty()) {
                    return null;
                }
                int hash = hashFunc.hash(key);
                if (!circle.containsKey(hash)) {
                    SortedMap<Integer, T> tailMap = circle.tailMap(hash); // 返回此映射的部分视图,其键大于等于
                    hash = tailMap.isEmpty() ? circle.firstKey() : tailMap.firstKey();
                }
                // 正好命中
                return circle.get(hash);
            }finally{
                readReadWriteLock.readLock().unlock();
            }
        }

转载于:https://my.oschina.net/sbcagf/blog/783030

你可能感兴趣的文章
ubuantu 18.04 LTS 版本解决网易云安装启动问题
查看>>
Java分享笔记:泛型类的定义与使用
查看>>
springCloud全实战超详细代码demo+笔记
查看>>
Golang 知识点总结
查看>>
Bitmap
查看>>
(转)arcgis面状文件坐标导出方法
查看>>
LPC824 周立功AM824学习笔记
查看>>
SQL数据库学习之路(三)
查看>>
开发https应用
查看>>
js轮换广告
查看>>
墨菲定律
查看>>
Maven
查看>>
MovieReview—Kingsman THE SECRET SERVICE(王牌特工之特工学院)
查看>>
C语言成长学习题(九)
查看>>
银行里的迷宫
查看>>
codevs——1294 全排列
查看>>
9.13模拟试题
查看>>
自动生成单据编号
查看>>
[noip模拟]画展<队列的基础知识>
查看>>
Java时间转换类实现
查看>>