一种构建大规模redis集群的方法技术

技术编号:29683757 阅读:16 留言:0更新日期:2021-08-13 22:07
本发明专利技术公开了一种构建大规模redis集群的方法,该方法包括以下步骤:根据远程字典服务节点的不同属性与其他远程字典服务节点建立通信连接;通过建立的通信连接及基于集群节点间的通信连接模块进行信息同步;若集群中节点挂掉时,各管理节点对该节点进行故障的协商判定;若从节点发起选举投票时,各管理节点进行投票并选出新的主节点,同时新的主节点代替故障主节点。有益效果:本发明专利技术能够极大减少集群节点间通信所要建立的网络连接数量;也有效的降低了集群节点间通信所占用的网络带宽,进而降低占用的主机资源,从而构建集群规模能够达到上千节点。

【技术实现步骤摘要】
一种构建大规模redis集群的方法
本专利技术涉及分布式缓存领域,具体来说,涉及一种构建大规模redis集群的方法。
技术介绍
开源Redis(远程字典服务)产品提供了RedisCluster(是Redis的分布式解决方案)集群模式,其采用无中心架构集群,为了维护集群状态信息的统一,集群中各节点之间需要互相进行信息的交换:集群中每个节点会跟其他所有节点连接,集群采用交换消息的方式被称为Gossip(流言传播协议),每个Redis节点都会周期性的跟其他节点交换信息,并且需要在一定时间内,必须完成跟所有节点的信息交换,从而使所有节点最终达成信息的一致性。如图5所示,这种集群构建方式,因为集群节点两两连接,所以随着集群中节点数的增大,集群网络连接数将成指数级增长;而且随着集群节点数的增多,集群通信的网络带宽占用同样会大幅增加,从而占用更多的主机资源。所以其集群构建规模受此所限,不建议超过200节点。针对相关技术中的问题,目前尚未提出有效的解决方案。
技术实现思路
针对相关技术中的问题,本专利技术提出一种构建大规模redis集群的方法,以克服现有相关技术所存在的上述技术问题。为此,本专利技术采用的具体技术方案如下:一种构建大规模redis集群的方法,该方法包括以下步骤:S1、根据远程字典服务节点的不同属性与其他远程字典服务节点建立通信连接;S2、通过建立的通信连接及基于集群节点间的通信连接模块进行信息同步;S3、若集群中节点挂掉时,各管理节点对该节点进行故障的协商判定;S4、若从节点发起选举投票时,各管理节点进行投票并选出新的主节点,同时新的主节点代替故障主节点;其中,集群节点分为管理节点和普通节点,管理节点与其他所有节点连接通信,并进行节点的故障判定及主从故障选举,普通节点与管理节点以及所属主从关系的节点连接通信。进一步的,所述S3中若集群中节点挂掉时,各管理节点对该节点进行故障的协商判定还包括以下步骤:S31、管理节点启动并与其他所有节点建立长期通信连接;S32、若管理节点与每个节点的连接建立失败,则定时进行重连处理,直到连接建立;S33、普通节点启动并与所有管理节点以及其所属主/从节点建立长期通信连接;S34、若普通节点与其他节点的连接建立失败,则定时进行重连处理,直到连接建立;S35、各节点在超时周期t1内与连接的所有节点进行一次心跳通信,并记录此次心跳通信的心跳请求包的发起时间;S36、各节点在接收到其他节点在步骤S35中的心跳请求包后,检查包含的各节点状态,并回复心跳响应包;S37、各节点在接收到其他节点在步骤S36中的心跳响应包后,重置心跳请求包的发起时间为0,且针对心跳请求包中的各节点状态进行处理。进一步的,所述管理节点最终建立的连接总数表达式:E(m,n)=(m-1+n)×m;其中,管理节点个数表示为m,普通节点个数表示为n。进一步的,所述普通节点最终建立的连接总数表达式:m×n≤F(m,n,r)≤(m+r-1)×n;其中,管理节点个数表示为m,普通节点个数表示为n,数据副本数表示为r。进一步的,所述心跳请求包及心跳响应包的内容均包含本节点的分片信息和10%节点的状态信息。进一步的,所述S35中各节点在超时周期t1内与连接的所有节点进行一次心跳通信,并记录此次心跳通信的心跳请求包的发起时间还包括以下步骤:S351、若各节点在步骤S35中的心跳请求包在过半超时周期t1/2内未收到步骤S36中的心跳响应包,则断开与该节点的连接,且连接将在步骤S31-步骤S34中重新建立;S352、若各节点在步骤S35中的心跳请求包在超时周期t1内未收到步骤S36中的心跳响应包,则标记该节点为疑似故障状态。进一步的,所述S36中各节点在接收到其他节点在步骤S35中的心跳请求包后,检查包含的各节点状态,并回复心跳响应包还包括以下步骤:S361、若发送节点是管理节点,且心跳请求包中存在标记为疑似故障状态的节点,则将疑似故障状态的节点增加到本节点中记录的该节点的疑似故障报告列表中;S362、若本节点为管理节点,且该疑似故障状态的节点的报告数超过半数管理节点,则修改该疑似故障状态的节点状态由疑似故障变为故障,同时广播通知其他所有存活节点,标记该故障节点状态为故障;S363、若发送节点为管理节点,且心跳请求包中存在标记为故障状态的节点,则将本节点中记录的对应节点状态标记为故障;S364、若发送节点为管理节点,且心跳请求包中存在标记为正常状态的节点,则将正常状态的节点从本节点中记录的该节点的疑似故障报告列表中删除;S365、若本节点为普通节点,且该节点状态为故障,则需要恢复该节点状态为正常;其中,所述S37中各节点在接收到其他节点在步骤S36中的心跳响应包后,重置心跳请求包的发起时间为0,且针对心跳请求包中的各节点状态进行处理,其中处理的步骤同步骤361-步骤365。进一步的,所述管理节点记录的疑似故障节点的报告数表示为x,则判定节点故障的条件表达式为:,其中,管理节点个数表示为m。进一步的,所述S4中若从节点发起选举投票时,各管理节点进行投票并选出新的主节点,同时新的主节点代替故障主节点还包括以下步骤:S41、当从节点所属的主节点状态为故障时,该从节点发送主从故障切换投票请求至所有管理节点;S42、管理节点接收到步骤S41中的故障切换投票请求后,若在投票周期2*t1内未针对该主节点做过投票,则回复响应包至发起投票的从节点;S43、从节点接收到步骤S42中的管理节点返回的投票响应后,则对投票计数加1;S44、若投票计数超过半数管理节点,则该从节点将自己切换为主节点,并使用广播通知其他所有连接节点,该数据分片发生了主从切换,且选取一个管理节点进行二次广播通知;S45、各节点接收到步骤S44中的主从切换通知后,更新该从节点对应数据分片新的主节点,原来的主节点则更新为从节点,若本节点为需要进行二次广播的管理节点,则再次发送该数据分片的主从切换通知给其他所有连接节点;S46、故障节点重启后,从其他节点获取集群节点分片信息,且根据信息切换为从节点并接入集群。进一步的,若S44中的投票数表示为y,则从节点可以进行主从切换的条件表达式为:,其中,管理节点个数表示为m。本专利技术的有益效果为:本专利技术的一种构建大规模redis集群的方法,将集群节点区分为管理节点和普通节点,其中管理节点会跟其他所有节点连接通信,并进行节点的故障判定和投票选举权;而普通节点只跟管理节点以及所属主从关系的节点连接通信,且通过采用少量的管理节点来连接所有集群节点,能够极大减少集群节点间通信所要建立的网络连接数量;同时因为大量的普通节点只跟管理节点进行集群通信,从而也有效的降低了集群节点间通信所占用的网络带宽,进而降低占用的主机资源,从而可以支持上千规模节点本文档来自技高网...

