Cluster模式潜在问题学习笔记---一致性Hash算法原理

Cluster模式潜在问题学习笔记—一致性Hash算法原理

1.⼀致性Hash算法:⼀致性哈希算法思路如下

在这里插入图片描述

  1. ⾸先有⼀条直线,直线开头和结尾分别定为为1和2的32次⽅减1(整型Integer的最大范围),这相当于⼀个地址,对于这样⼀条线,弯过来构成⼀个圆环形成闭环,这样的⼀个圆环称为hash环
    在这里插入图片描述
  2. 我们把服务器的ip或者主机名求hash值然后对应到hash环上(hash环上对应的红色大节点)
  3. 那么针对客户端⽤户(绿色人头),也根据它的ip进⾏hash求值,对应到环上某个位置,然后如何确定⼀个客户端路由到哪个服务器处理呢?按照顺时针⽅向找最近的服务器节点

2.⼀致性Hash算法:缩容分析

  1. 假如将服务器3下线,服务器3下线后,原来路由到3的客户端重新路由到服务器4,对于其他客户端没有影响只是这⼀⼩部分受影响(请求的迁移达到了最⼩,这样的算法对分布式集群来说⾮常合适的,避免了⼤量请求迁移 )
    在这里插入图片描述

3.⼀致性Hash算法:扩容分析

  1. 增加服务器5之后,原来路由到3的部分客户端路由到新增服务器5上,对于其他客户端没有影响只是这⼀⼩部分受影响(请求的迁移达到了最⼩,这样的算法对分布式集群来说⾮常合适的,避免了⼤量请求迁移 )
    在这里插入图片描述

4.⼀致性Hash算法:需要注意的问题(数据(请求)倾斜问题),解决方案(虚拟节点方案)

  1. 如前所述,每⼀台服务器负责⼀段,⼀致性哈希算法对于节点的增减都只需重定位环空间中的⼀⼩部分数据,具有较好的容错性和可扩展性。
  2. 但是,⼀致性哈希算法在服务节点太少时,容易因为节点分部不均匀⽽造成数据倾斜问题。例如系统中只有两台服务器,其环分布如下,节点2只能负责⾮常⼩的⼀段,⼤量的客户端请求落在了节点1上, 这就是数据(请求)倾斜问题
  3. 为了解决这种数据倾斜问题,⼀致性哈希算法引⼊了虚拟节点机制,即对每⼀个服务节点计算多个哈希,每个计算结果位置都放置⼀个此服务节点,称为虚拟节点。
    在这里插入图片描述
  4. 具体做法可以在服务器ip或主机名的后⾯增加编号来实现。⽐如,可以为每台服务器计算三个虚拟节点,于是可以分别计算 “节点1的ip#1”“节点1的ip#2”“节点1的ip#3”(这三个虚拟节点对应节点1)“节点2的ip#1”“节点2的ip#2”“节点2的ip#3”(这三个虚拟节点对应节点2) 的哈希值,于是形成六个虚拟节点,当客户端被路由到虚拟节点的时候其实是被路由到该虚拟节点所对应的真实节点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值