redis的原理(四)

简介: redis的原理(四)

1、分布式数据存储的核心算法,数据分布的算法

①、redis cluster

a、自动将数据进行分片,每个master上放一部分数据

b、提供内置的高可用支持,部分master不可用时,还是可以继续工作的,在redis cluster架构下,每个redis要放开两个端口号,比如一个是6379,另外一个就是加10000的端口号,比如16379,16379端口号是用来进行节点间通信的,也就是cluster bus的东西,集群总线。cluster bus的通信,用来进行故障检测,配置更新,故障转移授权,cluster bus用了另外一种二进制的协议,主要用于节点间进行高效的数据交换,占用更少的网络带宽和处理时间。

2、最老土的hash算法和弊端(大量缓存重建)

在整个设计当中:集群的主从是由随机的去选择的,由脚本里面最近的节点ip段来主从划分选的,缺点:比如突然第二台挂掉:会影响整个的缓存都会不可用了,因为是按照%来取的,这是hash方式最老土的。

3、一致性hash算法(自动缓存迁移)+虚拟节点(自动负载均衡)

比如有三个master.,通过hash算法,来把key放入到不同的位置,hash算法有很多,这时如果节点没有直接落到2上,而是落到下面的位置,这时会有一个顺时针的旋转然后它就会落到2的位置。现在如果即使第三个master挂掉的话,数据不会全部无效。如果下次的key落到3的附近,发现第三个master挂了,无效的,它会继续旋转找到第一个。

但是这时会有热点数据的问题,可能某一个时刻,发现2里面的数据存的很多, 而1的里面没有数据

这时redis搞了一个虚拟节点。虚拟节点去生成1的节点的快捷方式,类似于快速

这时就给它均匀分布,这时就不会导致所有的key落在一个节点上,这时会根据虚拟节点找到真实节点去进行存储了。这就不会出现热点数据堆积的问题。这就不会导致主从的结构的数据完全失效。

4、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的成本是非常低的。

②、hash环和hash slot是一样的道理,三个master把hash槽分成了三个部分。下面的hash slot是有很多的槽,我这里只是简单的画下


③、这里还有一个机制:就是故障转移机制,如果槽所在的master挂掉了,会实现槽的转移,这就是redis集群能够做到高可用和故障转移的原理。这个比hash环设计的好一些,并且做到了槽的转移。槽的转移是很快速的,因为在一个集群中。一般 的槽是连续的,不是断开的。槽的分配尽量是均匀的。这里不会有热点的问题。因为一个master有5000个槽。

相关文章
|
2月前
|
NoSQL Redis
Redis 执行 Lua保证原子性原理
Redis 执行 Lua 保证原子性原理
129 1
|
2月前
|
监控 NoSQL Redis
看完这篇就能弄懂Redis的集群的原理了
看完这篇就能弄懂Redis的集群的原理了
56 0
|
11天前
|
缓存 NoSQL Linux
redis的原理(三)
redis的原理(三)
redis的原理(三)
|
4月前
|
NoSQL Java Redis
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
69 0
|
11天前
|
存储 缓存 NoSQL
redis的原理(二)
redis的原理(二)
|
11天前
|
缓存 NoSQL 安全
Redis的原理(一)
Redis的原理(一)
|
2月前
|
存储 NoSQL Java
深入理解Redis数据类型Hashes原理
本文深入分析了Redis中的hashes数据类型,这是一种用于存储行记录的数据结构,允许一个key下存储多条记录。
深入理解Redis数据类型Hashes原理
|
2月前
|
运维 监控 NoSQL
【Redis】哨兵(Sentinel)原理与实战全解~炒鸡简单啊
Redis 的哨兵模式(Sentinel)是一种用于实现高可用性的机制。它通过监控主节点和从节点,并在主节点故障时自动进行切换,确保集群持续提供服务。哨兵模式包括主节点、从节点和哨兵实例,具备监控、通知、自动故障转移等功能,能显著提高系统的稳定性和可靠性。本文详细介绍了哨兵模式的组成、功能、工作机制以及其优势和局限性,并提供了单实例的安装和配置步骤,包括系统优化、安装、配置、启停管理和性能监控等。此外,还介绍了如何配置主从复制和哨兵,确保在故障时能够自动切换并恢复服务。
|
2月前
|
存储 NoSQL 算法
深入理解Redis分片Cluster原理
本文深入探讨了Redis Cluster的分片原理,作为Redis官方提供的高可用性和高性能解决方案,Redis Cluster通过数据分片和横向扩展能力,有效降低单个主节点的压力。
深入理解Redis分片Cluster原理
下一篇
无影云桌面