SERVICE PHONE
363050.com发布时间:2025-12-26 22:18:45 点击量:
哈希交易所官网入口,哈希交易所注册,哈希交易所登录,哈希交易所下载,哈希交易所APP/哈希交易所官网入口为用户提供官方注册、登录、APP下载与币种交易服务,安全合规,快速充值提现,全面满足数字资产投资需求。
为了实现横向扩展,在服务器之间高效和均匀地分配请求/数据是很重要的。一致性哈希是为了达成这个目标而被广泛使用的技术。首先,我们看一下什么是重新哈希问题。
我们用一个示例来说明它是如何工作的。如表-1所示,我们有4个服务器,有8个字符串型的键(key)及其对应的哈希值(hash)。
为了获取存储了某个键的服务器的序号,我们需要做求余运算f(key)%4。比如,hash(key0)%4=1,表示客户端必须联系server1以获取缓存的数据。图-1基于表-1展示了键的分布。
这个方法在服务器池的大小固定不变的时候效果很好,并且数据的分布是均匀的。但是,当添加服务器或现有服务器被移除时问题就产生了。举个例子,如果server1下线,服务器池的大小就变成3。使用同样的哈希函数,对于同一个键,我们得到的哈希值不变。但是因为服务器数量减1,通过求余操作计算出的服务器序号就与之前的不同了。这可能会导致数据分布不均匀或错误地分配给错误的服务器。“哈希值%3”得到的结果如表-2所示。
如图-2所示,大部分的键都被重新分配了,不仅仅是原来存储在宕机服务器(server1)中的那些键。这意味着当server1宕机时,大部分缓存客户端都会连接错误的服务器来获取数据。这会导致大量的缓存未命中(Cache Miss)。一致性哈希是缓解这个问题的有效技术。
根据中的定义,“一致性哈希是一种特殊的哈希。如果一个哈希表被调整了大小,那么使用一致性哈希,则平均只需要重新映射k/n个键,这里k是键的数量,n是槽(Slot)的数量。对比来看,在大多数传统的哈希表中,只要槽的数量有变化,几乎所有的键都需要重新映射一遍”。
现在我们了解了一致性哈希的定义,接下来看看它是如何工作的。假设我们使用SHA-1作为哈希函数f,哈希函数的输出值范围是:x0,x1,x2,x3,…,xn。在密码学里,SHA-1的哈希空间是0到2160-1。这意味着x0对应0,xn对应2160-1。图-3展示了哈希空间。
使用同样的哈希函数f,我们根据服务器的IP地址或者名字将其映射到哈希环上。图-5展示了4个服务器被映射到哈希环上的情况。
值得一提的是,这里使用的哈希函数跟第1节中的不一样,这里没有求余运算。如图-6所示,4个键(key0、key1、key2和key3)被映射到哈希环上。
为了确定某个键存储在哪个服务器上,我们从这个键在环上的位置开始顺时针查找,直到找到一个服务器为止。图-7解释了这个过程,通过顺时针查找可知:key0存储在server0上;key1存储在server1上;key2存储在server2上;key3存储在server3上。
按照上面描述的逻辑,如果要在哈希环中添加一个新的服务器,只有少部分键需要被重新映射到新的服务器上,大部分键的位置保持不变。
如图-8所示,添加新的服务器后(server4),只有key0需要重新分配位置。key1、key2和key3都保留在原来的服务器上。我们仔细看一下这个逻辑。在添加server4之前,key0存储在server0上。现在,因为server4是从key0在哈希环上的位置开始顺时针查找时遇到的第一个服务器,所以key0会被存储到server4上。根据一致性哈希算法,其他的键不需要重新分配位置。
当一个服务器被移除时,如果使用一致性哈希,就只有一小部分键需要重新分配位置。如图-9所示,当移除server1时,只有key1需要重新映射到server2上,其他键则不受影响。
一致性哈希算法是麻省理工学院的David Karger等人首先提出的。它的基本步骤如下:
•要找出某个键被映射到了哪个服务器上,就从这个键的位置开始顺时针查找,直到找到哈希环上的第一个服务器。
这里有两个问题。第一,考虑到可以添加或移除服务器,所以很难保证哈希环上所有服务器的分区大小相同。分区是相邻服务器之间的哈希空间。在哈希环上分配给每个服务器的分区可能很小,也可能很大。如图-10所示,如果server1被移除,server2的分区(用双向箭头标记)就是server0和server3的两倍大。
第二,有可能键在哈希环上是非均匀分布的。举个例子,如果服务器映射的位置如图-11所示,则大部分键都会被存储在server2上,而server1和server3上没有数据。
虚拟节点是实际节点在哈希环上的逻辑划分或映射。每个服务器都可以用多个虚拟节点来表示。如图-12所示,服务器server0和server1都有3个虚拟节点。“3”这个数字是任意选的,在真实世界中,虚拟节点的数量要大得多。这里,我们不用s0而是改用s0_0、s0_1和s0_2来表示哈希环上的server0;用s1_0、s1_1和s1_2来表示哈希环上的server1。通过虚拟节点,每个服务器都对应多个分区。标记为s0的分区(边缘)是由server0来管理的。标记为s1的分区是由server1来管理的。
为了找到某个键存储在哪个服务器上,我们从这个键所在的位置开始,顺时针找到第一个虚拟节点。如图-13所示,为了确定key0键存储在哪个服务器上,我们从key0所在的位置出发,顺时针查找并找到虚拟节点s1_1,它对应的是server1。
当虚拟节点的数量增加时,键的分布就会变得更均匀。这是因为有更多虚拟节点以后,标准差会变小,从而导致数据分布更均匀。标准差衡量的是数据的分散程度。一个线上研究[插图]所做的实验显示:使用100个或200个虚拟节点时,标准差的均值约为10%(100个虚拟节点)和5%(200个虚拟节点)。当我们增加虚拟节点的数量时,标准差会更小。但是,这也意味着需要更多的空间来存储虚拟节点的数据。这需要权衡,我们可以调整虚拟节点的数量来满足系统的需求。
当添加或移除服务器时,有一部分键需要重新分配位置。如何找到受影响的键的范围并重新为它们分配位置呢?
如图-14所示,服务器server4被添加到哈希环上。从server4(新添加的节点)开始,沿着哈希环逆时针移动,直到遇到另一个服务器(图中为server3)为止,这就是受影响的键的范围。从图5-14可以看出,位于server3和server4之间的键需要重新分配给server4。
如图-15所示,服务器server1被移除。从server1(被移除的节点)开始,沿着哈希环逆时针移动,直到遇到另一个服务器(图中为server0)为止,这就是受影响的键的范围。从图-15可以看出,位于server0和server1之间的键需要重新分配给server2。
在本章中,我们对一致性哈希进行了深入的讨论,包括为什么需要进行一致性哈希和它是怎么工作的。一致性哈希有如下好处:
•减轻了热点键问题。过多访问一个特定分区可能会导致服务器过载。想象一下,如果Katy Perry、Justin Bieber和Lady Gaga的数据都被存储在同一个分区上会是什么情形。一致性哈希通过使数据更均匀地分布来减轻这个问题。
一致性哈希被广泛地应用于现实世界的系统中,包括一些非常出名的系统,例如:
【来源:巩义融媒】近日,河南省工业和信息化厅公布了2025年度河南省“零碳”工厂、“超级能效工”厂名单。巩义市两家企业上榜,人民电缆集团有限公司入选“零碳”工厂河南明泰铝业股份有限公司入选“超级能效”工厂。
洛阳市住房公积金管理中心发布最新通知,12月31日起暂停办理住房公积金业务。尊敬的缴存职工、单位:根据中心2025年度决算工作安排,2025年12月31日起暂停办理柜面及线上各项住房公积金业务,2026年1月4日起恢复正常。
新华社照片,北京,2025年12月26日。12月26日,彭珮云遗体在北京八宝山革命公墓火化。受中央委托,赵乐际、蔡奇、丁薛祥、韩正等到八宝山革命公墓为彭珮云送别,并慰问其亲属。
12月23日零时,随着一辆粤C牌照的私家车平稳驶入港珠澳大桥珠海公路口岸“粤车南下”出境专用车道,“粤车南下”进入香港市区政策正式落地实施,粤港两地车辆往来迈入“双向直通、市区直达”新阶段,粤港澳大湾区互联互通再进一步!
12月26日,郑州市第十六届人大常委会第二十四次会议任命王治安为郑州市监察委员会副主任,决定王治安代理郑州市监察委员会主任职务。
连日来,老泉复涌成为郑州街头巷尾热议的话题和网络上的顶流,继本月初干涸30多年的“贾鲁河源复涌”后,附近的凤鸣泉、金水河源头黄龙泉等多处也出现了出水渗水等复苏迹象。
重庆九龙城市开发集团有限公司原党委书记、董事长唐万民涉嫌严重违纪违法接受审查调查据九龙坡区纪委监委消息:重庆九龙城市开发集团有限公司原党委书记、董事长唐万民涉嫌严重违纪违法,目前正接受区纪委监委纪律审查和监察调查。
成都市温江区人大常委会原党组副书记、副主任陈定祥 严重违纪违法被开除党籍
日前,经成都市委批准,成都市纪委监委对成都市温江区人大常委会原党组副书记、副主任陈定祥严重违纪违法问题进行了立案审查调查。
据新民晚报报道,朋友圈中分享的全是包机出游、入住高档酒店、购买奢侈品等内容,自称是知名信托公司精英的“富二代”,背后竟是无固定工作的骗子。
“赌王见他得先跪。”一句话,把人的胃口吊死。这不是小说,是何家的家规。何世礼,香港首富何东的长子,也是何鸿燊的亲叔。赌王再风光,进门那一刻也得低头——长辈不动,晚辈不敢坐。可这位“长辈”偏偏不啃老。家缠万贯,却偏要跑去英国皇家坦克兵团、法国炮兵军校练操炮。
