cdn缓存服务器有网站图片,CDN缓存服务器图片存储一致性hash算法的理解

2023-11-18

用hash做缓存,假如有三台服务器,1,2,3,有三万张图片,我想将图片平均缓存到我三台服务器上,一个服务器大概一万张,怎么去实现这个办法呢,可以用hash来取余数进行操作,加入我们是以图片的名字作为key进行hash计算,hash (图片名称)%N 其中N为我们服务器的个数,我们将hash(图片名称)这一部分进行计算后得到的是一个正数,然后除以服务器的数目进行取余数,结果将会是0,1,2三个数,对应我们的服务器的编号,当我们作为客户端去请求图片的时候,图片已经进行过hash运算了,直接找到对应服务器的编号进行图片的访问,这样解决了我需要遍历所有的服务器进行查找。

fe7b269b5dbe217f9cac5d251210e9bf.gif

那如果我缓存的服务器的数量减少或者增加,如果还是按照原来的算法走,必定会造成缓存数据的丢失,会去向后端的服务器去请求,如果有一台缓存服务器发生了故障,那我原来缓存的位置必定会发生改变,原来本该运算后要进行缓存到某一台服务器的图片,现在找不到对应缓存服务器,肯定会发生缓存的雪崩

所以出现了一致性hash算法相当于将服务器和图片分别hash到我的hash环上进行就近缓存,hash环就是对2^32次方进行取模,从0开始一直到2^32,均匀分布在一个圆环(一个比方),0的顺时针方向的第一位为1,逆时针方向第一位为2^32,大概如下图

fe7b269b5dbe217f9cac5d251210e9bf.gif

具体就是比方我有三个服务器A,B ,C对其进行 hash (服务器Aip)%2^32 得出来的一定是一个整数,而且一定是在0--2^32之间,那么这个数就会分布在hash环上对应的位置,相同的B,C都一样,假设我们hash过后ABC的位置如下图

fe7b269b5dbe217f9cac5d251210e9bf.gif

然后我们将需要缓存图片的key进行hash,它的hash值也会分布在我的hash环上,

fe7b269b5dbe217f9cac5d251210e9bf.gif

如上图,我hash到了A和C之间,图片的存储规则是顺时针方向的存储,所以应该存储到A,如果有四张的话如下图

fe7b269b5dbe217f9cac5d251210e9bf.gif

那如果我们的hash算法将服务器和hash的图片存放位置比较相近,类似于;

fe7b269b5dbe217f9cac5d251210e9bf.gif

所有的缓存都集中存储到了A一台,只有5到了B,那么这样A的压力就不言而喻,没有均匀可言了,辛亏hash环可以添加缓存服务器的虚拟节点,类似于虚拟机,一台实机可以虚拟多台,类似于这样:

fe7b269b5dbe217f9cac5d251210e9bf.gif

这样的话就会尽可能的把缓存都均衡放在各个服务器

一致性hash算法的优势在哪:一个是当我有一台缓存节点挂了之后,缓存的存储不会受太大的影响,

fe7b269b5dbe217f9cac5d251210e9bf.gif

我们将b节点拿走,本来要在B节点存储的3,因为找不到B服务器,而遵循规则缓存到C,而4的缓存节点不会发生改变,这就是一致hash的优点,如果发生服务器的增加或者减少只有部分的缓存会失效,不造成全盘皆输的可能

