当前位置:首页 > 日记 > 正文

一致性哈希算法及其PHP实现的详细分析

一致性哈希算法及其PHP实现的详细分析
在负载均衡算法中,有很多是在服务器负载均衡选项包括:循环算法(罗宾)、哈希算法(hash)、最小连接(最少连接)算法、响应速度(响应时间)、加权方法(加权)等,而哈希算法是最常用的算法。

典型的应用场景是:N服务器提供缓存服务,服务器需要负载平衡,请求平均分配给每个服务器。每台机器负责1个服务。

常用的算法得到的余数(hash()mod n)的散列结果:本机号码是从0到n-1,根据自定义的hash()算法,每个请求的哈希值进行采样的N,和剩余数我得到,然后请求分布式的机器编号、但算法如一个致命的问题存在,如果一个机器的停机时间,所以机器应在请求不能得到妥善处理,它将需要从服务器时,该算法从去除掉,这个时候会有(n-1)/数据缓存服务器需要重新计算,如果添加;机器,会有N /(N + 1)数据缓存服务器需要重新计算的系统,这通常是一个不可接受的凸点(因为这意味着大量的缓存故障或数据需要被传输)。因此,如何设计一个负载平衡策略以使受影响的请求尽可能的小呢

一致性哈希算法中采用Memcached,键值存储,BitTorrent的DHT和LVS。可以说,一致哈希算法是分布式系统负载均衡的首选算法。1、一致性哈希算法描述

下面是一个例子,在缓存一致性哈希算法。
对于一般的unsigned int类型的哈希算法的结果,所以对散列函数的结果应该是均匀地分布在{ 0232-1 },如果我们把一圈均匀切232分,根据hash(key)函数来计算服务器的哈希值(节点),并分发给0 ~ 232元。

相同的散列(key)函数用于查找需要存储并映射到圆的密钥的哈希值。然后从数据的位置到顺时针查找,数据被保存到找到的第一个服务器(节点)中。
一致散列原理示意图

当一个新的节点加入,只有第一节点,将节点添加到环上的顺时针方向的数据将受到影响。你删除一个节点时,节点开始顺时针方向的原始数据只删除环上会受到影响,所以一致性哈希是负载平衡的新结一个好的解决方案,删除的问题造成节点哈希碰撞。
虚拟节点(虚拟节点):引入虚拟节点的原因,因为服务器(节点)少(例如,只有3的服务器),hash(key)来计算环中的哈希值的节点分布不均匀(稀疏),仍然会有节点的负载平衡的问题。虚拟节点可以视为一份实际节点(复制品),它在本质上是相同的实际节点(重点是不一样的),通过引入虚拟节点,我们扩大数量的每个实际的服务器(节点)在一定比例(如200倍),并计算它的哈希值(关键)均匀分布于环,负载均衡,哈希值下降到虚拟节点实际上落在实际的节点。因为所有的交流虚拟节点复制成相同比例的虚拟节点的哈希值均匀地分布在环问题解决节点数量较少时。
虚拟节点对一致散列结果的影响
从上面,我们可以看到,当节点数为10,每房节点的虚拟节点的数目是实际节点的100-200倍,其结果是相当平衡。
文中第第三段:但是这个算法有致命的问题,如果一台机器停机,那么机器应该在请求中不能正常处理,它将需要从服务器上从算法中删除时被删除,这时将有(n-1)n服务器来缓存数据来计算;

为什么是(n-1) n解释如下:

例如,有3台机器,在3个站点上散列值1-6的分布是:
主持人1:14
主机2:25
主机3:36
如果你挂上一个,只有两个,而模是2,那么分布就变成了:
5主机1:13
6主机2:24

你可以看到数据,仍然不变的位置只有2:1, 2,位置变化有4,占总数的6,数据是4 6=2 3,那么,受影响的数据太多,太多的数据要从db重新加载到缓存,严重影响性能。

{一致散列法}
上面提到的散列需要模块,并且模块的数量相对较少,通常是加载的数量。一致散列法的本质是取较多的模块数,将1的2减少到32的功率,即最大的32位整数,这样就可以很容易地安排数据进行引导,该图相当直观。
接下来的部分是一致性哈希算法的PHP实现。

相关文章

这项研究称微软OfficeOffice轻用户

这项研究称微软OfficeOffice轻用户

用户,电脑软件,OfficeOffice,5月4日,据国外媒体报道,对SoftWatch的应用分析,一个创业公司,本周发布的。据报道,微软Office授权的业务正在浪费金钱,因为大多数员工实际上并不使用这些应用程序。 SoftWatch认为,企业可以通过廉价的云应用节省大量资…

