一致性 Hash 算法

news2025/1/11 8:52:45

是什么:

        一致性 hash,是一种比较特殊的 hash 算法,它的核心思想是解决在分布式环境下, hash 表中可能存在的动态扩容和缩容的问题。


为什么会出现一致性Hash

        一般情况下,我们会使用 hash 表的方式以 key-value 的方式来存储数据,但是当数据量比较大的时候,我们就会把数据存储到多个节点上,(如图)然后通过 hash 取模的方法来决定当前 key 存储到哪个节点上。

        这种方式有一个非常明显的问题,就是当存储节点增加或者减少的时候,原本的映射关系就会发生变化。 也就是需要对所有数据按照新的节点数量重新映射一遍,这个涉及到大量的数据迁移和重新映射,迁移代价很大。


一致性Hash原理

        而一致性 hash 就是用来优化这种动态变化场景的算法,它的具体工作原理也很简单。 首先,一致性 Hash 是通过一个 Hash 环的数据结构来实现的,(如图),这个环的起点是 0,终点是 2^32-1。 也就是这个环的数据分布范围是[0,2^32-1]。

(如图)然后我们把存储节点的 ip 地址作为 key 进行 hash 之后,会在 Hash 环上确定 一个位置。

        接下来,(如图)就是把需要存储的目标 key 使用 hash 算法计算后得到一个 hash 值, 同样也会落到 hash 环的某个位置上。 然后这个目标 key 会按照顺时针的方向找到离自己最近的一个节点进行数据存储。


为什么一致性Hash比普通hash算法好

        假设现在需要新增一个节点(如图)node4,那数据的映射关系的影响范围只限于node3 和 node1, 只有少部分的数据需要重新映射迁移就行了。

        如果是已经存在的节点 node1 因为故障下线了(如图),只那只需要把原本分配在 node1 上的数据重新分配到 node2 上就行了。 同样对数据影响的范围非常小。

        所以,一致性 hash 算法的好处是扩展性很强,在增加或者减少服务器的时候,数据迁移范围比较小。 另外,在一致性 Hash 算范里面,为了避免 hash 倾斜导致数据分配不均匀的情况,我 们可以使用虚拟节点的方式来解决。

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

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

相关文章

一个月软考高项(信息系统项目管理师)冲刺攻略

2023下半年软考信息系统项目管理师(高项),离11月4号的考试,只有1个多月了,啃书是来不及了,要抓重点看了 信息系统项目管理师考试介绍: 考试时间:一年考两次,上半年的5月…

pytorch的pixel_shuffle转tflite文件

torch.pixel_shuffle()是pytorch里面上采样比较常用的方法,但是和tensoflow的depth_to_space不是完全一样的,虽然看起来功能很像,但是细微是有差异的 def tf_pixelshuffle(input, upscale_factor):temp []depth upscale_factor *upscale_f…

基于SpringBoot的微服务在线教育系统设计与实现

目录 前言 一、技术栈 二、系统功能介绍 用户管理 课程信息管理 学科管理 职业规划管理 我的笔记管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本…

张量-类型转换函数

代码示例如下: import tensorflow.compat.v1 as tf tf.disable_v2_behavior()a tf.constant(6) b tf.constant([1,2,3]) a1 tf.to_float(a,nameToFloat) b1 tf.cast(b,dtype tf.float32)with tf.Session() as session:print(session.run(a1))print(session.run(b1))

【LeetCode75】第六十五题买卖股票的最佳时机含手续费

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 这是力扣里动态规划类题目里的一道系列题目,买卖股票,直接在题库里搜就能搜到这一系列。 我建议各位可以先去做一…

经验分享|甘肃某中型灌区信息化管理平台案例

河西走廊绿洲灌区,润泽万亩良田 甘肃某中型灌区位于河西走廊中端的黑河中游,从黑河引水自流灌溉,通过渠首输配水闸站,将水量输送并分配到田间,进行灌溉。 该灌区所处区域是农业灌溉大县,是甘肃河西走廊…

编程新时代:Amazon CodeWhisperer 助您轻松驾驭代码世界

文章目录 一、什么是 Amazon CodeWhisperer?二、个人无限免费使用三、安装配置3.1 手把手教你在pycharm配置3.2 同理在VSCODE安装 三、Pycharm上测试3.1 根据注释写代码3.2 检查修复代码错误3.3 构建一个简单爬虫 四、 VSCODE上测试4.1 个性化体验4.2 系统兼容性4.3…