一致hash到此结束。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cdn缓存服务器有网站图片,CDN缓存服务器图片存储一致性hash算法的理解 的相关文章

  • 【shiro】shiro反序列化漏洞综合利用工具v2.2(下载、安装、使用)

    目录 1 工具下载 2 依赖环境安装 3 使用 1 工具下载 shiro反序列化漏洞综合利用工具v2 2下载 链接 https pan baidu com s 1kvQEMrMP PZ4K1eGwAP0 Q pwd zbgp 提取码 zbg
  • Vue如何写埋点,统计PVUV,用户的喜爱程度、停留页面的时长

    封装PVUV统计方法 下面康康我在不同的情况下在页面的使用 下面就是我们的最后一步 如何在axios的config headers添加自字段 领导提出了一个需求 写pvuv要统计用户的访问量和喜好 俺也没写过 但是我们组的后台非常的强大 他
  • HBase Hlog原理总结归纳

    HBase Hlog原理总结归纳 1 Hlog概述 按照此前另外一篇博客所述 Hlog其实就是为了保存内存缓存数据现场而建立的一套机制Hbase内部机制 Hlog也叫做WAL文件 全名是write ahead log 故名思意 就是在数据写
  • 接单日记(三)文本处理之词云生成

    文章目录 接单日记 三 文本处理之词云生成 一 实验目的 二 实验内容 三 程序及结果 1 运行程序 2 运行结果 接单日记 三 文本处理之词云生成 此为一个实验报告 故遵守实验报告的格式 一 实验目的 熟悉Python第三方库python
  • FPGA学习笔记_ROM核调用与调试

    FPGA学习笔记 ROM核调用与调试 1 ROM存储器IP核的使用 2 创建 mif文件 3 In system memory content editor内存查看工具的使用 4 Signal tapII工具使用 5 Verilog 代码
  • 字节码增强和AOP

    字节码增强技术 AOP技术其实就是字节码增强技术 JVM提供的动态代理追根究底也是字节码增强技术 应用场景 某一天系统出现OOM 通过工具分析 是莫各类的对象占用了很大空间 但是这个对象被许多程序访问 那么就很难找到 工程的全文匹配也只能找
  • ISAKMP - 解释域(DOI)和初始向量(IV)

    Domain of Interpretation 解释域 DOI定义了负载的格式 交换的类型 以及对安全相关信息的命名约定 比如对安全策略或者加密算法和模式的命名 DOI标识用来说明payload通过哪一个DOI来解释 常用的DOI有两个
  • Git分支常用命令

    列出所有本地分支 git branch 列出所有远程分支 git branch r 新建一个分支 但依然停留在当前分支 git branch branch name 新建一个分支 并切换到该分支 git checkout b branch
  • 什么是多进程-多线程-多协程 ---- 文件系统

    Linux操作系统五大子系统 内核 操作系统的核心代码 进程调度 SCHED 调度算法 先进先出 短作业优先 最高优先级 内存管理 MM 虚拟内存 虚拟地址映射 段页机制 缺页中断 内存的分配管理 伙伴系统 操作系统之内存管理 知乎 文件系
  • 【漏扫工具xray】简介、下载、使用步骤、命令指南、导入安全证书

    目录 一 简介 二 下载 三 使用方法 3 1 使用步骤 3 1 1 第一步 文件夹中打开Windows powershell 或者cmd进入 3 1 2 第二步 在终端使用XRAY exe程序 3 2 命令指南 3 2 1 单一扫描 3
  • 联想3850x6服务器装esxi系统,VMware Cloud Foundation 3.x 演示 — 系统部署

    VMware Cloud Foundation 简介 VMware Cloud Foundation VCF 是 VMware 针对用户数据中心现代化改造而专门开发的新一代云平台 它整合了 vSphere vSAN NSX Data Cen
  • 学习笔记-前端开发架构设计

    前端开发的技术选项主要包含以下几点 下面对一些名词概念的解释做了笔记 1 分层架构 把功能相似 抽象级别相近的实现进行分层隔离 优势 松散耦合 易维护 易复用 易扩展 常见分层方式 MVC MVVM 2 模块化 解决一个复杂问题时 自顶向下
  • LSTM结构简要图示

    更多参考 https zhuanlan zhihu com p 86876988 https www sohu com picture 443110431
  • MCP3421的基础知识点

    目录 1 MCP3421封装形式与结构 2 MCP3421的工作原理 3 MCP3421的应用 Microchip公司的MCP3421与其他A D转换器相比 特点主要表现在 全差分输入 18位分辨率 精密的连续自校准功能 可选择3 75 1
  • 调试osgEarth(十五)分页瓦片加载器在更新遍历时对请求处理过程(3)

    现在该正式进入merge的阶段了 我感觉 还是基础不牢 现在调试起来有点懵懂 不管这么着 继续调试下去 一定要有个pass 没有则添加 看来每个texture只有一个image 以上是颜色的融合 接下来是高程的融合 没有高程 所以没进入这两
  • R语言深度学习中的在线评论分类:主题模型的应用

    目录 引言 一 主题模型简介 二 在线评论分类的流程 三 使用R语言实现主题模型
  • 使用Seay进行代码安全审计

    Seay介绍 Seay介绍 Seay其实是一款用 C语言所开发的一款对 PHP相关代码的安全审计系统 它是运 行在 Windows操作系统上的 这种软件能够发现 SQL 注入漏洞 代码执行漏洞 命令执行错误 文件内容包括 文件的上传 绕过防
  • Python 窗体(tkinter)下拉列表框(Combobox)

    import tkinter from tkinter import ttk def go args 处理事件 args表示可变参数 print comboxlist get 打印选中的值 win tkinter Tk 构造窗体 comva
  • 答题微信小程序实现(7):python3将题库处理成json格式的。

    通常来说 我们写答题程序的时候 拿到手的题库不会是json格式的 而是word或txt pdf就像考试卷子那样的 这里写一下用python3将普通题库处理成json格式 选择python3的原因是 相对于2 7版本 它对中文更友好 原始题库

