常见的一致性哈希算法#Java实现#
2023-09-14 09:04:40 时间
之前参与过缓存框架的封装与测试工作,并对一致性哈希算法进行了相关的调研。通过对spymemcached与jedis等客户端源码的阅读对一致性哈希算法的Java实现进行调研:
1. 使用TreeMap实现,TreeMap本身继承NavigatableMap,因此具备节点导航的特点
JAVA面试——JVM(二)垃圾回收与算法 JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接的交互
之前参与过缓存框架的封装与测试工作,并对一致性哈希算法进行了相关的调研。通过对spymemcached与jedis等客户端源码的阅读对一致性哈希算法的Java实现进行调研:
1. 使用TreeMap实现,TreeMap本身继承NavigatableMap,因此具备节点导航的特点
2. 通过在内存中构建虚拟节点,每个物理节点存在160(默认值,可设置)个虚拟节点映射
1. 如何处理节点故障问题
源码分析:通过hash算法获取到的节点属于问题节点便进行N次的rehash操作,若执行N次的rehash操作依然没有定位到可用节点即报错。我在测试时发现,rehash经历N次后可能依然会定位到同一个故障节点,原因是我实际的物理节点数只有两台,所以每台物理节点存在50%的概率被命中。因此我建议物理节点数尽可能的多,分担哈希环区间,减少故障节点多次被命中的情况。
2. Set操作没有涉及到冗余存储
若node-1存储成功,可以在node-2, node-3上进行冗余存储并设置TTL。若遇到node-1节点故障,failover至node-2, node-3节点,尽量保证缓存命中;多节点冗余存储涉及到一致性的问题稍微复杂,因此引入TTL尽量缓解一致性的问题。
JAVA面试——JVM(二)垃圾回收与算法 JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接的交互
相关文章
- Java+MyEclipse+Tomcat (二)配置Servlet及简单实现表单提交
- Java面向对象基础--String类中常用的方法
- Java实现 蓝桥杯VIP 算法训练 非递归(暴力)
- Java实现 LeetCode 640 求解方程(计算器的加减法计算)
- Java实现 LeetCode 502 IPO(LeetCode:我疯起来连自己都卖)
- Java实现 LeetCode 287 寻找重复数
- java实现Playfair 密码
- java实现第五届蓝桥杯武功秘籍
- java算法集训代码填空题练习3
- Java实现 蓝桥杯VIP 算法提高 企业奖金发放
- Java实现 蓝桥杯VIP 算法提高 数字黑洞
- Java实现 蓝桥杯VIP 算法提高 11-2删除重复元素
- Java实现 蓝桥杯VIP 算法训练 会议中心
- Java实现 蓝桥杯VIP 算法训练 麦森数
- Java实现 蓝桥杯VIP 算法训练 快速排序
- Java实现 蓝桥杯VIP 算法训练 乘法表
- Java实现 蓝桥杯VIP 算法训练 开心的金明
- Java实现 蓝桥杯VIP 算法训练 二元函数
- Java实现 蓝桥杯 算法提高 求arccos值
- Java实现 蓝桥杯 算法提高 判断名次
- Java实现 蓝桥杯 算法训练 字串统计
- Java实现蓝桥杯 算法训练 ALGO-15 旅行家的预算
- java基础语法
- java中long和Long的区别
- 编写高质量代码:改善Java程序的151个建议 --[98~105]
- java基本数据类型及相互间的转换
- Java算法--冒泡排序
- Ian在北京做的CFCA的Java代码
- 力扣——713. 乘积小于 K 的子数组(Java、C实现百分百击败)
- Java基础复习到此结束,统一把源码放到GitHub仓库了,响应开源精神
- 对一致性Hash算法,Java代码实现的深入研究(TreeMap实现)
- java.util.zip.ZipException: invalid LOC header (bad signature)
- Java核心类库之(类加载器、反射机制、模块化)