IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 一致性哈希,虚拟节点,布隆过滤器 -> 正文阅读

[数据结构与算法]一致性哈希,虚拟节点,布隆过滤器

目录

1.一致性哈希

2.虚拟节点

3.布隆过滤器(海量数据去重)


1.一致性哈希

例如:有三个服务器A,B,C,而现在我们手中有6W张照片,那么怎么把这些照片分给三个服务器?方法为:提取图片的关键字 % 服务器个数(3)?

假设,又新加了一台服务器D,这时会发生什么? 那之前的很多图片的位置都要发生改变

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

2.虚拟节点

?上面只是一种理想的状态,几乎是达不到的。有时会出现哈希偏斜:

此时,就需要引入虚拟节点概念,虚拟节点:不存在的点,臆想出来的点

例如:A? B C是真实的服务器,接着就把A,B,C分身(虚拟)——A: A1 A2 A3 ;B: B1 B2 B3 ;C:C1 C2 C3;

?我们如果遇到了A1 A2 A3也就是A的分身,我们可以直接认为遇到了A本身

绿色弧,认为都是属于服务器A的部分,和之前的哈希偏斜相比,压力大大减少,接近于均分

3.布隆过滤器(海量数据去重)

例如:有10E个整型值,不重复,现在需要确定X存不存放在这10E个整型数内?

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

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

?这是20个二进制位,要么存1,要么存0。

设100,200,300这三个数经过哈希函数A, B, C的分解后剩下的数字如图所示,我们把有的数字为值改为1:

?再然后,需要判断一下250在不在这组数中,而我们知道250可以被A,B,C三个函数分解为:

分析一下:如果250存在,则3,9,19的格子里应该都是1,但是我们看到19这个格子并不是1,所以250是不存在的。

最后,判断一下50在不在这组数中,50可以被A,B,C三个函数分解为:

分析一下:50可以被A,B,C三个函数分解为6,9,15,而6,9,15这三个格子确实都是1,那么这个时候可以认定50一定在吗?显然是不能认定的,因为我们知道6对应格子的1是100或200的,9对应格子的1是100的,15对应格子的1是300的,所以不能得到50一定存在的结论。这就是布隆过滤器的一个缺点。

布隆过滤器的特点:他可以非常快速的告诉我们一个值存不存在,如果判定不存在是一定不存在,但是如果判定存在的话,不能保证,有可能不存在

布隆过滤器的优点:

1.占用空间小?

?2.插入,查找时间复杂度特别低?

?3.安全,布隆过滤器不存在存储原始数据本身,所以不害怕被盗。

布隆过滤器的缺点:

1.会发生误判(如果计算得到的位都是1,但是不能保证这个值真的存在)

2.删除根本办不到

误判率:? 0.03? ? ? 700W? ? ? ? ? 5个

? ? ? ? ? ? ? ? ?0.01? ? ?900W? ? ? ? ? 7个

误判率降低 —— 导致二进制位占用空间增加 —— 导致需要的哈希函数增加

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 22:50:27  更:2022-03-15 22:53:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 13:38:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码