一致性哈希原理

news/2024/5/20 11:09:17/文章来源:https://blog.csdn.net/Tong_jy/article/details/127300705

一致性哈希原理

分布式系统将数据分布到不同的节点来存储,比如一个分布式KV(key-value)缓存系统,某个key应该到哪个节点上获得,最直观的方法是使用哈希算法(hash(key)%n),对key进行哈希后用模运算映射到某个确定的节点。

但是会存在一个很致命的问题:如果节点数量发生了变化,也就是在对系统做扩容或者缩容时,必须迁移改变了映射关系的数据,否则会出现查询不到数据的问题。最坏的情况是所有数据都需要迁移。

为了避免这个问题,引入了一致性哈希,来解决分布式系统在扩容或者缩容时发生过多的数据迁移的问题。与哈希算法不同的是,哈希算法是对节点的数量进行取模运算,而一致哈希算法是对 2^{32} 进行取模运算,是一个固定的值。可以把一致哈希算法是对 2^32 进行取模运算的结果值组织成一个圆环(哈希环)。一致性哈希会将存储节点(如其IP地址)和数据分别经过不同的哈希映射到哈希环上。在数据映射时根据结果值往顺时针方向找到的第一个节点,就是存储该数据的节点。

在这里插入图片描述
其优势在于,增加或者减少一个节点,只会影响该节点在哈希环上顺时针相邻的后继节点,其他数据都不会收到影响。举例来说:

  • 如果B右侧增加节点D:将A-D范围内的数据从B迁移到D节点(可以参考写时拷贝的方式,如等到D节点查询该数据时,如果找不到,就去B节点找,找到后再迁移到D节点来,但这种方式仅适用于节点变动不大的情况,不然不断积累会严重影响查找效率。)
  • 如果删除B节点:将B节点上的数据全都迁移到C节点。

一致性哈希存在的问题和解决方法

主要问题是无法保证节点在哈希环上均匀分布,可能出现大量请求集中在同一个节点上,导致该节点崩溃,其后继节点将独自承受该节点转交的工作量,容易引起雪崩式的连锁反应。

解决方案是引入虚拟节点,也就是不再将真实节点映射到哈希环上,而是将虚拟节点映射到哈希环上,并将虚拟节点映射到实际节点

  • 第一方面通过增加节点数量提高哈希环上节点分布均衡性;
  • 第二方面当节点变化时,会有不同的节点共同分担系统的变化,提高系统的稳定性;
  • 第三方面可以为硬件配置更好的节点增加权重,如对权重更高的节点增加更多虚拟节点。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python--绘制WRF模式近地面风场以及辐射

使用python自动化绘制WRF模式输出的风场以及辐射 本脚本主要用来自动化处理WRF模式数据,可以根据自己指定的时间范围以及时间步长绘制相应的数据 1 导入库 import cmaps import numpy as np import glob from netCDF4 import Dataset import matplotlib.pyplot a…

【C++】从零开始的CS:GO逆向分析3——写出一个透视

【C++】从零开始的CS:GO逆向分析3——写出一个透视本篇内容包括:1. 透视实现的方法介绍2. 通过进程名获取进程id和进程句柄3. 通过进程id获取进程中的模块信息(模块大小,模块地址,模块句柄)4. 读取游戏内存(人物ViewMatrix,敌人坐标,敌人生命值,敌人阵营)5. 三维坐标…

Java项目本地部署搭建实战SpringBoot高校宿舍管理系统源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套Java开发的SpringBoot高校宿舍管理系统源码。 技术架构 技术框架:SpringBoot2.0.0 Mybatis1.3.2 Mysql5.7 layui运行环境:jdk8 IntelliJ IDEA maven3 宝塔面板 …

触摸屏分类和触摸屏校准原理

一、触摸屏分类 常用触摸屏分两种 1、电阻触摸屏校正原理:导电ITO层及整个电路电阻值会随时间电压等轻微偏移,为了更精确与LCD显示屏上的功能图案相对应,重新校正计算标准位置。不校正可能会线性偏移,好的触摸屏一般无需校正&am…

【面经】360大数据开发面经

