哈希一致性算法(分布式服务器落点算法)

news2024/9/21 22:43:28

场景预设和一般hash算法:

先预设一个场景,有10000份文件,需要缓存到五台缓存服务器之上

那么按照最常规,每个服务器平均分配2000份文件

那么用一个取余操作就可以完成

比如说是第2513的图片,那么用一个公式

需要缓存的文件数%服务器数量就可以得到文件需要存在几号服务器上

2513%5=3,那么低2513号文件就可以缓存到3号服务器上面

一般hash算法的缺陷:

当缓存服务器数量需要增加或者减少的时候,这时候取模数发生了变化,文件取hash后不是原来的服务器,造成缓存失效,失效后就需要从后台服务器去取到指定的文件

举个例子,当一台服务器故障的时候,会造成缓存雪崩,后端服务器突然出现了巨大的压力,整个系统就会被压垮,于是就需要一致性哈希算法1去解决这个问题

一致性哈希算法:

 先假设一个哈希环,由2^32个点组成

 在节点之间分配三个服务器

 用公式文件 % 2^32,得到文件1和文件2在服务器A和服务器B节点之间

那么顺时针旋转,找到一个服务器节点,找到服务器B,那么服务器B就作为存储节点

同理文件3找到服务器C作为存储节点

这时候服务器C挂掉了,那么就会顺时针找到服务器A作为存储节点

文件1和文件2依旧在服务器B上面

位置没有发生改变,这就是哈希一致性算法的区别

哈希环倾斜:

未倾斜的情况:

 发生倾斜的情况:

 这时候大量的文件会缓存到服务器A,A的压力巨大,这时候就需要虚拟节点:

虚拟节点:

 在哈希环上面再分配虚拟节点,比如算到虚拟节点A的也会交给服务器A缓存,这样就可以实现相对平均的分配

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/383688.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML概述与基本标签

🌟所属专栏:HTML只因变凤凰之路🐔作者简介:rchjr——五带信管菜只因一枚😮前言:该系列将持续更新HTML的相关学习笔记,欢迎和我一样的小白订阅,一起学习共同进步~👉文章简…

simplifyEnrichment | 让我来做你的富集结果的瘦身教练吧!~

1写在前面 最近真是烦心啊,事事不顺,找个日子我要找大师算一卦。😂 大家基本都会做富集分析,但有时候terms实在太多,读起来真是累,也搞不清到底谁是其中相对重要的。🥲 之前有一些R包通过计算基…

【告别篇】大家好,再见了,我转行了,在筹备创业

前言 相信大家也一直看到我的博客没有更新过了,我其实很久没有打开过博客了,也就意味着我很长一段时间都在停滞不前,没有了学习的动力。 现在我上来是想跟大家告个别 : 很多粉丝宝宝的私信我看了,但是没有回&#xf…

并查集结构

文章目录并查集特点构建过程查找两个元素是否是同一集合优化查找领头元素设置两个元素为同一集合构建结构应用场景并行计算集合问题并查集特点 对于使用并查集构建的结构,可以使得查询两个元素是否在同一集合,以及合并集合的操作无限接近O(1) 构建过程…

Intellij idea使用Statistic统计代码行数的方法

一、安装Statistic1、打开IDEA2、打开settings进行设置3、选择plugins,搜索Statistic并安装4、下载完成之后,重启IDEA,此时Statistic就安装好了二、使用Statistic1、安装好Statistic之后我们可以通过以下步骤 将Statistic插件的控制台展示出来…

2023年Dubbo常见面试题

2023年Dubbo常见面试题 Dubbo 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么? 可以通信的,启动 dubbo 时,消费者会从 zk 拉取注册的生产者的地址接口等数据,缓存在本地。…

3/2考试总结

时间安排 7:30–7:50 读题,T1 貌似是个构造,T2 应该是个圆方树 dp 加上一些神秘的暴力,T3 不知道是啥。 7:50–9:00 T1,发现没法暴力。考虑能不能构造什么的,好像也不好构造。可能是个别的什么东西。手玩样例有一些结论&#xff…

【UE4 Cesium】加载离线地图

主体思路:先使用水经注软件下载瓦片数据,再使用Python转换瓦片数据格式(TMS),使用Nginx发布网络服务,最后将网络服务加载到UE中。步骤:使用水经注下载瓦片数据,这里下载的是全球七级…

JavaSE22-集合2-map

