一致性哈希避免数据倾斜的方法--虚拟节点

一致性哈希的实现方法网上有很多,这篇文章的图画的很好。

但一直以来有个困惑没有解决,如果一致性哈希环上有一个机器下线,那么相邻的节点会承接其数据和流量,应该会出现数据倾斜的情况才对,上面的文章只说了虚拟节点可以解决这个问题,但还是没懂。


其实本质上是虚拟节点的使用方式并没有彻底理解。下面举例说明

示例

假设有三个物理节点 A、B 和 C,每个物理节点对应三个虚拟节点:

A -> 哈希值 20, 40, 60
B -> 哈希值 80, 100, 120
C -> 哈希值 140, 160, 180

数据项通过哈希函数映射到哈希环上的位置,并存储在顺时针方向第一个遇到的虚拟节点上。例如:

数据项 K1 映射到哈希值 10,存储在虚拟节点 A1(哈希值 20)上。
数据项 K2 映射到哈希值 50,存储在虚拟节点 A2(哈希值 60)上。
数据项 K3 映射到哈希值 90,存储在虚拟节点 B1(哈希值 100)上。

现在新增一个物理节点 D,它对应三个虚拟节点:

D -> 哈希值 30, 70, 110'

新增节点 D 会影响到其相邻的虚拟节点:

虚拟节点 D1(哈希值 30)会影响到虚拟节点 A1(哈希值 20)。
虚拟节点 D2(哈希值 70)会影响到虚拟节点 A2(哈希值 60)。
虚拟节点 D3(哈希值 110)会影响到虚拟节点 B1(哈希值 100)。

通过这种方式,每次上线节点的时候,映射到的虚拟节点对其他节点产生均匀的影响;而节点下线的时候,其所映射的虚拟节点也下线,归属于它的数据和流量也就会均匀分散到其他的节点上了。

总结

其实之前没有理解虚拟节点的使用方法,它是可以动态上下线的,而且动态的上下线对其他节点产生均匀的影响,这样就能保证所有实体节点之间的数据和流量均衡。

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

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

相关文章

Java入门-异常机制

java异常机制 异常概念 在Java中,异常处理(exception handling) : java语言或者程序员开发提供的一种机制,当有不正常的情况发生时,可以发出信号。这种发出信号的过程被称为抛出异常(throwing an exception)。 java异常体系 Error Error类对…

Android OpenGL ES 离屏幕渲染1——EGL环境的创建,以及基础概念的理解

创建EGL上下文、配置EGL环境、创建EGL DISPLAY 什么是EGL: 由于OpenGL ES并不负责窗口管理以及上下文管理,该职责由各个平台自行完成;在Android平台下OpenGL ES的上下文环境是依赖EGL的API进行搭建的。 对于EGL这个框架,谷歌已经提…

Java中 普通for循环, 增强for循环( foreach) List中增删改查的注意事项

