数据库
首页 > 数据库> > redis夺命连环问11--集群模式工作原理能说一下么?集群模式下的key是如何寻址的?分布式寻址都有哪些算法?了解一致性hash算法吗?

redis夺命连环问11--集群模式工作原理能说一下么?集群模式下的key是如何寻址的?分布式寻址都有哪些算法?了解一致性hash算法吗?

作者:互联网

目录

Redis集群模式的工作原理能说一下么?

首先谈数据分区规则

Redis Cluster数据分区采用哈希规则
在这里插入图片描述

再谈分区具体方案

Redis Cluster采用虚拟槽分区方案
实现思路:Redis集群没有使用一致性hash,而是引入了哈希槽的概念,Redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分hash槽。
优点

缺点:也就是集群功能限制的地方:

最后谈实例通信机制

Redis Cluster 实例以 Gossip 协议进行通信的机制
Gossip 协议


盲目扩大集群规模,实例间的通信量也会增加,集群性能变慢,如何降低实例间的通信开销?

病因:集群中大规模的实例间心跳消息会挤占集群处理正常请求的带宽。有些实例可能因为网络拥塞导致无法及时收到 PONG 消息,每个实例在运行时会周期性地检测是否有这种情况发生,一旦发生,就会立即给这些 PONG 消息超时的实例发送心跳消息。集群规模越大,网络拥塞的概率就越高,相应的,PONG 消息超时的发生概率就越高,这就会导致集群中有大量的心跳消息,影响集群服务正常请求。

解决调整设置集群节点故障判定时间(cluster-node-timeout),避免过多的心跳消息挤占集群带宽,但也不能调太大哈。


在集群模式下,redis 的 key 是如何寻址的?分布式寻址(数据分布方案)都有哪些算法?

上面这俩看旁边两题有解释了。。。


了解一致性 hash 算法吗?

一致性哈希分区方案
实现思路:为系统的每个节点分配一个token,范围一般在0 ~ 2^{32} ,这些toke构成一个哈希环,数据读写执行节点查找操作时,先根据key计算hash值,然后顺时针找到第一个大于等于该哈希值的token节点。
在这里插入图片描述
优点:加入和删除节点只影响哈希环中相邻的节点。
缺点


Redis集群如何选择数据库?

Redis集群目前无法做数据库选择,默认在0数据库。

Redis集群最大节点个数是多少?

16384个

Redis集群会有写操作丢失吗?为什么?

Redis并不能保证数据的强一致性,这意味这在实际中集群在特定的条件下可能会丢失写操作。

为什么要做Redis分区?

分区可以让Redis管理更大的内存,Redis将可以使用所有机器的内存。如果没有分区,你最多只能使用一台机器的内存。分区使Redis的计算能力通过简单地增加计算机得到成倍提升,Redis的网络带宽也会随着计算机和网卡的增加而成倍增长。

你知道有哪些Redis分区实现方案?

Redis分区有什么缺点?

介绍下Redis Cluster

前言:Redis 的哨兵模式基本已经可以实现高可用,读写分离 ,但是在这种模式下每台 Redis 服务器都存储相同的数据,很浪费内存,所以在 Redis3.0 上加入了 Cluster 集群模式,实现了 Redis 的分布式存储,对数据进行分片,也就是说每台 Redis 节点上存储不同的内容。

Redis Cluster是Redis分布式集群解决方案,主要解决Redis分布式方面的需求,比如,当遇到单机内存,并发和流量等瓶颈的时候,Redis Cluster能起到很好的负载均衡的目的。

Redis Cluster集群节点最小配置6个节点以上(3主3从),其中主节点提供读写操作,从节点作为备用节点,不提供请求,只作为故障转移使用。

Redis Cluster采用虚拟槽分区,所有的键根据哈希函数映射到0~16383个整数槽内,每个节点负责维护一部分槽以及槽所印映射的键值数据。

优点

缺点

标签:实例,分区,Redis,算法,寻址,集群,key,节点
来源: https://blog.csdn.net/weixin_45785536/article/details/122799977