30 分钟,不做题。 欢迎点击此处关注公众号,每天分享大数据开发面经 介绍实习项目 会涉及平台开发吗 平时常用的语言 回答了 Java。 Python 用过吗 Java 实现一个单例要注意什么 懒汉式: public class Singleton {private static Sing…

钢铁行业经销商商城系统:完善钢材管控方案,轻松实现控价和防伪

钢铁工业是全球经济发展的核心,也是现代社会可持续发展的核心。根据数据显示,2020年中国钢材产量为13.25亿吨,同比增长9.96%;生铁产量为8.88亿吨,同比增长9.77%;粗钢产量为10.53亿吨,同比增长5.72%。 图片来源&#xf…

网络编程之TCP模型

1. TCP模型 2. socket 最早的socket和消息队列、共享内存、管道一致,只能实现一台主机多个进程间通信,后期加入了tcp/ip协议,使得支持不同主机的进程间通信 socket本质上是一个编程接口给(API),是对TCP/IP协议的封装…

利用表面肌电信号对手部抓取动作分类的新型卷积网络模型

利用表面肌电信号对手部抓取动作分类的新型卷积网络模型 文章目录利用表面肌电信号对手部抓取动作分类的新型卷积网络模型一.相关研究二.材料和方法2.1 数据集2.2 数据预处理2.3 1D-1D-CNN三.实验结果分析四.相关研究对比参考文献一.相关研究 肌电信号号代表肌肉功能的特征&…

ReentrantLock可重入、可打断、锁超时实现原理

述 前面讲解了ReentrantLock加锁和解锁的原理实现,但是没有阐述它的可重入、可打断以及超时获取锁失败的原理,本文就重点讲解这三种情况。 可重入 可重入是指一个线程如果获取了锁,那么它就是锁的主人,那么它可以再次获取这把锁…

神经网络损失函数不下降,神经网络参数优化算法

1、matlab支持向量机预测数据怎么减小相对误差 采用网格搜索法。基于长短时记忆神经网络算法的支持向量机的预测方法,为了保证支持向量机预测结果的准确性减小相对误差,选用网格搜索法对支持向量机参数进行优化处理。为了减小在预测算法中,由…

如何快速制作一个自己心目中的可视化大屏?

从来没有接触过可视化的软件,也没有什么基础,我应该怎么开始学习可视化呢?遇到过不少朋友问:我从来没有接触过可视化的软件,也没有什么基础,我应该怎么开始学习可视化呢? 其实很简单,现在市面上有很多公司研发的可视化软件/编辑网站已经不再像过去一样要求使用者是专业…

linux下挂载新的磁盘

1、前提条件 虚拟机上已经新增了新的磁盘。 物理机上已经接好了新的硬盘。 2、挂载步骤 查看系统磁盘情况。使用以下命令:(如果没出现新增磁盘,重启系统) fdisk -l可以看到新增的磁盘/dev/sdb下还没有进行分区。 对新增的磁…

我终于读懂了设计模式的七大原则。。。

文章目录💥🐒设计模式的目的🐴什么叫单一职责原则?🐤什么叫接口隔离原则?🐫什么叫做依赖倒转原则?🐑什么是里氏替换原则?🐘什么叫开闭原则&#x…

拒绝项目经理沟通崩溃瞬间,驾驭项目复杂性

如何一句话终结和项目经理的聊天?这还需要凭实力?这不是信手拈来的事,分分钟让项目经理怒气值加满、停止沟通。来整两句:  紧急需要不停歇——深夜10点,客户:“这个新需求明天必须上。”  方案最后都是…

多测师肖sir_高级讲师_第2个月第27讲解jmeter性能硬件指标

jmeter性能硬件指标 一、采集硬件指标的工具nmon 1、基本介绍 nmon,帮助在一个屏幕上显示所有重要的性能优化信息,并动态地对其进行更新。 2、收集那些数据: nmon 工具可以为 AIX 和 Linux 性能专家提供监视和分析性能数据的功能&#xff0c…

枚举

目录枚举枚举的定义枚举的使用枚举的常用方法枚举的构造方法枚举的优缺点枚举与反射用反射能拿到枚举的实例对象吗?为什么枚举实现的单例模式是安全的?(面试问题)枚举 枚举的定义 枚举是在JDK1.5以后引入的。主要用途是:将一组常量组织起来…

TRC丨艾美捷TRC N-去羟乙基达沙替尼说明书

艾美捷TRC N-去羟乙基达沙替尼:达沙替尼的代谢产物。用于治疗癌症和免疫疾病。 艾美捷TRC N-去羟乙基达沙替尼化学性质: 目录号D290000 化学名称N-去羟乙基达沙替尼 同义词N-(2-氯-6-甲基苯基)-2-[[2-甲基-6-(1-哌嗪基)-4-嘧啶基]氨基]-5-噻唑甲酰胺&…

【漏洞复现-骑士cms-代码执行】vulfocus/骑士cms_cve_2020_35339

目录 一、靶场环境 1.1、平台: 1.2、知识: 1.3、描述: 二、漏洞验证 2.1、分析 2.4、解题: 一、靶场环境 1.1、平台: Vulfocus 漏洞威胁分析平台 123.58.224.8:57171 123.58.224.8:36168 ​ 123.58.224.8:36168 ​ 1.2、知…

多线程——synchronized详解

多线程——synchronized详解 “当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下 的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果&…

2023年中德(CSC-DAAD)博士后奖学金项目开始申报

10月9日,国家留学基金委(CSC)发布了《2023年中德(CSC-DAAD)博士后奖学金项目遴选工作启动》的通知。该项目提供50个博士后奖学金名额,申请受理时间为2022年11月1-30日。知识人网小编将CSC的申报指南全文转载…