当前位置:首页 > 经验 >

哈希算法的数学原理(哈希算法通俗易懂)

来源:原点资讯(www.yd166.com)时间:2022-11-18 03:32:48作者:YD166手机阅读>>

如上图所示,这里其实是分了10张表,openid计算后的hash值取模10,得到对应的分表,在进行后续处理就好。对于一般的活动或者系统,我们一般设置10张表或者100张表就好。

下面我们来看一点复杂的问题,假设我们活动初始分表了10张,运营一段时间以后发现需要10张不够,需要改到100张。这个时候我们如果直接扩容的话,那么所有的数据都需要重新计算Hash值,大量的数据都需要进行迁移。如果更新的是缓存的逻辑,则会导致大量缓存失效,发生雪崩效应,导致数据库异常。造成这种问题的原因是hash算法本身的缘故,只要是取模算法进行处理,则无法避免这种情况。针对这种问题,我们就需要利用一致性hash进行相应的处理了。

一致性hash的基本原理是将输入的值hash后,对结果的hash值进行2^32取模,这里和普通的hash取模算法不一样的点是在一致性hash算法里将取模的结果映射到一个环上。将缓存服务器与被缓存对象都映射到hash环上以后,从被缓存对象的位置出发,沿顺时针方向遇到的第一个服务器,就是当前对象将要缓存于的服务器,由于被缓存对象与服务器hash后的值是固定的,所以,在服务器不变的情况下,一个openid必定会被缓存到固定的服务器上,那么,当下次想要访问这个用户的数据时,只要再次使用相同的算法进行计算,即可算出这个用户的数据被缓存在哪个服务器上,直接去对应的服务器查找对应的数据即可。这里的逻辑其实和直接取模的是一样的。如下图所示:

哈希算法的数学原理,哈希算法通俗易懂(9)

初始情况如下:用户1的数据在服务器A里,用户2、3的数据存在服务器C里,用户4的数据存储在服务器B里

下面我们来看一下当服务器数量发生变化的时候,相应影响的数据情况:

  • 服务器缩容

哈希算法的数学原理,哈希算法通俗易懂(10)

服务器B发生了故障,进行剔除后,只有用户4的数据发生了异常。这个时候我们需要继续按照顺时针的方案,把缓存的数据放在用户A上面。

  • 服务器扩容

    同样的,我们进行了服务器扩容以后,新增了一台服务器D,位置落在用户2和3之间。按照顺时针原则,用户2依然访问的是服务器C的数据,而用户3顺时针查询后,发现最近的服务器是D,后续数据就会存储到d上面。

哈希算法的数学原理,哈希算法通俗易懂(11)

  • 虚拟节点

    当然这只是一种理想情况,实际使用中,由于服务器节点数量有限,有可能出现分布不均匀的情况。这个时候会出现大量数据都被映射到某一台服务器的情况,如下图左侧所示。为了解决这个问题,我们采用了虚拟节点的方案。虚拟节点实际节点(实际的物理服务器)在hash环上的复制品,一个实际节点可以对应多个虚拟节点。虚拟节点越多,hash环上的节点就越多,数据被均匀分布的概率就越大。

哈希算法的数学原理,哈希算法通俗易懂(12)

栏目热文

哈希算法最简单的解释(最简单的哈希算法)

哈希算法最简单的解释(最简单的哈希算法)

什么是Hash算法Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-...

2022-11-18 03:32:23查看全文 >>

哈希算法详解图解(哈希算法最简单的解释)

哈希算法详解图解(哈希算法最简单的解释)

要了解一致性哈希,首先我们必须了解传统的哈希及其在大规模分布式系统中的局限性。简单地说,哈希就是一个键值对存储,在给定键...

2022-11-18 03:12:16查看全文 >>

小红帽安妮绝版了吗(小红帽安妮皮肤现在还能不能买)

小红帽安妮绝版了吗(小红帽安妮皮肤现在还能不能买)

很久没发手游的内容了,刚好7月16日正式公测,这次更新的内容大概看了一眼还是挺有意思的。我这里写的内容还是以活动和福利为...

2022-11-18 03:35:51查看全文 >>

安妮十周年皮肤好不好(安妮十周年皮肤价格)

安妮十周年皮肤好不好(安妮十周年皮肤价格)

小伙伴们大家好,我是小数点。正所谓不鸣则已一鸣惊人,当大家还在惊讶于LOL这游戏走到十周年这个坎怎么还没啥动静的时候,1...

2022-11-18 03:23:19查看全文 >>

十周年安妮皮肤稀有吗(安妮十周年皮肤错过了)

十周年安妮皮肤稀有吗(安妮十周年皮肤错过了)

​LOL十周年最强福利并不是第11天领的10周年限定安妮皮肤,而是第十天领的随机传说皮肤,为什么这么说?十周年限定安妮皮...

2022-11-18 03:37:53查看全文 >>

哈希值怎么计算(哈希值是什么怎么查询)

哈希值怎么计算(哈希值是什么怎么查询)

我们在谈到区块链的时候,经常会听到关于哈希、哈希值、哈希算法这些词。很多人都认为哈希就是区块链上的安全保障,但是严格来说...

2022-11-18 03:24:05查看全文 >>

哈希算法简单举例(哈希算法最简单的解释)

哈希算法简单举例(哈希算法最简单的解释)

文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定。可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一...

2022-11-18 03:00:48查看全文 >>

哈希算法最终结果(哈希算法的真实案例)

哈希算法最终结果(哈希算法的真实案例)

哈希算法一直是索引中最为经典的方法,它们能高效地储存与检索数据。但在去年 12 月,Jeff Dean 与 MIT 等研...

2022-11-18 02:56:45查看全文 >>

哈希算法图解大全(最简单的哈希算法)

哈希算法图解大全(最简单的哈希算法)

摘要本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用。首先...

2022-11-18 02:53:44查看全文 >>

最简单的哈希算法(哈希算法通俗易懂)

最简单的哈希算法(哈希算法通俗易懂)

作者:小傅哥 博客:https://bugstack.cn沉淀、分享、成长,让自己和他人都能有所收获!一、前言哈希表的历...

2022-11-18 03:08:01查看全文 >>

文档排行