当前位置: 首页 > news >正文

geeCache 一致性hash

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

一、普通的hash算法

hash('Tom')%结点数量

缺点:缓存雪崩

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

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

二、一致性hash

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

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

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

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

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

 构造函数:

添加结点 

虚拟节点hash:编号加名称

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

http://www.lryc.cn/news/503702.html

相关文章:

  • 【我的开源】ESCurlGen 一款 ElasticSearch curl 命令生成器
  • Python库NetworkX介绍
  • Muduo网络库解析--网络模块(2)
  • 【读书笔记】《论语别裁》语文的变与不变
  • elasticsearch 使用预处理将JSON类型转换成Object类型
  • 华为HarmonyOS NEXT 原生应用开发: 数据持久化存储(用户首选项)的使用 token令牌存储鉴权!
  • 每天40分玩转Django:Django视图和URL
  • Kioptirx level4
  • JPG 转 PDF:免费好用的在线图片转 PDF 工具
  • 《Django 5 By Example》阅读笔记:p543-p550
  • 精品基于Python实现的微信小程序校园导航系统-微信小程序
  • 【数字花园】个人知识库网站搭建:①netlify免费搭建数字花园
  • 数据仓库工具箱—读书笔记01(数据仓库、商业智能及维度建模初步)
  • 分布式 窗口算法 总结
  • docker容器内部启动jupyter notebook但是宿主机无法访问的解决方法
  • 2.2 数据库设计方法
  • ALOHA 协议详解
  • Quant connect的优势和不足,学习曲线难
  • 分布式 漏桶算法 总结
  • 2450.学习周刊-2024年50周
  • 前端性能优化实战:从加载到渲染的全链路提升
  • pdf merge
  • Python高性能web框架-FastApi教程:(3)路径操作装饰器方法的参数
  • 怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev
  • bean创建源码
  • axfbinhexelf文件区别
  • ABAP时间戳与日期时间转换及时区处理
  • #渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍01
  • Flink是什么?Flink技术介绍
  • DETR-ResNet-50:Facebook的革命性目标检测模型