数据结构--一致性哈希、虚拟节点、布隆过滤器

本文探讨了一致性哈希在处理服务器负载均衡中的应用,以及布隆过滤器在高效判断大量整数是否存在中的原理和误判问题。通过虚拟节点的概念,解释了如何避免服务器压力不均。同时,对比了布隆过滤器的空间效率和误判可能性,展示了其在实际场景中的适用性。
摘要由CSDN通过智能技术生成

1、一致性哈希:

 由于服务器数量发生改变,导致服务器中的数据受到影响

2、这是一个圆形,认为这个圆上存在无数个点,假设这个圆上存在2^32个点,每个点有一个编号从0~2^32

 这时,图片的关键字对2^32取余,结果看到底放到哪一台服务器上

 服务器分布不均匀,会导致有的服务器压力过大崩溃,因此引入虚拟节点

 虚拟节点:不存在的点,臆想出来的点

        

3、布隆过滤器

       使用场景:假设有11E个整型值,不重复,现在需要确定X值在不在这10E个整型值内?(从头到尾遍历可以找到,但时间复杂度高,O(n),如何更方便的找)

实际上,布隆过滤器就是一个非常长的二进制矢量 + 一组哈希函数

        假设,现在有三个不同的哈希函数A,B,C

需要判断一下250在不在?

首先先将250通过ABC这三个函数取计算,可以得到三个值,假设结果是3  9  19

       分析:如果250已经存在,则3,9,19的格子里应该都是1,反过来,如果这三个格子只要有一个不是1,则250肯定不在其中存储。

       需要判断一下50在不在?

       首先先将50通过ABC这三个函数取计算,可以得到三个值,假设结果是6  9  15

 分析:观察得到6,9,15的格子里应该都是1,那么50一定存在吗?结论是不一定

布隆过滤器的特点:可以非常快速的告诉你要找是否存在,判定不存在一定不存在,判定存在,有可能存在也有可能不在(误判)。

布隆过滤器的优缺点:

优点:      所占空间小             

                 插入、查找的时间复杂度特别低           

                 安全(不存储数据本身,装只存取二进制)

缺点:     会发生误判(计算得到的位都是1,但不能保证值真的存在)

                删除数据办不到

java测试出来的数据:

                如果误判率设定为 0.03%,大概需要的二进制位是700W,需要的哈希函数为5个

                如果误判率设定为 0.01%,大概需要的二进制位是900W,需要的哈希函数为7个

误判率降低,需要的二进制位增加,需要的哈希函数也更多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值