美文网首页
哈希算法

哈希算法

作者: weiee | 来源:发表于2020-06-13 15:18 被阅读0次

什么是哈希算法?
将任意长度的二进制值串映射到固定长度的二进制值串,这种映射规则就是哈希算法。

哈希算法的应用:

  1. 安全加密:MD5,SHA

  2. 唯一标识:

例如查找图片是否存在,简单的方法将图片转换为二进制串,在图库中一一进行对比,但图片文件如果较大,转换为二进制串后将会很长,对比将变得很耗时。

采用哈希算法可优化查找图片方式。首先将图片的摘要信息转换为哈希值作为图片的唯一标识,将哈希值和图片路径存到散列表中,查找图片时利用相同的哈希函数获取唯一标识查询。

  1. 数据校验:例如验证视频文件下载前后的哈希值是否一致。

  2. 散列函数:哈希算法也可作为散列函数,散列函数对反向获取数据和散列碰撞要求不高。对通过散列后值是否均匀分布、散列函数的效率更为关注。

  3. 负载均衡:

实现会话粘滞的负载均衡算法。即相同客户IP或会话ID,请求需要发送到同一台机器上。

将客户IP或会话ID通过哈希算法计算得到哈希值,再将哈希值对机器数量进行取模运算,获取的值作为最终机器编号。这样相同的IP或ID都会映射到同一个编号的机器上。

  1. 数据分片:

对数据量过大,一台机器无法满足高效计算的场景,可将数据分片下发到多台机器,并发计算提高效率。

例1:对1T条搜索记录的日志文件,统计搜索关键字的次数。首先通过n台机器并行处理,从日志文件中依次读取关键字,并通过哈希算法获取关键字的哈希值,再对哈希值进行机器数目的取模运算获取机器编号,这样相同关键字的都将映射到同一台机器中。每台机器分别计算搜索次数。

例2: 搜索图片是否存在。分发到n台机器维护图片存储的散列表。将图片的信息摘要进行取模运算,得到机器编号,在对应的机器中查找。

  1. 分布式存储:

利用数据分片的思想,对数据的哈希值进行取模,得到的编号作为存储的机器编号。

但如果缓存机器扩容,将会搬迁旧数据到新的机器中,原来机器的缓存失效,所有数据都对数据库发起请求。

由此,需要一种扩容机器后,不需要做大规模数据迁移的哈希算法来解决数据搬迁问题:一致性哈希算法。

相关文章

网友评论

      本文标题:哈希算法

      本文链接:https://www.haomeiwen.com/subject/knaatktx.html