redis集群原理是什么?

2020-03-28 19:59:10 java常见问答 4748

Redis大家也挺熟悉的吧,技能用法也熟知于心了吧,那么是否知道redis集群的原理呢?不了解的我们一起深度的探讨一番,了解的我们就巩固复习redis集群的原理吧。

Redis是内存服务器,使用Redis可以减少IO访问量,提供系统并发访问效率。在高可用方面,Redis提供集群技术,在Redis3.0之前使用哨兵和主从复制技术解决高可用问题,在Redes3.0之后采用数据分区存储到不同的插槽技术,每组插槽由一个Redis主节点托管,主节点与多个从节点数据同步的方式实现高可用。如下图:

redis集群原理

客户端可以连接集群中的任意节点,将存储Key-Value中的Key,取CRC16运算结果,在取16384的模,得到的值一定在0-16384之间,再根据集群中每个节点托管的Solt配置,将请求路由到对应的主节点上。

节点间通信

Redis集群节点间使用Gossip二进制协议通信,通信的信息包括:

1、节点的IP和端口

2、节点的标识ID

3、节点托管的Solt范围

4、节点最后一次向集群发送PING数据包的时间

5、节点最后一次从集群收到PONG数据包的时间

6、集群将此节点标志下线的时间

7、此节点的从节点数量

8、如果此节点是从节点,发生其主节点的ID

新增节点识别

1、管理员通过命令使集群接收新节点

cluster meet ip port

2、通过集群节点推荐机制

系统管理将新节点与集群中的任意节点建立信任连接,集群中的其它节点会自动对新节点建立信任连接。

节点失效检测

集群中的节点向其它节点发送PING数据包,接受来自其它节点PONG回复,如果在规定时间内(node timeout)未收到某个回复,将这个节点标记为PFAIL(possible failure)。节点间传播的信息都包含检测到的PFAIL节点列表,如果集群内大部分节点标识某节点为PFAIL状态,此节点转为FAIL状态。

从节点选举

一旦某主节点进入FAIL状态,如果主节点存在从节点,那么其中一个从节点会被升级为新的主节点。其它从节点与新的主节点建立主从关联并同步数据。整个从节点选举过程分为申请、授权、升级、同步四个阶段

1、申请

下线的主节点的从节点中满足如下条件的,向集群中其它主节点发出升级申请

a)、节点对应的主节点下线

b)、下线的主节点托管着Slot哈希槽

2、授权

集群中其它主节点根据如下条件判断,从节点升级申请

a)、发送申请的从节点对应的主节点处于FAIL状态

b)、在下线的主节点的从节点列表中,此节点ID最小

c)、此从节点运行正常,没有标注FAIL和PFAIL状态。

3、升级

一旦从节点在给定时间内获得集群大部分主节点的授权,就接管下线主节点的全部Slot数据,并且主动发送PONG数据包给集群中的其它节点,告知其它节点自己是一个PROMOTED SLAVE,即已升级的从节点,

4、同步

其它节点接收到PROMOTED SLAVE告知后,根据新的主节点进行相应配置。所有被新主节点接管的Slot会被更新。如果已经下线的主节点复活,再收到PROMOTED标识后,成为新节点的从节点。

集群动态配置

集群通过ADDSLOTS和DELSLOTS命令添加和删除节点。

CLUSTER SETSLOT slot NODE node

可以将指定槽slot指派给节点node

CLUSTER SETSLOT slot MIGRATING node

将指定节点的槽slot移出

CLUSTER SETSLOT slot IMPORTING node

将指定槽slot导入节点node

以上的redis的原理是否明了呢?更多知识的详情,请继续关注本网站。