项目任务管理上的一些总结

1. 开发任务管理现状: 1:基于禅道进行任务派发,缺少任务统计,进度上只能以“来不及”、“进度正常”、“进度延后”等模糊字眼。 2:“感觉”工作效率不高了,工作量是否饱和,任务投入产出偏差多…

桥梁模板人工费多少钱?

桥梁模板是桥梁工程中不可或缺的一部分,它起到支撑和固定混凝土浇筑的作用。在桥梁建设中,模板人工费用是一个重要的成本因素。那么,桥梁模板人工费到底是多少呢?下面我们来详细了解一下。 首先,需要明确的是&#xff…

目标检测算法改进系列之Backbone替换为EMO

EMO:结合 Attention 重新思考移动端小模型中的基本模块 近年来,由于存储和计算资源的限制,移动应用的需求不断增加,因此,本文的研究对象是端侧轻量级小模型 (参数量一般在 10M 以下)。在众多小模型的设计中&#xff0…

安防监控/视频监控系统EasyCVR平台界面侧边栏优化

视频汇聚/视频云存储/集中存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、云存储、智能分析等,视频智能分析平台EasyCVR融合性强、开放度…

windows10系统镜像安装含驱动补丁

前言 都2023年了为什么不装windows11, 当然是硬件不支持了(TPM), 当然你也可以跳过TPM验证硬装 Windows11对系统的要求 如何检测TPM :WindowsR, 输入 tpm.msc 检测是否兼容TMP 言归正传,开始安装 windows10镜像下载 windows11镜像下载 下载工具按流程安装即可 驱动补丁安装…

【SpringCloud】-Ribbon负载均衡

一、背景介绍 项目中使用到的SpringCloud Alibaba这一套微服务架构中服务注册与发现Nacos兼容了Feign,而Feign默认集成了Ribbon,当Nacos下使用Feign默认实现了负载均衡的效果。即使是默认集成了,也要追根溯源。 二、过程 负载均衡是什么&am…

00后卷王的自述,我真的很卷吗?

前言 前段时间去面试了一个公司,成功拿到了offer,薪资也从12k涨到了18k,对于工作都还没两年的我来说,还是比较满意的,毕竟一些工作3、4年的可能还没我高。 我可能就是大家说的卷王,感觉自己年轻&#xff…

设计模式2、抽象工厂模式 Abstract Factory

解释说明:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 简言之,一个工厂可以提供创建多种相关产品的接口,而无需像工厂方法一样,为每一个产品都提供一个具体工厂 抽象工厂(Abstra…

【2251. 花期内花的数目】

来源:力扣(LeetCode) 描述: 给你一个下标从 0 开始的二维整数数组 flowers ,其中 flowers[i] [starti, endi] 表示第 i 朵花的 花期 从 starti 到 endi (都 包含)。同时给你一个下标从 0 开始…

jeecgboot-3.5.5本地安装部署

一、开发环境说明 1、jdk1.8:java运行环境 2、Maven:项目依赖管理 3、git:代码管理 4、mysql5.7:数据管理。也可以是orcale、pgsql等 华为云HECS云服务器docker环境下安装mysql_supersolon的博客-CSDN博客 5、redis:缓存管理…

Goby 漏洞发布|Cockpit 平台 upload 文件上传漏洞(CVE-2023-1313)

漏洞名称:Cockpit 平台 upload 文件上传漏洞(CVE-2023-1313) English Name: Cockpit File Upload Vulnerability(CVE-2023-1313) CVSS core:7.2 影响资产数:3185 漏洞描述: Cockpit 是一个自托管、灵活…

[C++ 网络协议] 重叠I/O模型

目录 1. 什么是重叠I/O模型 2. 重叠I/O模型的实现 2.1 创建重叠非阻塞I/O模式的套接字 2.2 执行重叠I/O的Send函数 2.3 执行重叠I/O的Recv函数 2.4 获取执行I/O重叠的函数的执行结果 2.5 重叠I/O的I/O完成确认 2.5.1 使用事件对象(使用重叠I/O函数的第六个参…

【x265 源码分析系列】:概述

介绍 x265 也属于 VLC 的 project。 版本: x265-3.5(TAG-208) git: https://bitbucket.org/multicoreware/x265_git.git 编码特点: 研究了一段时间的 HEVC 编码标准,最近开始研究符合 HEVC 标准的开源…