文章目录一、集合概念二、map集合1、Map集合的特点2、HashMap2.1 HashMap特点2.2 创建对象2.3 常用方法2.4 遍历2.4.1 使用entrySet遍历2.4.2 使用keySet遍历3、HashMap的key去重原理一、集合概念 集合就是用于存储多个数据的容器。相对于具有相同功能的数组来说,集…

神垕古镇景区三方背后的博弈,争夺许昌第一家5A景区主导权

钧 瓷 内 参 第37期(总第368期) 2023年3月2日 神垕古镇景区景域,建业,孔家三方背后的博弈,争夺许昌第一家5A景区主导权 在博弈论(Game Theory)经济学中,“智猪博弈”是一个著名的…

Delphi 中 FireDAC 数据库连接(脱线连接 )

参见:Delphi 中 FireDAC 数据库连接(总览)述了如何使用FireDAC离线模式,它允许你在没有与数据库持久连接的情况下处理数据。一、概述FireDAC的离线模式类似于多层客户端,大部分时间客户端与数据库断开连接。只有当客户…

给深度学习研究生的入门建议(未完待续ing)

诸神缄默不语-个人CSDN博文目录 本文将系统性介绍深度学习方向(准)研究生可供参考的入门建议。 我的背景是浙江大学人工智能专业在读硕士,研究方向是GNN、NLP、司法智能。 (我的CSDN博文基本涵盖了我所有的深度学习知识&#xff…

pytorch-多层感知机,最简单的深度学习模型,将非线性激活函数引入到模型中。

多层感知机,线性回归和softmax回归在内的单层神经网络。然而深度学习主要关注多层模型。在本节中,我们将以多层感知机(multilayer perceptron,MLP)为例,介绍多层神经网络的概念。 隐藏层 多层感知机在单层…

Vue环境的搭建和在vscode上的应用(Window10)

Vue环境的搭建 1.安装: 从官网下载安装包,解压到指定位置,就相当于安装完成了。 2.配置环境变量 找到node.js的文件夹,在里面找到src,把路径复制一下。 我在E盘建立了一个文件夹放node,如图找到bin的路径&…

vuecli3打包项目上线之后报错怎么使用本地的sourcemap文件定位调试?

问题 我们上线的时候一般都不会添加sourcemap文件&#xff0c;一方面为了加快构建速度&#xff0c;另一方面避免源码泄漏。所以有时出现报错的时候很难定位问题所在。 例子&#xff1a;比如我写了一个错误的代码&#xff0c;点击 <template><div class"hello&…

QT(58)-VS2010+QT4+QWT5+win32是适配的-其余版本基本不通。

正解&#xff1a; VS2010QT4QWT5win32是适配的。 其余的配置基本不通。 当我用VS2019底下的命令行编译QT库时&#xff1a; 1.编译QWT库。VS2019 QWT5源码 1.选择编译器&#xff1a;4种参数 2.到源码目录下 生成makefile 文件。 3.修改makefile 文件用于指定QT4还是QT5去编译&a…

自己动手打造一款React路由守卫

引言 用过vue的小伙伴都知道&#xff0c;vue自带路由守卫钩子并且巨他妈的好用&#xff0c;而对于react开发者来说&#xff0c;在需要路由权限校验时常常存在许多痛点问题。今天我将为大家打造一款属于我们reacter的路由守卫方法&#xff0c;希望可以为大家提供帮助。 react路…

JVM

HotSpot虚拟机结构概览 JVM是运行在操作系统之上的&#xff0c;并没有和硬件有直接的交互&#xff1b;正所谓Java代码一次编译,到处运行 方法区和堆区是所有线程共享的内存区域&#xff1b; 而java栈、本地方法栈和程序计数器是运行是线程私有的内存区域。Java栈又叫做jvm虚拟…

c语言指针怎么理解 第二部分

第四&#xff0c;指针有啥用。 比方说&#xff0c;我们有个函数&#xff0c;如下&#xff1a; int add&#xff08;int x){ return (x1); //把输入的值加1并返回结果。 } 好了&#xff0c;应用的时候是这样的&#xff1a; { int a1; aadd(a); //add函数返回的是a1 //现在 a等于…

在苹果电脑 mac 上安装原神(playCover)

该方法只能在 M1、M2 mac 上安装原神 目录前言一、首先下载安装 playCover1. playCover 下载2. playCover 安装安装出现问题解决方法二、下载安装原神1.安装包下载2.安装原神三、登录、键盘映射及版本更新等问题登录键盘映射版本更新前言 最近买了新的mac&#xff0c;作者本人…