文章目录 俩种循环遍历增加删除1 根据index删除2 根据对象删除 修改 俩种循环 Java中 普通for循环, 增强for循环( foreach) 俩种List的遍历方式有何异同,性能差异? 普通for循环(使用索引遍历): for (int…

测试环境:使用OpenSSL生成证书并配置Https

文章目录 需求1、安装OpenSSL1.1、安装包下载1.2、安装(以window 64位为例)1.3、配置环境变量(非必须) 2、生成证书2.1、新建文件夹2.2、生成根证书2.2.1、生成私钥2.2.2、生成根证书,并且自签名 2.3、服务端证书生成2…

pyqt5导出数据到excel并设置单元格格式然后点击打开

pyqt5导出数据到excel并设置单元格格式然后点击打开 1、流程 1、从sqlite3获取数据 2、创建Workbook、sheet 3、设置列宽,单元格填充颜色 4、写数据进单元格 5、设置文件名并保存 6、设置pyqt5输出框可直接点击打开文件2、代码 from openpyxl import Workbook from openpyx…

【双一流高校主办,Springer-LNICST出版,EI稳定检索】2024年应用计算智能、信息学与大数据国际会议(ACIIBD 2024,7月26-28)

2024年应用计算智能、信息学与大数据国际学术会议(ACIIBD 2024)将于2024年7月26-28日在中国广州举办。会议将聚焦于计算智能及其应用、信息、大数据等相关的研究领域, 广泛邀请国内外知名专家学者,共同探讨相关学科领域的最新发展…

rsyslog日志转发

前言 Rsyslog可用于接受来自各种来源(本地和网络)的输入,转换它们,并将结果输出到不同(通过模板和filter过滤)的目的地(目录文件中) rsyslog是一个开源工具,被广泛用于Linux系统以通过TCP/UDP…

2025届秋招提前批信息汇总(计算机类)

私企篇 深信服 链接:https://app.mokahr.com/campus_apply/sangfor/27944#/home内推码:NTAHRFS截止时间:6月21日 TP-LINK 链接:https://hr.tp-link.com.cn/jobList?jobId107&jobDirection0&workPlace0&currentPa…

[spring] Spring MVC - security(上)

[spring] Spring MVC - security(上) 这部分的内容基本上和 [spring] rest api security 是重合的,主要就是添加 验证(authentication)和授权(authorization)这两个功能 即: 用户…

HTTPS 发送请求出现TLS握手失败

最近在工作中,调外部接口,发现在clientHello步骤报错,服务端没有返回serverHello。 从网上找了写方法,都没有解决; 在idea的vm options加上参数: -Djavax.net.debugSSL,handshake 把SSL和handshake的日…

构建基于Spring Cloud的微服务监控系统

构建基于Spring Cloud的微服务监控系统 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 随着微服务架构的流行,应用程序变得更加复杂和分布式&…

python自动化办公之cryptography加密解密

目录 用到的库 实现效果 代码部分 1、加密2024.txt文件 2、解密2024.txt文件 用到的库 cryptography 实现效果 加密文件和解密文件 代码部分 1、加密2024.txt文件 # 加密 from cryptography.fernet import Fernet # 生成加密密钥 keyFernet.generate_key() cipher_s…

go语言中使用WaitGroup和channel实现处理多线程问题

WaitGroup 背景 如果将一个任务分为任意个小任务,并且不关心小任务的执行顺序,并且希望等待全部的小任务执行完成后再去操作后面的逻辑,那我推荐你用sync.WaitGRoup 使用方法 比如,有一个任务需要执行 3 个子任务,…

Raw Socket(一)实现TCP三次握手

实验环境: Windows物理机:192.168.1.4 WSL Ubuntu 20.04.6 LTS:172.19.32.196 Windows下的一个http服务器:HFS,大概长这个样子: 客户端就是Ubuntu,服务端就是这个…

收银系统源码-线上商城预售功能

1.功能描述 预售:智慧新零售收银系统,线上商城营销插件之一,商品出售时可设置以支付定金或全款的方式提前预售,门店按订单量备货,降低压货成本; 2.适用场景 易损商品提前下单备货,如水果生鲜…

【算法笔记自学】第 5 章 入门篇(3)——数学问题

5.1简单数学 #include <cstdio> #include <algorithm> using namespace std; bool cmp(int a,int b){return a>b; } void to_array(int n,int num[]){for(int i0;i<4;i){num[i]n%10;n /10;} } int to_number(int num[]){int sum0;for(int i0;i<4;i){sumsu…

C++ Lambda表达式第二篇, Lambda表达式

C Lambda表达式 Lambda 捕获含有模板参数的Lambda表达式无模板参数的Lambda表达式 Lambda 捕获 captures是零个或多个捕获的逗号分隔列表&#xff0c;可以选择以capture-default开头。捕获列表定义可从 lambda 函数体内访问的外部变量。唯一的捕获默认值是 &&#xff0c;…

Kylin系列(二)架构解析:深入理解 Kylin 的架构设计

目录 1. 引言 2. Kylin 的基本概念 2.1 预计算 2.2 多维数据集&#xff08;Cube&#xff09; 2.3 维度和度量 3. Kylin 的架构设计 3.1 数据源 3.2 数据建模 3.2.1 星型模型 3.2.2 雪花模型 3.3 多维数据集构建 3.3.1 数据导入 3.3.2 维度和度量计算 3.3.3 存储优…

AI微电影制作教程:轻松打造高清小人国画面

AI微电影作为一种新兴的视频内容形式&#xff0c;以其独特的视觉效果和制作技术在各大视频平台上取得了显著的流量表现。 2. AI微电影的特点 2.1 高清画质与流畅动作&#xff1a;AI微电影以其高分辨率和流畅的动作给观众带来优质的视觉体验。 2.2 微缩画面效果&#xff1a;独…

大数据面试题之Presto[Trino](6)

如何诊断Presto查询慢的问题&#xff1f; 诊断Presto查询慢的问题通常需要一个系统化的方法&#xff0c;结合监控、日志分析、查询优化策略和系统配置调整等多个方面。以下是一些具体的步骤和建议&#xff1a;1、查看Presto Dashboard&#xff1a; 登录Presto的Web UI&#xf…