哈希算法的应用
负载均衡
-
常见的负载均衡算法:轮询、随机、加权轮询等
-
通用的需求:将一个用户的请求打到相同的服务器上,高效利用缓存
- 对客户端的IP地址或者会话ID计算哈希值
- 根据hash值取模计算,分配到不同的服务器上
数据分片
-
如何统计关键字搜索次数
- 难点:日志很大,不能放入一台服务器内存
- 解决思路:将任务拆分(将关键字hash到不同机器上),通过不同服务器进行处理
- 类似MapReduce
-
如何判断图片是否在图库
- 先利用哈希值对机器取模,在对机器进行ahsh查找
- 突破单机限制
分布式存储
- 利用hash实现分布式存储
- 问题:增加机器后,取余将会造成数据丢失,最终造成缓存雪崩
- 解决:通过一致性hash算法解决(虚拟环和虚拟节点)
总结
- 除了上述应用,还应用在网络中的CRC校验,Git commit id等等