geeCache 一致性hash

目标:解决当自身结点没有改缓存时,从哪个结点获得这个缓存的问题

一、普通的hash算法

hash('Tom')%结点数量

缺点:缓存雪崩

缓存雪崩是指在某一时刻,大量缓存同时失效或宕机,导致大量请求直接访问数据库,从而对数据库造成巨大压力,甚至可能导致数据库崩溃、系统不可用的情况。

当结点数量变化,每一个Key对应的结点都会发生变化,而变化后的结点没有存放该缓存,又需要通过访问数据库获得,造成缓存雪崩。

二、一致性hash

一致性哈希算法是一种在分布式系统中广泛使用的哈希算法,它主要用于解决在动态变化的网络环境中数据的分发和节点的负载均衡问题。

一致性哈希算法将整个哈希值空间映射成一个虚拟的圆环,这个圆环的范围是0到2^32−1。这个圆环被称为哈希环

在分布式系统中的节点(例如缓存服务器、数据库节点等)通过哈希函数计算其在哈希环上的位置。通常使用节点的唯一标识(如IP地址或名称)作为关键字进行哈希,确定每台机器在哈希环上的位置。

当需要定位一个数据时,首先通过哈希函数计算数据的哈希值,然后沿着哈希环顺时针找到第一个大于等于该哈希值的节点位置,即为数据所在的节点。这个过程称为数据的路由或查找。

负载均衡:建立多个虚拟节点,通过map存放虚拟节点hash值和真实结点名称的对应关系

构造函数:

添加结点

虚拟节点hash:编号加名称

获得对应的Key需要查找的结点名称

相关推荐
如此这般英俊2 分钟前
手搓Claude Code-第十三章 background_tasks
前端·人工智能·chrome·python·算法·语言模型·自然语言处理
Fa_Mian_Tuan6 分钟前
图论基础 | 邻接多重表原理剖析 + 完整可运行C语言代码(插边/删边/释放)
c语言·数据结构·笔记·算法·图论
学习星球8 分钟前
【LeetCode算法题精讲】二分查找精讲
java·数据结构·算法·leetcode·职场和发展·图搜索
民乐团扒谱机12 分钟前
【微实验】线性代数之——奇异值分解 SVD:穿透数据迷雾的“X光机”,附 MATLAB 全流程仿真
线性代数·算法·matlab
arin87615 分钟前
【图论】网络流
算法
_Narcissus_27 分钟前
B+树的概念和操作笔记(含完整代码实现)
c语言·数据结构·数据库·c++·笔记·b树·算法
aichitang202429 分钟前
快乐泛函每一天!内积空间
c++·python·数学·算法·机器学习·ai·泛函分析
茜茜数模1 小时前
2026年天府杯大学生数学建模A题全套资源
人工智能·算法·机器学习
PhotonixBay1 小时前
从粗糙度到三维形貌:激光共聚焦显微镜实现微米级表面分析
图像处理·人工智能·测试工具·算法
2401_862880822 小时前
数据结构 --- 算法
数据结构·算法