数据分布算法:hash+ 一致性 hash + redis cluster 的 hash slot
讲解分布式数据存储的核心算法,数据分布的算法
hash 算法 -> 一致性 hash 算法(memcached) -> redis cluster 的 hash slot 算法
用不同的算法,就决定了在多个 master 节点的时候,数据如何分布到这些节点上去,解决这个问题
看到这里的时候,已经明白了,可能是通过 key 去路由到多个 master 上的
redis cluster 介绍#
- 自动将数据进行分片,每个 master 上放一部分数据
- 提供内置的高可用支持,部分 master 不可用时,还是可以继续工作的
在 redis cluster 架构下,每个 redis 要放开两个端口号,比如一个是 6379,另外一个就是加 10000 的端口号,比如 16379
16379 端口号是用来进行节点间通信的,通过 cluster bus(集群总线)。cluster bus 的通信是用来进行故障检测,配置更新,故障转移授权
cluster bus 用了另外一种二进制的协议,主要用于节点间进行高效的数据交换,占用更少的网络带宽和处理时间
最老土的 hash 算法和弊端(大量缓存重建)#

的确它的最大弊端就是,增加或者减少节点的时候,基本上所有数据都要重建路由
一致性 hash 算法(自动缓存迁移)+ 虚拟节点(自动负载均衡)#

- 优点:自动缓存迁移
- 缺点:缓存热点问题
一致性 hash 的严重问题是缓存热点,关键字是 区间,因为它是一个环,顺时针找可用节点,所以只要节点够多,就能更均匀的均衡负载。
所以出现了虚拟节点,来解决这个缺点

如上图,假设只有 3 个物理节点,但是在这个环上,分布了若干个虚拟节点(最后指向的是物理节点)
对于数据落在 1-3 这个区间
- 无虚拟节点:顺时针向右,全部导向了节点 3
- 有虚拟节点:顺时针向右,被多个虚拟节点分割,可能会遇上节点 1、2、3 。这样就负载均衡了
redis cluster 的 hash slot 算法
redis cluster 有固定的 16384 个 hash slot,对每个 key 计算 CRC16 值,然后对 16384 取模,可以获取 key 对应的 hash slot
redis cluster 中每个 master 都会持有部分 slot,比如有 3 个 master,那么可能每个 master 持有 5000 多个 hash slot
hash slot 让 node 的增加和移除很简单:
- 增加一个 master,就将其他 master 的 hash slot 移动部分过去
- 减少一个 master,就将它的 hash slot 移动到其他 master 上去
移动 hash slot 的成本是非常低的
客户端的 api,可以对指定的数据,让他们走同一个 hash slot,通过 hash tag 来实现

