- 5
- 0
- 约1.68万字
- 约 16页
- 2021-11-25 发布于重庆
- 举报
简介
一致性 Hash 是一种特殊的 Hash 算法,由于其均衡性、持久性的映射
特点,被广泛的应用于负载均衡领域,如 nginx 和 memcached都采用了一
致性 Hash 来作为集群负载均衡的方案。
本文将介绍一致性 Hash 的基本思路,并讨论其在分布式缓存集群负
载均衡中的应用。同时也会进行相应的代码测试来验证其算法特性,并给
出和其他负载均衡方案的一些对比。
一致性 Hash 算法简介
在了解一致性 Hash 算法之前,先来讨论一下 Hash 本身的特点。普通
的 Hash 函数最大的作用是 散列 ,或者说是将一系列在形式上具有相似性
质的数据,打散成随机的、均匀分布的数据。
比如,对字符串 abc 和 abcd 分别进行 md5计算,得到的结果如下:
可以看到,两个在形式上非常相近的数据经过 md5散列后,变成了完
全随机的字符串。负载均衡正是利用这一特性,对于大量随机的请求或调
用,通过一定形式的 Hash 将他们均匀的 散列 ,从而实现压力的平均化。
(当然,并不是只要使用了 Hash 就一定能够获得均匀的散列,后面会分
析这一点。)
举个例子,如果我们给每个请求生成一个 Key,只要使用一个非常简
单的 Hash 算法 Group = Key % N 来实现请求的负载均衡,如下:
(如果将 Key 作为缓存的 Key,对应的 Group 储存该 Key 的 Value ,
就可以实现一个分布式的缓存系统,后文的具体例子都将基于这个场景)
不难发现,这样的 Hash 只要集群的数量 N发生变化,之前的所有
Hash 映射就会全部失效。如果集群中的每个机器提供的服务没有差别,倒
不会产生什么影响,但对于分布式缓存这样的系统而言,映射全部失效就
意味着之前的缓存全部失效,后果将会是灾难性的。
一致性 Hash 通过构建环状的 Hash 空间代替线性 Hash 空间的方法解
决了这个问题,如下图:
整个 Hash 空间被构建成一个首尾相接的环,使用一致性 Hash 时需要
进行两次映射。
第一次,给每个节点(集群)计算 Hash,然后记录它们的 Hash 值,
这就是它们在环上的位置。
第二次,给每个 Key 计算 Hash,然后沿着顺时针的方向找到环上的第
一个节点,就是该 Key 储存对应的集群。
分析一下节点增加和删除时对负载均衡的影响,如下图:
可以看到,当节点被删除时,其余节点在环上的映射不会发生改变,
只是原来打在对应节点上的 Key 现在会转移到顺时针方向的下一个节点上
去。增加一个节点也是同样的,最终都只有少部分的 Key 发生了失效。不
过发生节点变动后,整体系统的压力已经不是均衡的了,下文中提到的方
法将会解决这个问题。
问题与优化
最基本的一致性 Hash 算法直接应用于负载均衡系统,效果仍然是不
理想的,存在诸多问题,下面就对这些问题进行逐个分析并寻求更好的解
决方案。
数据倾斜
如果节点的数量很少,而 hash 环空间很大(一般是 0 ~ 2^32 ),直
接进行一致性 hash 上去,大部分情况下节点在环上的位置会很不均匀,
挤在某个很小的区域。最终对分布式缓存造成的影响就是,集群的每个实
例上储存的缓存数据量不一致,会发生严重的数据倾斜。
缓存雪崩
如果每个节点在环上只有一个节点,那么可以想象,当某一
您可能关注的文档
- 一级结构工程师基础考试试卷及答案.pdf
- 一级结构工程师专业考试练习试题及答案.pdf
- 一级语文下册笔顺.pdf
- 一级注册消防工程师考试题库(题).pdf
- 一建建设工程经济知识点完整版.pdf
- 一建考试建设工程经济模拟考试试题.pdf
- 一面五星红旗.pdf
- 一模证伪题、实验汇编(含答案).pdf
- 一年级《心理健康》期末测试卷.pdf
- 一年级第二学期期末考试卷语文.pdf
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
最近下载
- 广东省广州市某中学2024-2025学年九年级下学期开学考试化学试卷.pdf VIP
- 2024年江苏大学附属医院招聘真题.docx VIP
- 直播电商模式下抖音消费者冲动购买行为影响因素研究(3).docx VIP
- 湖北省学位英语考试真题2023.pdf VIP
- 2026届高考语文复习:55分与45分作文,其精妙分野,究竟在何方?——以“活人感”与“敬自己”作文为例.pptx
- 2023年江苏大学附属医院医护人员招聘考试模拟试题及答案解析.docx VIP
- 2025年货代年终总结及明年计划.pdf VIP
- 2025-2030日本便利店业态创新方向与中国本土化改造案例报告.docx
- 高考必备单词三千五电子版.pdf VIP
- 2026安全生产第一课78张.pptx
原创力文档

文档评论(0)