哈希2:认识布隆过滤器,一致性哈希

布隆过滤器: 当我们要解决处理海量数据的时候,我们可以使用布隆过滤器。它其实也是一个集合。但是它有失误率。
例子:当我们处理黑名单的时候,比如有100亿个黑名单,每一个就是一个链接,每个url是64个字节,当用户访问的时候我要判断是不是属于这个黑名单。
在这里插入图片描述
显然我们可以想到用哈希表来处理,但是当我们用哈希表来解决的需要多大的空间呢,6400亿个字节也就是640G,太大了。这个时候我们就可以使用布隆过滤器了,它具体是什么呢。一个bitmaps,里面都是比特位。一个整形数组是4个字节,也就是32个比特。怎么搞出比特数组出来,使用基础类型拼出来。
在这里插入图片描述
搞出比特数组了出来我们怎么处理呢,看图
在这里插入图片描述
怎么决定开多大的bit数组和使用多少个哈希函数呢:
在这里插入图片描述
一致性哈希: 一致性哈希,数据迁移代价很低,又能做到负载均衡。
在这里插入图片描述
这里有一个问题,那就是如果要加一个或者减一个的话,那么原本的负载均衡将会被打破,做不到负载均衡。这就需要一个技术了,虚拟节点技术。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
布隆过滤器是一种用于快速判断一个元素是否可能存在于一个集合中的数据结构。它可以通过牺牲一定的准确性来提高查询效率。布隆过滤器的主要应用之一就是解决数据一致性的问题。 在分布式系统中,数据一致性是一个重要的问题。当多个节点同时对数据进行更新时,可能会导致不同节点之间的数据不一致。为了解决这个问题,可以使用布隆过滤器来快速判断一个新的更新是否已经在其他节点上被处理过,从而避免重复处理。 具体来说,可以将每个节点维护一个布隆过滤器,用于记录已经处理过的更新。当一个节点接收到一个新的更新时,首先将更新的内容通过哈函数映射到布隆过滤器中的位数组上,并将相应位置置为1。然后,节点可以查询其他节点的布隆过滤器,判断该更新是否已经被其他节点处理过。 如果一个更新被多个节点同时接收到并处理,由于布隆过滤器的准确性有限,可能会存在误判的情况。这时可以通过其他机制来保证数据最终的一致性,比如使用分布式锁或者进行协调和同步。 总结起来,布隆过滤器可以在分布式系统中用于判断一个更新是否已经被其他节点处理过,从而解决数据一致性的问题。然而,布隆过滤器并不能保证完全的准确性,可能存在一定的误判率,需要结合其他机制来确保数据的最终一致性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值