【技术保护点】
1.一种构建大规模redis集群的方法,其特征在于,该方法包括以下步骤:/nS1、根据远程字典服务节点的不同属性与其他远程字典服务节点建立通信连接;/nS2、通过建立的通信连接及基于集群节点间的通信连接模块进行信息同步;/nS3、若集群中节点挂掉时,各管理节点对该节点进行故障的协商判定;/nS4、若从节点发起选举投票时,各管理节点进行投票并选出新的主节点,同时新的主节点代替故障主节点;/n其中,集群节点分为管理节点和普通节点,管理节点与其他所有节点连接通信,并进行节点的故障判定及主从故障选举,普通节点与管理节点以及所属主从关系的节点连接通信。/n

【技术特征摘要】
1.一种构建大规模redis集群的方法,其特征在于,该方法包括以下步骤:
S1、根据远程字典服务节点的不同属性与其他远程字典服务节点建立通信连接;
S2、通过建立的通信连接及基于集群节点间的通信连接模块进行信息同步;
S3、若集群中节点挂掉时,各管理节点对该节点进行故障的协商判定;
S4、若从节点发起选举投票时,各管理节点进行投票并选出新的主节点,同时新的主节点代替故障主节点;
其中,集群节点分为管理节点和普通节点,管理节点与其他所有节点连接通信,并进行节点的故障判定及主从故障选举,普通节点与管理节点以及所属主从关系的节点连接通信。


