关于海量数据去重的Hash讲解-布隆过滤器-分布式一致性 hash

关于hash

hash函数
映射函数Hash(key)=addr;hash函数可能会把两个或两个以上的不同key映射到同一地址,这种情况称之为冲突(或者hash碰撞);

hash特点及其种类

  • 计算速度快
  • 强随机分布(等概率、均匀地分布在整个地址空间)
  • murmurhash1,murmurhash2,murmurhash3,siphash(redis6.0当中使⽤,rust等大多数、语言选用的hash算法来实现hashmap)
  • siphash主要解决字符串接近的强随机分布性;

关于hash的负载因子

  • 数组存储元素的个数/数据长度;用来形容散列表的存储密度;负载因子越小,冲突越小,负载因子越大,冲突越大;

关于hash的冲突处理

布隆过滤器

原理
布隆过滤器是一种概率型数据结构,它的特点是高效地插入和查询,能确定某个字符串一定不存在
或者可能存在;
布隆过滤器不存储具体数据,所以占用空间小,查询结果存在误差,但是误差可控,同时不支持删除操作;
如图,str1和str2均经过过滤器。当一个元素插入时会经过k个hash函数映射到k个槽位中,如果查询到某个槽位的值为0,则可以肯定不存在这个值;如果全部均为1则可能存在,这是因为我们不知道这个被映射的槽位是否是要查询的那个str映射出来的(如str1和str2均映射了第六个)
在这里插入图片描述
应用场景
在这里插入图片描述

在这里需要理解这四个关系变量:
在这里插入图片这是啥意思描述
其中最重要的变量关系为p:k之间的关系;
其在k=31时p最小,究其原因是因为31质数,hash随机分布性是最好的,所以这时候假阳率p最低,即冲突的可能性也最低。
在这里插入图片描述

分布式一致性hash

背景
在这里插入图片描述

在这里插入图片描述

应用场景
分布式缓存;将数据均衡地分散在不同的服务器当中,用来分摊缓存服务器的压力;
解决缓存服务器数量变化尽量不影响缓存失效;
hash偏移
hash算法得到的结果是随机的,不能保证服务器节点均匀分布在哈希环上;分布不均匀造成请求
访问不均匀,服务器承受的压力不均匀;
在这里插入图片描述

虚拟节点

  • 为了解决哈希偏移的问题,增加了虚拟节点的概念;理论上,哈希环上节点数越多,数据分布越均衡;
  • 为每个服务节点计算多个哈希节点(虚拟节点);
  • 在这里插入图片描述
    更多参考
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值