如上图,思路与一致性 hash 是一样的。通过更过的 hash slot,将路由分布得更均匀。
当一台机器挂掉之后,会在极短的时间内,将挂掉的 hash slot 分配给其他两个物理节点
可以看成是 -> hash slot -> 机器,hash slot 数量固定,不一一对应机器,动态分配的。
数据分布算法:hash+ 一致性 hash + redis cluster 的 hash slot的更多相关文章
- 11.redis cluster的hash slot算法和一致性 hash 算法、普通hash算法的介绍
分布式寻址算法 hash 算法(大量缓存重建) 一致性 hash 算法(自动缓存迁移)+ 虚拟节点(自动负载均衡) redis cluster 的 hash slot 算法 一.hash 算法 来了一 ...
- redis cluster和hash slot
redis cluster介绍 从redis3.0.0开始,官方支持了redis cluster的集群模式,结束了redis没有集群的时代. redis cluster 支撑 N 个 redis ma ...
- redis cluster介绍
讲解分布式数据存储的核心算法,数据分布的算法 hash算法 -> 一致性hash算法(memcached) -> redis cluster,hash slot算法 一.概述 1.我们的m ...
- redis cluster集群的原理
redis集群的概述: 在以前,如果前几年的时候,一般来说,redis如果要搞几个节点,每个节点存储一部分的数据,得借助一些中间件来实现,比如说有codis,或者twemproxy,都有.有一些red ...
- Redis实战 - 3.Hash
hash Redis的Hash有点像一个对象(object),一个Hash里面可以存多个Key-Value对作为它的field,所以它通常可以用来表示对象. Hash里面能存放的值也能作为String ...
- Redis cluster集群模式的原理
redis cluster redis cluster是Redis的分布式解决方案,在3.0版本推出后有效地解决了redis分布式方面的需求 自动将数据进行分片,每个master上放一部分数据 提供内 ...
- 高可用Redis:Redis Cluster
转(https://www.cnblogs.com/renpingsheng/p/9862485.html) Redis Cluster是Redis官方提供的Redis集群功能 1.为什么要实现Red ...
- redis cluster 集群畅谈(一)
redis单机在大数据量情况的会出现瓶颈问题,通过redis 主从架构和 哨兵集群结合可以实现99.99% 高可用 .水平扩容支持更高QPS的解决方案. 在大数据量面前,主从架构结合哨兵集群的解决方案 ...
- Redis Cluster(Redis 3.X)设计要点
Redis 3.0.0 RC1版本号10.9号公布,Release Note这个版本号支持Redis Cluster.相信非常多同学期待已久,只是这个版本号仅仅是RC版本号,要应用到生产环境,还得等等 ...
- 面试系列17 redis cluster
1.redis cluster介绍 redis cluster (1)自动将数据进行分片,每个master上放一部分数据(2)提供内置的高可用支持,部分master不可用时,还是可以继续工作的 在re ...
随机推荐
- 深入解析:AntSK 0.1.7版本的技术革新与多模型管理策略
在信息技术快速迭代的当下,.Net生态中的AntSK项目凭借其前沿的AI知识库和智能体技术,已经吸引了广大开发者的关注和参与.今天,我要给大家介绍的主角,AntSK 0.1.7版本,无疑将是这个开源项 ...
- 分支合并规则 dev master v1.0.XX 三条分支的合并原则
分支合并规则 dev master v1.0.XX 三条分支的合并原则
- koa 文件下载 pdf预览 两个接口 - nodejs - chromeDownload chromePreview
koa 文件下载 pdf预览 两个接口 - nodejs - chromeDownload chromePreview chrome.js const router = require("k ...
- -Dmaven.multiModuleProjectDirectory system propery is not set解决方案
myeclipse中使用maven插件的时候,运行run as maven build的时候报错 -Dmaven.multiModuleProjectDirectory system propery ...
- Spring Boot学习日记7
学会了配置spring boot 导入各种组件 SpringBoot在启动的时候,从类路径下/META-INF/spring.factories获取指定的值 将这些自动配置的类导入容器,自动配置类就会 ...
- Android 开发Day7
<project version="4"> <component name="ExternalStorageConfigurationManager&q ...
- Android 经典笔记之七:CountDownTimer解读
CountDownTimer(倒计时计数器) 1.1 介绍 1.2 参数 1.3 公共方法 1.4 使用方法 1.5 源码分析 **0.本人写的综合案例**[案例](https://github.co ...
- ARouter路由解析
目录介绍 01.原生跳转实现 02.实现组件跳转方式 2.1 传统跳转方式 2.2 为何需要路由 03.ARouter配置与优势 04.跨进程组件通信 4.1 URLScheme 4.2 AIDL 4 ...
- 记录--用了那么久的Vue,你了解Vue的报错机制吗?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 Vue的5种处理Vue异常的方法 相信大家对Vue都不陌生.在使用Vue的时候也会遇到报错,也会使用浏览器的F12 来查看报错信息.但 ...
- 记录--手把手教你Vue+ECharts+高德地图API实现天气预报数据可视化
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 所谓数据可视化,我们可以理解为从宏观角度来看一眼就能看出来整个数据的占比,走向.对于数据可视化,很多互联网公司是很看重这一块的,包括 ...