随机推荐

  • 为什么uzi排到古手羽就秒_uzi为何见到古手羽就秒退?并非因为55开,而是小狗有1个直播习惯...

    UZI是LPL的顶尖ADC之一 这么多年为LPL赢得了不少荣誉 在职业赛场上表现出色的UZI 开了直播同样是效果爆炸 吸引了不少粉丝的观看 经常看UZI直播的粉丝可能有时候会发现一个奇怪的现象 那就是UZI在排到古手羽的时候会直接秒掉 每次
  • 红帽子redhat linux 9.0官方下载地址,附MD5校验码

    红帽子redhat linux 9 0官方下载地址如下 https archive download redhat com pub redhat linux 9 en iso i386 shrike i386 disc1 iso https
  • 洛谷-P1010-幂次方-普及(摁写+递归/二进制+递归)

    一 题目描述 二 示例及提示 输入格式 一行一个正整数 n 输出格式 符合约定的 n的 0 2 表示 在表示中不能有空格 输入输出样例 输入 1 1315 输出 1 2 2 2 2 0 2 2 2 2 2 0 2 2 2 2 0 2 2 0
  • [总结]PostgreSQL服务启动又停止的解决方法

    安装PostgreSQL数据库8 3版本后 启动数据库服务 却弹出提示服务启动后又停止 一些服务自动停止 如果他们没有什么可做的 例如性能日志和警报服务 这个时候需要查看事件查看器的报错消息 1 当错误为could not create i
  • 【Python】六个惊人的未知 Python 库

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • MySQL安装和图形化工具Workbench

    阅读整理自 MySQL 必知必会 朱晓峰 详细内容请登录 极客时间 官网购买专栏 文章目录 安装与配置 1 选择安装类型 2 安装服务器及相关组件 3 配置服务器 4 身份验证 5 设置密码和用户权限 6 配置 Windows 服务 图形化
  • 毕业设计-基于大数据招聘岗位可视化系统-python

    目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度
  • compileDebugKotlin FAILED Unresolved reference: xxxx

    Task client compileDebugKotlin FAILED e MainActivity kt 64 13 Unresolved reference CommendUtils A项目引用了library 但是一直报错 解决
  • 基于A40I/T3 SDK平台的QT4.8移植和应用开发连载(四)-盈鹏飞嵌入式

    文记录了QT4 8图形界面在全志A40I T3 SDK平台上的移植过程 说明过程中可能会技术瑕疵 希望大家提供宝贵意见 本文移植的平台来自于盈鹏飞嵌入式的CoM X40I T3A平台 处理器分别时是全志的A40I T3 以下是盈鹏飞嵌入式C
  • 数据库多维迭代算法

    关键词 数据库 迭代 递归 多维 一 两种传统的数据库迭代结构算法 对于数据库的迭代结构 有两种传统的算法 递归算法和边界算法 比如对于下面图1的结构 图1 递归算法的数据结构如表1所示 节点id 节点值 父节点id 1 1111 2 3
  • USDP使用笔记(八)Flink配置及简单测试

    Flink配置Flink配置及简单测试 上一篇 https lizhiyong blog csdn net article details 123560865 将USDP2 0自带的Flink更换为Flink1 14后 还没有来得及改配置
  • pycharm如何配置Anaconda虚拟环境

    文章目录 一 Anaconda虚拟环境创建 二 pycharm添加虚拟环境 一 Anaconda虚拟环境创建 1 此电脑 右键 属性 高级系统设置 高级 环境变量 系统变量 path 新建 相应路径 Anaconda 相应路径 Anacon
  • 小程序和Vue写法的区别

    小程序和Vue写法的区别主要有以下几点 语法不同 小程序使用的是WXML WXSS和JS 而Vue使用的是HTML CSS和JSX 数据绑定方式不同 小程序使用的是双向数据绑定 而Vue使用的是单向数据流 1 在小程序中需要使用e curr
  • oracle数据库imp/sqlplus命令无效引发的问题

    好久没有使用Oracle数据库 在导入数据库dmp文件时出现imp命令无效 oracle导入dmp文件命令 imp user password ip 端口 server name file 文件路径 dmp full y 如 imp crm
  • HTML 常用快捷键,HTML介绍

    一 1 修改主题 2 3 修改 4 长代码换行 file setting general wrap 对勾选中 5 新建项目 file new project 6 关联浏览器 file setting tool web borther 复制路
  • bigdata_git版本控制系统

    一丶版本控制系统发展 集中式VCS 分布式VCS git 二丶git工作流程图 三丶分支管理 每个项目确立后可以添加多个分支 分支可以更新版本 只要分支没有合并提交 对其他人没有任何影响 这也是跟svn的不同 四丶内部数据存储方式 git统
  • 惠斯通电桥与运算放大器的输入失调电流和输入偏置电流

    在做数字开关气压表项目中 使用的气压传感器的结构是惠斯通电桥 输出差分信号 差分电压与气压大小成线性关系 运放的失调电压对精度影响很大 在这里考虑选择使用低漂移运放 在选择运放时考虑了输入电阻 失调电压的影响 如果运放的输入电阻大小与电桥电
  • 大模型训练避坑指南

    原文 https baijiahao baidu com s id 1760862056681517207 wfr spider for pc 自 2022 年 11 月底 ChatGPT 发布以来 大模型的热度持续发酵 相信高屋建瓴的讨论
  • 辛普森悖论_所谓的辛普森悖论

    辛普森悖论 We all know the Simpsons family from Disneyland but have you heard about the Simpson s Paradox from statistic theo
  • cdn缓存服务器有网站图片,CDN缓存服务器图片存储一致性hash算法的理解

    用hash做缓存 假如有三台服务器 1 2 3 有三万张图片 我想将图片平均缓存到我三台服务器上 一个服务器大概一万张 怎么去实现这个办法呢 可以用hash来取余数进行操作 加入我们是以图片的名字作为key进行hash计算 hash 图片名