飞碟:游戏中的敌人如何获得地球之星

飞碟:游戏中的敌人如何获得地球之星

解决方案,飞碟,之星,如何获得,敌人,问题: 最近,玩了《飞碟:敌人》里面的爱情游戏,收集里面的勋章,但现在只有在封闭基地的内战地球之星勋章一直找不到办法,不知道有什么战术 答案uff1a 事实上,飞碟:游戏中的敌人是为了获得奖牌而确保你的队伍幸存…

MySQL选择插入数据(包括没有列)的具

MySQL选择插入数据(包括没有列)的具

插入数据,选择,电脑软件,MySQL,MySQL > select'name,ID从table_b; / / 'name'不是在table_b表 ------ ----------- + + + |名字| ID | ------ ----------- + + + |名字| 123456 | |名字| 1234567 | |名字| 12345678 | |名字| 123456789 | …

通过修改注册表提高Windows7宽带上

通过修改注册表提高Windows7宽带上

修改注册表,宽带上网,速度,电脑软件,评论:决定上网的大部分因素是宽带流量。通过修改注册表项,我们可以提高Internet访问的速度。测试结果相当不错。 然而,决定上网的大部分因素是宽带流量。相对来说,在机器上加速上网的技术是蚊子肉,但怎么说是…

微软Office移动应用程序是免费的家

微软Office移动应用程序是免费的家

家庭用户,应用程序,电脑软件,Office,北京时间3月28日早间消息,微软Android版和iPhone版Office移动应用程序现在对所有家庭用户都是免费的。该公司取消了用户请求订阅Office 365服务,并打开了所有的文件查看和编辑功能。 业内人士表示,微软此…

Linux系统没有磁盘碎片整理功能Lin

Linux系统没有磁盘碎片整理功能Lin

方法,系统,磁盘碎片整理,简单,功能,点评:该文件系统的Windows系统在保存文件时总是会有一个片段,和Linux采取一个更聪明的方式将文件,它会分散在整个磁盘文件,文件直接给了很大的自由空间,即使它是支离破碎的,文件系统将减少碎片的日常使用移动文…

gcasnotice.exe的功能是什么该gcas

gcasnotice.exe的功能是什么该gcas

查询,功能,过程,电脑软件,gcasnotice,点评:gcasnotice.exe是巨人 /微软反间谍软件相关程序 进程文件:gcasnotice或gcasnotice.exe 进程名称:微软反间谍软件程序流程 过程类别:安全风险的过程 英文描述: gcasnotice.exe是一个过程,属于巨人/微软…

在win8系统快捷键Win8常见的热键

在win8系统快捷键Win8常见的热键

快捷键,热键,系统,常见,电脑软件,点评:新的Win8已经成为一个不可尝试的系统,所以在Win8的快捷键是什么让我们看看Win8新的键盘快捷键,看一看 除了一些新的热键外,Windows以前版本中使用的许多常用热键仍然可用。 首先,介绍了Windows 8消费者预…

如何创建一个虚拟网卡Win8具体如何

如何创建一个虚拟网卡Win8具体如何

虚拟,操作,网卡,创建一个,电脑软件,点评:添加虚拟网卡Win8系统操作不当win7一样。这里是如何在Win8创建虚拟网卡。 添加虚拟网卡Win8系统操作不当win7一样。许多朋友不知道如何操作。今天萧边将教你如何在Win8创建虚拟网卡。 添加虚拟网卡W…

小米手机退出游戏后出现在加载(解决

小米手机退出游戏后出现在加载(解决

加载,退出,小米手机,解决方案,出现在,问题: 小米手机关机后,游戏负载出了什么问题 答案uff1a 小米手机用这个方法解决上面提到的问题,打开设置>开发者选项,不关闭保留活动,可以重启。 (答案来源:小米官网整理:米粉) 小米手机的其他知识 问:OTG技…

SlackwareLinux的启动过程

SlackwareLinux的启动过程

启动过程,电脑软件,SlackwareLinux,评论:Joe Brockmeier研究Slackware Linux初始化的过程。他讨论系统如何初始化服务,各种运行级别是什么,以及如何添加或从默认安装定制的系统中删除服务。 Linux用户正变得越来越成熟,这意味着他们希望配置系…

frsk.exe的功能是什么该查询的功能

frsk.exe的功能是什么该查询的功能

查询,功能,过程,电脑软件,frsk,点评:frsk.exe是篡改程序,会篡改你的IE浏览器设置,在桌面创建链接指向其合作伙伴 进程文件:FRSK或frsk.exe 进程名称:FRSK间谍 过程类别:安全风险的过程 英文描述: frsk.exe or这意味着它会间歇性地改变你的Intern…