1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| # 一致性哈希算法 给定一个由0-31组成的Hash值闭环,由5个机器存储对应的分片数据 顺时针方向最近的节点存储分片数据 N5->N14->N20->N25->N29->N5 N5(30,31,0,1,2,3,4,5) N14(6,7,8,9,10,11,12,13,14) N20(15,16,17,18,19,20) N25(21,22,23,24,25) N29(26,27,28,29)
举例: N5发起存储[test]数据请求 先将[test]进行hash取值[0-31]得到18 逐级寻找对应的存储节点,N5<N14<18<N20 最终存储入N20节点
为了加快访问速度,引用了路由表 在每一个节点上记录了距离其他节点的距离信息 N14的路由表信息(距离->节点) 1(2^0)->N20 2(2^1)->N20 4(2^2)->N20 8(2^3)->N25 16(2^4)->N5 N14接收到查询Hash值为4的请求 先确定4是否在N20节点上,不在则寻找路由表,找到小于4的最大编号节点 发现找不到,取倒数第2项路由信息N25,请求N25取查询4的信息
|