哈希一致性

前言

一致性哈希算法由 麻省理工学院于 1997年提出, 是一种特殊的哈希算法, 在移除或添加一个服务器时,能尽可能小的改变 已存在的服务请求与处理请求服务器之间的映射关系。
一致性哈希解决了简单哈希算法在分布式 哈希表(Distributed Hash Table, DHT) 中存在的动态伸缩等问题。

一、概述

在解决分布式系统负载均衡的问题时, 可以使用hash算法让固定的部分请求落到同一机器上,但一般的hash算法伸缩性较差,当新增或者下线机器的时候, 用户id 与服务器映射关系会大量失效。 一致性hash 利用hash环,解决了 分布式哈希表动态伸缩问题。
下面,我们举一个简单的例子:
假设有四台服务器, ip0, ip1, ip2 , ip3.

  • 一致性hash 首先计算这四个ip地址的hash值, hash(ip0) 、hash(ip1)、hash(ip2)、hash(ip3), 计算出来的值 是 从 0 到 最大正整数之间的一个数, 这四个值在一致性hash环 上呈现如下的状态:
  • 在这里插入图片描述
  • hash 环上 顺时针从整数0 开始, 一直到最大正整数, 我们根据四个ip计算的hash值,会落到换上的某个点, 至此,我们 的四个服务器落到了一个一致性hash环上。
  • 当用户在客户端进行请求的时候, 首先根据hash(用户id)计算路由规则(hash值), 然后看hash值 落到hash环的 哪个地方, 根据hash值 在hash环 上的位置 顺时针找距离醉经的ip作为路由ip。在这里插入图片描述
  • 如上图, user1的请求会落到ip0, user2 的请求会落到服务器ip1,user3 的请求会落到 ip2, user4的请求会落到ip3, user5的请求会落到ip0。
  • 可以想象,如果某一个节点挂了,会出现什么情况,如果ip1挂了, user2的请求就会顺延,落到ip2上。

下面是新增加机器会出现什么情况呢?
在这里插入图片描述
多了ip5以后, 相对关系没有发生变化, 那么客户端访问服务器的顺序就不会改变, 如果,相对拓扑关系发生变化,就会发生相应的改变,(但是应注意,新的请求只会映射到新的机器或者原来的机器上,下面的hash一致性的单调性有讲解)。

二、一致性hash的特性

  1. 单调性(Monotonicity), 单调熊是指如果已经有一些请求通过哈希分派到了相应的服务器进行处理, 又有新的服务器加入到系统中的时候, 应保证原有的请求可以被映射到原有的或者新的服务器中, 而不会别映射到原有的其他服务器上。
  2. 分散性(Spread): 分布式环境中, 客户端请求时候可能不知道所有服务器的存在,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值