maglev hash算法先把n个server填满大小为m的数组table(m > n,m为素数); 然后算法选择table[hash(input)]中的sever。

1. 对每个server构建排列表(permutation)

1.1 计算

排列表的大小为m,计算如下:

offset = hash1(sever) % mskip = hash2(server) %(m -1) + 1permutation[i] = (offset + i*skip) % m

permutation[]是 [0, 1, .., m -1]的一个排列。

1.2 证明

假设permutation[]不是0,1...,m-1的全排列,则存在permutation[k]与permutaion[j]相等,
则下列等式成立:

(1)  (offset + k * skip) % m == (offset + j * skip) % m

(2) (k * skip) % m ==  (j * skip) %m

(3)  (k - j) * skip == x * m  , 假设k > j,x >= 1

(4)  (k - j ) * skip / x == m

由于 1 <= skip < m,  1 <= (k - j) < m, m是素数,等式(4)不可能成立。

1.3 排列表的含义

假设server的排列表时permutaion[],那么这个server希望放在hash表的位置permutation[i]的哈希桶中,permutation[0]的优先级最高,permutation[1]次之。

2. 按照排列表填哈系表

按照server的顺序,对每个server按照自己的排列表中的优先级,把自己放到哈希表中,如果该哈系统被占了,则选择下一个优先级。

3代码

代码maglev_hash

maglev hash算法相关推荐

  1. 一致性 hash 算法( consistent hashing )

    原文地址:http://blog.csdn.net/sparkliang/article/details/5279393 consistent hashing 算法早在 1997 年就在论文 Cons ...

  2. 区块链笔记-Hash算法

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 区块链笔记-Hash算法 区块链技术是一系列技术的结合,建立新的技术架构,hash算法是很重要的一块,如果理解不当的地方 ...

  3. 区块链概念:Hash 算法

    链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载. 区块链概念1:Hash 算法 作用在学习哈希算法前,我们需要知道哈希在区块链的作用哈希算法的作用如下:区块链通过 ...

  4. 一致性 Hash 算法的实际应用

    前言 记得一年前分享过一篇<一致性 Hash 算法分析>,当时只是分析了这个算法的实现原理.解决了什么问题等. 但没有实际实现一个这样的算法,毕竟要加深印象还得自己撸一遍,于是本次就当前的 ...

  5. 不会一致性hash算法,劝你简历别写搞过负载均衡

    这两天看到技术群里,有小伙伴在讨论一致性hash算法的问题,正愁没啥写的题目就来了,那就简单介绍下它的原理.下边我们以分布式缓存中经典场景举例,面试中也是经常提及的一些话题,看看什么是一致性hash算 ...

  6. 用人话理解hash算法、特性、唯一性等

    背景 博主在本科的时候曾经参加过数学建模,当初提交参赛论文的时候有两个提交时间点,第一个是提交MD5码的时间,第二个是提交具体参赛论文的时间,当初就很纳闷,直接提交论文不就ok吗?为什么多此一举呢 我 ...

  7. 什么是一致性 Hash 算法

    数据分片 先让我们看一个例子吧 我们经常会用 Redis 做缓存,把一些数据放在上面,以减少数据的压力. 当数据量少,访问压力不大的时候,通常一台Redis就能搞定,为了高可用,弄个主从也就足够了: ...

  8. hash算法_一致性hash算法简介

    一致性hash算法有什么用?我们为什么需要一致性hash算法?这两个问题的答案可以看这篇文章 分布式系统路由算法简介. 了解了一致性hash算法出现的背景,我们来看看什么是一致性hash算法.一致性h ...

  9. 一致性Hash算法(KetamaHash)的c#实现

    Consistent Hashing最大限度地抑制了hash键的重新分布.另外要取得比较好的负载均衡的效果,往往在服务器数量比较少的时候需要增加虚拟节点来保证服务器能均匀的分布在圆环上.因为使用一般的 ...

最新文章

  1. 程序员每天工作摸鱼俩小时,月薪35K?
  2. EntityFramework之原始查询及性能优化(六)
  3. 中南大学张昊:我非常期待基于AI的图像视频编码技术的创新
  4. CCNA笔记之第十九节:RIP协议(大实验3)
  5. mysql语句表名大小写敏感_Mysql 表名大小写敏感
  6. shell预先定义的特殊变量
  7. DTW动态时间规整算法
  8. 服务器群集:Windows 2000 和 Windows Server 2003 网络配置的最佳做法(转自Technet)
  9. 信息安全风险评估项目工序与流程
  10. Oracle 修改 MEMORY_TARGET
  11. 用pcl读ply文件_一分钟详解PCL中点云配准技术
  12. java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport ...
  13. 海康威视-网络通讯库错误码
  14. matlab 2013a破解文件
  15. Vivado远程编辑与下载
  16. 小米5splus(高配版/全网通)线刷兼救砖_解账户锁_纯净刷机包_教程
  17. 智方8000系汽车配件进销存管理系统 襄樊石开软件公司
  18. ThinkPHP 漏洞检测
  19. Git下载、安装及环境配置(超详细)
  20. 长沙黄花机场大巴车及公交车运行路线与时刻表

热门文章

  1. jdk API下载(英文的)
  2. 微信文件删除了怎么恢复,2个实测有效的办法推荐
  3. bt面板从7.1升级到7.5.2之后网络挂了
  4. i3 1005g1和i5 10210u哪个好
  5. netstat -an
  6. 二元决策图(Binary Decision Diagrams - BDD) (一)
  7. 5分钟理解Focal Loss与GHM
  8. 如何查询计算机已连接wife的密码错误,电脑已经连上无线如何查看WIFI密码
  9. [转]MATLAB 主要函数指令表(按功能分类)
  10. CSS之排列系列--块级元素、内联元素、内联块元素--区别/详解