geeCache 一致性hash

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

一、普通的hash算法

hash('Tom')%结点数量

缺点:缓存雪崩

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

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

二、一致性hash

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

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

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

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

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

构造函数:

添加结点

虚拟节点hash:编号加名称

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

相关推荐
AndrewHZ2 小时前
【LLM技术全景】阶段总结:技术原理篇核心知识回顾
人工智能·深度学习·算法·语言模型·大模型·llm·芯片开发
小星星闪亮登场3 小时前
2026萌新联赛第三场-- (郑州轻工业大学)
数据结构·c++·经验分享·算法·贪心算法·排序算法·深度优先
冻柠檬飞冰走茶3 小时前
PTA基础编程题目集 7-8超速判断(C++语言实现)
开发语言·数据结构·c++·算法
玖玥拾4 小时前
LeetCode 88 合并两个有序数组
算法·leetcode
数据皮皮侠AI4 小时前
上市公司数字供应链金融指数(2010-2024)
大数据·人工智能·算法
小程故事多_804 小时前
用GRPO算法重塑多智能体系统,从原理落地到复杂任务规划实战
人工智能·算法
Hi李耶5 小时前
【LeetCode】541.反转字符串 II
算法·leetcode·职场和发展
shylyly_5 小时前
104.二叉树的最大深度
数据结构·算法·104.二叉树的最大深度
AI科技星5 小时前
曲率‑挠率与 $\boldsymbol{\omega/c}$ 的关系、精算验证及其物理意义
c语言·开发语言·线性代数·算法·决策树·机器学习·ai科技星
沐籽李6 小时前
HuDiff在抗体人源化项目中的工程化落地
人工智能·算法·aidd·抗体设计