2.根据权利要求1所述的一种构建大规模redis集群的方法,其特征在于,所述S3中若集群中节点挂掉时,各管理节点对该节点进行故障的协商判定还包括以下步骤:
S31、管理节点启动并与其他所有节点建立长期通信连接;
S32、若管理节点与每个节点的连接建立失败,则定时进行重连处理,直到连接建立;
S33、普通节点启动并与所有管理节点以及其所属主/从节点建立长期通信连接;
S34、若普通节点与其他节点的连接建立失败,则定时进行重连处理,直到连接建立;
S35、各节点在超时周期t1内与连接的所有节点进行一次心跳通信,并记录此次心跳通信的心跳请求包的发起时间;
S36、各节点在接收到其他节点在步骤S35中的心跳请求包后,检查包含的各节点状态,并回复心跳响应包;
S37、各节点在接收到其他节点在步骤S36中的心跳响应包后,重置心跳请求包的发起时间为0,且针对心跳请求包中的各节点状态进行处理。


3.根据权利要求2所述的一种构建大规模redis集群的方法,其特征在于,所述管理节点最终建立的连接总数表达式:
E(m,n)=(m-1+n)×m;其中,管理节点个数表示为m,普通节点个数表示为n。


4.根据权利要求3所述的一种构建大规模redis集群的方法,其特征在于,所述普通节点最终建立的连接总数表达式:
m×n≤F(m,n,r)≤(m+r-1)×n;
其中,管理节点个数表示为m,普通节点个数表示为n,数据副本数表示为r。


5.根据权利要求4所述的一种构建大规模redis集群的方法,其特征在于,所述心跳请求包及心跳响应包的内容均包含本节点的分片信息和10%节点的状态信息。


6.根据权利要求5所述的一种构建大规模redis集群的方法,其特征在于,所述S35中各节点在超时周期t1内与连接的所有节点进行一次心跳通信,并记录此次心跳通信的心跳请求包的发起时间还包括以下步骤:
S351、若各节点在步骤S35中的心跳请求包在过半超时周期t/2内未收到步骤S36中的心跳响应包,则断开与该节点的连接,且连接将在步骤S31-步骤S34中重新建立;
S352、若各节点在步骤S35中的心跳请求包在超时周期t1内未收到步骤S36中的心跳响应包...

【专利技术属性】
技术研发人员:于光杰刘启铨曾力耕
申请(专利权)人:浩鲸云计算科技股份有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1