CN107800551A - Redis集群系统及其提高可靠性的方法、客户端 - Google Patents
Redis集群系统及其提高可靠性的方法、客户端 Download PDFInfo
- Publication number
- CN107800551A CN107800551A CN201610798570.9A CN201610798570A CN107800551A CN 107800551 A CN107800551 A CN 107800551A CN 201610798570 A CN201610798570 A CN 201610798570A CN 107800551 A CN107800551 A CN 107800551A
- Authority
- CN
- China
- Prior art keywords
- redis
- node
- group
- service groups
- redundant
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0823—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
- H04L41/0836—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability to enhance reliability, e.g. reduce downtime
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1029—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1034—Reaction to server failures by a load balancer
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请提供了一种Redis集群系统及其提高可靠性的方法、客户端,所述Redis集群系统包括Redis服务组、冗余节点组和集群控制模块,所述方法的执行主体为集群控制模块,所述方法包括:采集所述Redis服务组的状态;判断所述Redis服务组的节点数量是否减少;若是,从冗余节点组选择冗余节点补充到所述Redis服务组。本申请通过设置由少量服务节点组成的冗余节点组,并在服务节点出现故障时能够将冗余节点迁移到相应服务组中,可以有效避免现有Redis集群技术无法避免因个别服务节点组中的节点同时出现故障而导致整个集群无法正常提供服务的问题。
Description
技术领域
本申请涉及Redis集群技术领域,特别地,涉及一种Redis集群系统及其提高可靠性的方法、客户端。
背景技术
Redis集群(Redis Cluster)是一种通过在服务端将Redis数据进行分片,并按一定的散列算法(可以为Hash算法或其他散列方法)将Redis数据的键值(Key)合理分配到不同的Redis服务节点的方案。
在Redis集群中,对于分片采用槽(Slot)的方式进行管理,一共分为16384个槽,对于进入Redis的每个键值对,根据键值进行散列,分配到上述16384个槽的某一个中。Redis集群中的每个节点(Node)负责分摊16384个槽中的一部分,当动态增加或减少节点时,需要将16384个槽进行重新分配,每个槽对应的键值也需要迁移。在Redis集群中,需要保证16384个槽对应的节点都能正常工作,如果某个节点发生故障,其对应的槽也会失效,整个集群将不能工作。为了增加集群的可靠性,将各服务节点配置成主从结构(Master/Slave),如图1所示,每组服务节点包括一个主节点(Master节点)和一个或多个从节点(Slave节点),当主节点失效时,会根据预设算法选举一个从节点作为主节点,从而使整个集群能够继续对客户端提供服务。
在图1所示的P2P集群方案中,没有设置中心节点,主节点之间采用两两通信的模式,可以通过gossip协议发现新增加或退出的节点,进而实现系统的动态扩容或缩容,只要客户端能连接到集群中的其中一个节点就能获取其他节点信息。但是,一组服务节点中的主节点及其从节点同时故障时,仍然会造成整个集群不可用的问题。
发明内容
本申请提供一种Redis集群系统及其提高可靠性的方法、客户端,用于解决现有集群技术无法避免一组节点同时出现故障导致整个集群不可用的问题。
本申请公开的一种Redis集群提高可靠性的方法,所述Redis集群系统包括Redis服务组、冗余节点组和集群控制模块,所述方法的执行主体为集群控制模块,所述方法包括:采集所述Redis服务组的状态;判断所述Redis服务组的节点数量是否减少;若是,从冗余节点组选择冗余节点补充到所述Redis服务组。
优选的,所述方法还包括:判断所述Redis服务组的节点数量是否增加;若是,将所述Redis服务组的冗余节点回收到冗余节点组。
优选的,所述Redis服务组的数量为2个以上;所述方法还包括:根据Redis服务组的数量建立集群槽位与Redis服务组之间的映射关系;其中,客户端向所述集群控制模块发起查询请求时获取所述映射关系,并根据所述映射关系以及键值对应的集群槽位,获取Redis服务组的地址。
优选的,还包括:根据冗余节点组中节点的数量,对Redis集群进行缩容或扩容;根据缩容或扩容后的Redis服务组的数量重新建立集群槽位与Redis服务组之间的映射关系。
优选的,Redis服务组的配置原则是同一个服务组内的节点之间的物理位置尽量不同;所述物理位置包括机房位置和/或机架位置;Redis服务组的节点选取原则为:优先选择位于不同机房的节点,其次选择位于相同机房不同机架的节点;将所述Redis服务组的冗余节点回收到冗余节点组时的节点选取原则为:选择物理位置与主节点最近的从节点作为冗余节点。
优选的,从冗余节点组选择冗余节点补充到所述Redis服务组,具体包括:当所述Redis服务组中剩余节点数量为1时,从冗余节点组中选择1个节点作为该Redis服务组的从节点;当Redis服务组中剩余节点数量为0时,从冗余节点组中选择2个节点分别作为该Redis服务组的主节点和从节点,并恢复Redis集群为正常状态。
本申请公开的一种Redis集群系统提高可靠性的装置,所述Redis集群系统包括Redis服务组、冗余节点组和集群控制模块,在集群控制模块侧,所述装置包括:状态采集单元,用于采集所述Redis服务组的状态;节点分配单元,用于判断所述Redis服务组的节点数量是否减少;若是,从冗余节点组选择冗余节点补充到所述Redis服务组。
优选的,还包括:节点回收单元,用于判断所述Redis服务组的节点数量是否增加;若是,将所述Redis服务组的冗余节点回收到冗余节点组。
优选的,所述Redis服务组的数量为2个以上;所述装置还包括:映射关系建立单元,用于根据Redis服务组的数量建立集群槽位与Redis服务组之间的映射关系;其中,客户端向所述集群控制模块发起查询请求时获取所述映射关系,并根据所述映射关系以及键值对应的集群槽位,获取Redis服务组的地址。
优选的,还包括:集群容量调整单元,用于根据冗余节点组中节点的数量,对Redis集群进行缩容或扩容;以及,根据缩容或扩容后的Redis服务组的数量重新建立集群槽位与Redis服务组之间的映射关系。
优选的,Redis服务组的配置原则是同一个服务组内的节点之间的物理位置尽量不同;所述物理位置包括机房位置和/或机架位置;Redis服务组的节点选取原则为:优先选择位于不同机房的节点,其次选择位于相同机房不同机架的节点;将所述Redis服务组的冗余节点回收到冗余节点组时的节点选取原则为:选择物理位置与主节点最近的从节点作为冗余节点。
本申请公开的一种Redis集群系统,包括冗余节点组、Redis服务组和集群控制模块;所述集群控制模块配置有上述Redis集群系统提高可靠性的装置。
本申请公开的一种Redis集群系统提高可靠性的方法,在通过网络与上述Redis集群系统连接的客户端一侧,所述方法包括:向集群控制模块发起查询请求,获取集群槽位与Redis服务组之间的映射关系;根据键值对应的集群槽位,获取Redis服务组的地址,向所述Redis服务组发出查询请求。
优选的,还包括:判断所述客户端与Redis服务组的连接是否成功;若连接失败,则根据历史记录中保存的集群节点列表中随机选择一个节点,并从该节点获取更新后的集群槽位与Redis服务组之间的映射关系;若连接成功,则进一步判断查询请求是否被重定向到新节点,若是,则从该重定向的新节点获取更新后的集群槽位与Redis服务组之间的映射关系。
本申请公开的一种客户端,所述客户端通过网络与权利要求12所述的Redis集群系统连接,所述客户端包括:初始配置模块,用于配置所述集群控制模块的地址,并在客户端启动后从所述集群控制模块获取集群槽位与Redis服务组之间的映射关系;数据访问模块,用于根据操作键值对应的槽位,获取相应的Redis服务组的地址,并向所述Redis服务组发起查询请求。
优选的,还包括:状态更新模块,用于当数据访问模块与Redis服务组连接失败或查询被重定向到新节点时,更新本地存储的集群槽位与Redis服务组之间的映射关系;其中,当连接失败时,根据历史记录中保存的集群节点列表中随机选择一个节点,并从该节点获取更新后的集群槽位与Redis服务组的映射关系;当查询请求被重定向到新节点时,从该重定向的新节点获取更新后的集群槽位与Redis服务组之间的映射关系。
与现有技术相比,本申请具有以下优点:
本申请优选实施例通过设置由少量服务节点组成的冗余节点组,并在服务节点出现故障时能够将冗余节点迁移到相应服务组中,可以有效避免现有Redis集群技术无法避免因个别服务节点组中的节点同时出现故障而导致整个集群无法正常提供服务(如位于同一个机房中的节点组成的节点组,当所在机房无法正常接入网络时,会导致整个集群无法正常使用)的问题。
附图说明
附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1现有Redis集群的结构示意图;
图2为本申请Redis集群系统提高可靠性的方法第一实施例的流程图;
图3为本申请Redis集群系统提高可靠性的方法第二实施例的流程图;
图4为本申请Redis集群系统一实施例的结构示意图;
图5为本申请客户端一实施例的结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
在本申请的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。“多个”的含义是两个或两个以上,除非另有明确具体的限定。术语“包括”、“包含”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”。术语“基于”是“至少部分地基于”。术语“一实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”。其他术语的相关定义将在下文描述中给出。
参照图2,示出了本申请Redis集群系统提高可靠性的方法第一实施例的流程,所述Redis集群系统的组成结构如图3所示,包括集群控制模块、Redis服务组和冗余节点组,具体实施时,每个Redis服务组可以包括1个主节点和1个以上的从节点,冗余节点组中的节点数量为1个以上。本方法实施例的执行主体为集群控制模块,所述方法包括:
步骤S101:采集Redis服务组的状态。
步骤S102:判断所述Redis服务组的节点数量是否减少;若是,转步骤S103;否则,转步骤S104。
步骤S103:从冗余节点组选择冗余节点补充到所述Redis服务组,结束流程。
步骤S104:判断所述Redis服务组的节点数量是否增加;若是,转步骤S105;否则,结束流程。
步骤S105:将所述Redis服务组的冗余节点回收到冗余节点组。
在另一实施例中,当所述Redis服务组的数量为2个以上时,为方便客户端快速定位到提供查询服务的Redis服务组;所述方法还包括:
步骤S106:根据Redis服务组的数量建立集群槽位与Redis服务组之间的映射关系。
其中,客户端向所述集群控制模块发起查询请求时获取所述映射关系,并根据所述映射关系以及键值对应的集群槽位,获取Redis服务组的地址。
进一步的,步骤S103具体可以包括:当Redis服务组中剩余节点数量为1时,从冗余节点组中选择1个节点作为该Redis服务组的从节点;当Redis服务组中剩余节点数量为0时(即该服务组中的2个节点都处于故障状态,此时整个集群已经不能提供正常服务),从冗余节点组中选择2个节点分别作为该Redis服务组的主节点和从节点,并恢复Redis集群为正常状态。为进一步提高可靠性,尽量选择物理位置不同的节点(即合适的节点)分配到同一个服务组中。
在另一实施例中,为进一步提高系统的可靠性,还可以根据冗余节点组中节点的数量,对Redis集群进行缩容或扩容。具体的,当冗余节点的数量小于预设冗余下限值(如可以将冗余下限值预设为1,此时,冗余节点组中已经没有冗余节点可以使用)时,对Redis集群进行缩容;当冗余节点的数量大于预设冗余上限值(如可以将冗余上限值设置为3,此时,新增加一个包括有1个主节点和1个从节点的服务组之后,冗余节点组中还可以剩下2的冗余节点)时,对Redis集群进行扩容;然后,根据缩容或扩容后的Redis服务组的数量重新建立集群槽位与Redis服务组之间的映射关系。
为进一步解决同一个地理位置(如同一个机房)的机器容易同时出现故障(如网路出现问题)导致一个Redis服务组故障而带来的集群不可用问题,提高系统的整体可靠性,可以采用如下Redis服务组的配置原则:同一个组内的节点之间的物理位置(包括机房位置和机架位置)尽量不同。
具体实现时,Redis服务组可以采用的节点选取原则为:先选择位于不同机房的节点,然后再选择位于相同机房不同机架的节点。
相应的,将Redis服务组中的冗余节点回收到冗余节点组中时的节点选取原则为:选择物理位置与主节点最近的从节点作为冗余节点,即先选择同机房同机架上的从节点,再选择同机房不同机架上的从节点,最后选择不同机房中的从节点。
需要说明的是,在具体实施时,集群控制模块可以根据需要部署在通过网络与Redis服务组和冗余节点组连接的一台独立的服务器中,也可以部署在具有主从关系的服务器组中,还可以部署在其中的一组Redis服务组中(即该服务组同时具有系统可靠性调整的功能以及查询服务功能)。
参照图3,示出了本申请Redis集群系统提高可靠性的方法第二实施例的流程,与上述第一方法实施例的区别在于,本方法实施例的执行主体为通过网络与上述Redis集群系统连接的客户端,所述方法包括:
步骤S201:向集群控制模块发起查询请求,获取集群槽位与Redis服务组之间的映射关系。
步骤S202:根据键值对应的集群槽位,获取Redis服务组的地址,向所述Redis服务组发出查询请求。
在另一优选实施例中,所述方法还可以包括:
步骤S203:判断客户端与Redis服务组的连接是否失败,若是,转步骤S206;否则,转步骤S204。
步骤S204:判断查询请求是否被重定向到新节点,若是,转步骤S205;否则,结束流程。
步骤S205:从该重定向的新节点获取更新后的集群槽位与Redis服务组之间的映射关系。
步骤S206:根据历史记录中保存的集群节点列表中随机选择一个节点,并从该节点获取更新后的集群槽位与Redis服务组的映射关系。
本申请通过上述手段,能够减少系统部署时的配置工作量,使客户端初始启动时即可通过控制模块获取集群中所有槽位与服务节点的映射关系(以Hash散列算法为例,可以获得集群的所有Hash信息),之后当集群节点发生变化时直接与集群中节点交互并均衡的与集群中的节点进行hash槽位信息的交换。
对于前述的各方法实施例,为了描述简单,故将其都表述为一系列的动作组合,但是本领域的技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为根据本申请,某些步骤可以采用其他顺序或同时执行;其次,本领域技术人员也应该知悉,上述方法实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
参照图4,示出了本申请Redis集群系统一实施例的结构框图,包括集群控制模块、冗余节点组和Redis服务组,具体实施时,所述冗余节点组可以包括1个或多个冗余节点,每个Redis服务组可以包括1个主节点和1个以上的从节点。所述集群控制模块设置有Redis集群系统提高可靠性的装置,所述装置具体包括:
状态采集单元,用于采集所述Redis服务组的状态。
节点分配单元,用于判断所述Redis服务组的节点数量是否减少;若是,从冗余节点组选择冗余节点补充到所述Redis服务组。
进一步的,所述装置还包括:
节点回收单元,用于判断所述Redis服务组的节点数量是否增加;若是,将所述Redis服务组的冗余节点回收到冗余节点组。
在另一实施例中,当Redis服务组的数量为2个以上时,为方便客户端快速定位到提供查询服务的Redis服务组;所述装置还包括:
映射关系建立单元,用于根据Redis服务组的数量建立集群槽位与Redis服务组之间的映射关系;其中,客户端向所述集群控制模块发起查询请求时获取所述映射关系,并根据所述映射关系以及键值对应的集群槽位,获取Redis服务组的地址。
在另一实施例中,为进一步提高系统的可靠性,还可以根据冗余节点组中节点的数量,对Redis集群进行缩容或扩容。此时,所述装置还包括:
集群容量调整单元,用于根据冗余节点组中节点的数量,对Redis集群进行缩容或扩容,并根据缩容或扩容后的Redis服务组的数量重新建立集群槽位与Redis服务组之间的映射关系;其中,当冗余节点的数量小于预设冗余下限值时,对Redis集群进行缩容;当冗余节点的数量大于预设冗余上限值时,对Redis集群进行扩容。
进一步的,当某一个Redis服务组的节点数减少时,节点类型调整单元采用如下方式将冗余节点组中的节点补充到该Redis服务组中:当Redis服务组中剩余节点数量为1时,从冗余节点组中选择1个节点作为该Redis服务组的从节点;当Redis服务组中剩余节点数量为0时,从冗余节点组中选择2个节点分别作为该Redis服务组的主节点和从节点,并恢复Redis集群为正常状态。
进一步的,Redis服务组可以采用如下配置原则:同一个组内的节点之间的物理位置尽量不同;其中的物理位置可以具体包括机房位置和机架位置。
具体的,Redis服务组可以采用如下节点选取原则:先选择位于不同机房的节点,再选择位于相同机房不同机架的节点;
相应的,冗余节点回收时的节点选取原则为:选择物理位置与主节点最近的从节点作为冗余节点。
另外,集群控制模块可以部署在通过网络与Redis服务组和冗余节点组连接的一台独立的服务器中,也可以部署在具有主从关系的服务器组中。
参照图5,示出了本申请通过网络与上述Redis集群系统连接的客户端一实施例的结构框图,包括:
初始配置模块,用于配置上述集群控制模块的地址,并在客户端启动后从该集群控制模块获取集群槽位与Redis服务组的映射关系;
数据访问模块,用于根据键值对应的Hash槽位,获取相应的Redis服务组的地址,并向所述Redis服务组发起查询请求。
进一步的,所述客户端还包括:
状态更新模块,用于当数据访问模块与Redis服务组连接失败或查询被重定向到新节点时,更新客户端本地存储的集群槽位与Redis服务组之间的映射关系;其中,当连接失败时,根据历史记录中保存的集群节点列表中随机选择一个节点,并从该节点获取更新后的集群槽位与Redis服务组的映射关系;当查询请求被重定向到新节点时,从该重定向的新节点获取更新后的集群槽位与Redis服务组的映射关系。
需要说明的是,上述系统和客户端实施例属于优选实施例,所涉及的单元和模块并不一定是本申请所必须的。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于本申请的系统和客户端实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本申请所提供的一种Redis集群系统及其提高可靠性的方法和装置、客户端,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (16)
1.一种Redis集群系统提高可靠性的方法,其特征在于,所述Redis集群系统包括Redis服务组、冗余节点组和集群控制模块,所述方法的执行主体为集群控制模块,所述方法包括:
采集所述Redis服务组的状态;
判断所述Redis服务组的节点数量是否减少;若是,从冗余节点组选择冗余节点补充到所述Redis服务组。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
判断所述Redis服务组的节点数量是否增加;若是,将所述Redis服务组的冗余节点回收到冗余节点组。
3.根据权利要求1所述的方法,其特征在于,所述Redis服务组的数量为2个以上;
所述方法还包括:根据Redis服务组的数量建立集群槽位与Redis服务组之间的映射关系;其中,客户端向所述集群控制模块发起查询请求时获取所述映射关系,并根据所述映射关系以及键值对应的集群槽位,获取Redis服务组的地址。
4.根据权利要求3所述的方法,其特征在于,还包括:
根据冗余节点组中节点的数量,对Redis集群进行缩容或扩容;
根据缩容或扩容后的Redis服务组的数量重新建立集群槽位与Redis服务组之间的映射关系。
5.根据权利要求2所述的方法,其特征在于,Redis服务组的配置原则是同一个服务组内的节点之间的物理位置尽量不同;所述物理位置包括机房位置和/或机架位置;
Redis服务组的节点选取原则为:优先选择位于不同机房的节点,其次选择位于相同机房不同机架的节点;
将所述Redis服务组的冗余节点回收到冗余节点组时的节点选取原则为:选择物理位置与主节点最近的从节点作为冗余节点。
6.根据权利要求1所述的方法,其特征在于,从冗余节点组选择冗余节点补充到所述Redis服务组,具体包括:
当所述Redis服务组中剩余节点数量为1时,从冗余节点组中选择1个节点作为该Redis服务组的从节点;
当Redis服务组中剩余节点数量为0时,从冗余节点组中选择2个节点分别作为该Redis服务组的主节点和从节点,并恢复Redis集群为正常状态。
7.一种Redis集群系统提高可靠性的装置,其特征在于,所述Redis集群系统包括Redis服务组、冗余节点组和集群控制模块,在集群控制模块侧,所述装置包括:
状态采集单元,用于采集所述Redis服务组的状态;
节点分配单元,用于判断所述Redis服务组的节点数量是否减少;若是,从冗余节点组选择冗余节点补充到所述Redis服务组。
8.根据权利要求7所述的装置,其特征在于,还包括:
节点回收单元,用于判断所述Redis服务组的节点数量是否增加;若是,将所述Redis服务组的冗余节点回收到冗余节点组。
9.根据权利要求7所述的装置,其特征在于,所述Redis服务组的数量为2个以上;
所述装置还包括:映射关系建立单元,用于根据Redis服务组的数量建立集群槽位与Redis服务组之间的映射关系;其中,客户端向所述集群控制模块发起查询请求时获取所述映射关系,并根据所述映射关系以及键值对应的集群槽位,获取Redis服务组的地址。
10.根据权利要求9所述的装置,其特征在于,还包括:
集群容量调整单元,用于根据冗余节点组中节点的数量,对Redis集群进行缩容或扩容;以及,根据缩容或扩容后的Redis服务组的数量重新建立集群槽位与Redis服务组之间的映射关系。
11.根据权利要求8所述的装置,其特征在于,Redis服务组的配置原则是同一个服务组内的节点之间的物理位置尽量不同;所述物理位置包括机房位置和/或机架位置;
Redis服务组的节点选取原则为:优先选择位于不同机房的节点,其次选择位于相同机房不同机架的节点;
将所述Redis服务组的冗余节点回收到冗余节点组时的节点选取原则为:选择物理位置与主节点最近的从节点作为冗余节点。
12.一种Redis集群系统,其特征在于,包括冗余节点组、Redis服务组和集群控制模块;所述集群控制模块配置有权利要求7~11任一所述的Redis集群系统提高可靠性的装置。
13.一种Redis集群系统提高可靠性的方法,其特征在于,在通过网络与权利要求12所述的Redis集群系统连接的客户端一侧,所述方法包括:
向集群控制模块发起查询请求,获取集群槽位与Redis服务组之间的映射关系;
根据键值对应的集群槽位,获取Redis服务组的地址,向所述Redis服务组发出查询请求。
14.根据权利要求13所述的方法,其特征在于,还包括:
判断所述客户端与Redis服务组的连接是否成功;
若连接失败,则根据历史记录中保存的集群节点列表中随机选择一个节点,并从该节点获取更新后的集群槽位与Redis服务组之间的映射关系;
若连接成功,则进一步判断查询请求是否被重定向到新节点,若是,则从该重定向的新节点获取更新后的集群槽位与Redis服务组之间的映射关系。
15.一种客户端,其特征在于,所述客户端通过网络与权利要求12所述的Redis集群系统连接,所述客户端包括:
初始配置模块,用于配置所述集群控制模块的地址,并在客户端启动后从所述集群控制模块获取集群槽位与Redis服务组之间的映射关系;
数据访问模块,用于根据操作键值对应的槽位,获取相应的Redis服务组的地址,并向所述Redis服务组发起查询请求。
16.根据权利要求15所述的客户端,其特征在于,还包括:
状态更新模块,用于当数据访问模块与Redis服务组连接失败或查询被重定向到新节点时,更新本地存储的集群槽位与Redis服务组之间的映射关系;其中,当连接失败时,根据历史记录中保存的集群节点列表中随机选择一个节点,并从该节点获取更新后的集群槽位与Redis服务组的映射关系;当查询请求被重定向到新节点时,从该重定向的新节点获取更新后的集群槽位与Redis服务组之间的映射关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610798570.9A CN107800551A (zh) | 2016-08-31 | 2016-08-31 | Redis集群系统及其提高可靠性的方法、客户端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610798570.9A CN107800551A (zh) | 2016-08-31 | 2016-08-31 | Redis集群系统及其提高可靠性的方法、客户端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107800551A true CN107800551A (zh) | 2018-03-13 |
Family
ID=61530526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610798570.9A Pending CN107800551A (zh) | 2016-08-31 | 2016-08-31 | Redis集群系统及其提高可靠性的方法、客户端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107800551A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109274665A (zh) * | 2018-09-13 | 2019-01-25 | 北京奇安信科技有限公司 | Dns威胁情报处理方法及装置 |
CN109325016A (zh) * | 2018-09-12 | 2019-02-12 | 杭州朗和科技有限公司 | 数据迁移方法、装置、介质及电子设备 |
CN109753244A (zh) * | 2018-12-29 | 2019-05-14 | 北京奥鹏远程教育中心有限公司 | 一种Redis集群的应用方法 |
CN109862075A (zh) * | 2018-12-29 | 2019-06-07 | 北京奥鹏远程教育中心有限公司 | 一种Redis服务实例的路由方法 |
CN111459761A (zh) * | 2020-04-01 | 2020-07-28 | 广州虎牙科技有限公司 | 一种Redis配置的方法、装置、存储介质及设备 |
CN113946376A (zh) * | 2021-10-29 | 2022-01-18 | 挂号网(杭州)科技有限公司 | 负载调整方法、装置、电子设备及存储介质 |
CN115002193A (zh) * | 2022-04-27 | 2022-09-02 | 骤雨湾(武汉)技术服务有限公司 | 多路远程服务选取方法、设备、存储介质及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140279902A1 (en) * | 2013-03-12 | 2014-09-18 | Kabushiki Kaisha Toshiba | Database system, computer program product, and data processing method |
CN104182300A (zh) * | 2014-08-19 | 2014-12-03 | 北京京东尚科信息技术有限公司 | 一种集群中虚拟机的备份方法及系统 |
CN104283948A (zh) * | 2014-09-26 | 2015-01-14 | 东软集团股份有限公司 | 服务器集群系统及其负载均衡实现方法 |
CN105159985A (zh) * | 2015-08-31 | 2015-12-16 | 努比亚技术有限公司 | 基于redis集群的数据查询装置及方法 |
-
2016
- 2016-08-31 CN CN201610798570.9A patent/CN107800551A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140279902A1 (en) * | 2013-03-12 | 2014-09-18 | Kabushiki Kaisha Toshiba | Database system, computer program product, and data processing method |
CN104182300A (zh) * | 2014-08-19 | 2014-12-03 | 北京京东尚科信息技术有限公司 | 一种集群中虚拟机的备份方法及系统 |
CN104283948A (zh) * | 2014-09-26 | 2015-01-14 | 东软集团股份有限公司 | 服务器集群系统及其负载均衡实现方法 |
CN105159985A (zh) * | 2015-08-31 | 2015-12-16 | 努比亚技术有限公司 | 基于redis集群的数据查询装置及方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109325016A (zh) * | 2018-09-12 | 2019-02-12 | 杭州朗和科技有限公司 | 数据迁移方法、装置、介质及电子设备 |
CN109274665A (zh) * | 2018-09-13 | 2019-01-25 | 北京奇安信科技有限公司 | Dns威胁情报处理方法及装置 |
CN109753244A (zh) * | 2018-12-29 | 2019-05-14 | 北京奥鹏远程教育中心有限公司 | 一种Redis集群的应用方法 |
CN109862075A (zh) * | 2018-12-29 | 2019-06-07 | 北京奥鹏远程教育中心有限公司 | 一种Redis服务实例的路由方法 |
CN111459761A (zh) * | 2020-04-01 | 2020-07-28 | 广州虎牙科技有限公司 | 一种Redis配置的方法、装置、存储介质及设备 |
CN111459761B (zh) * | 2020-04-01 | 2024-03-01 | 广州虎牙科技有限公司 | 一种Redis配置的方法、装置、存储介质及设备 |
CN113946376A (zh) * | 2021-10-29 | 2022-01-18 | 挂号网(杭州)科技有限公司 | 负载调整方法、装置、电子设备及存储介质 |
CN113946376B (zh) * | 2021-10-29 | 2024-07-26 | 挂号网(杭州)科技有限公司 | 负载调整方法、装置、电子设备及存储介质 |
CN115002193A (zh) * | 2022-04-27 | 2022-09-02 | 骤雨湾(武汉)技术服务有限公司 | 多路远程服务选取方法、设备、存储介质及装置 |
CN115002193B (zh) * | 2022-04-27 | 2024-07-26 | 骤雨湾(武汉)技术服务有限公司 | 多路远程服务选取方法、设备、存储介质及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107800551A (zh) | Redis集群系统及其提高可靠性的方法、客户端 | |
CN106911728B (zh) | 分布式系统中主节点的选取方法和装置 | |
CN113328894B (zh) | 基于cu分离的双机热备的方法及设备 | |
EP1410229B1 (en) | HIGH-AVAILABILITY CLUSTER VIRTUAL SERVER SYSTEM and method | |
CN102549983B (zh) | 分布式数据中心接入交换机 | |
WO2017165792A1 (en) | Method and apparatus for expanding high-availability server cluster | |
US20070230415A1 (en) | Methods and apparatus for cluster management using a common configuration file | |
CN105933391A (zh) | 一种节点扩容方法、装置及系统 | |
CN111723024B (zh) | 数据处理方法、装置、系统、客户端服务器及存储服务器 | |
US20010034853A1 (en) | Load distribution failure recovery system and method | |
WO2015013896A1 (zh) | 一种网络控制方法及装置 | |
US8861488B2 (en) | Distributed client information database of a wireless network | |
WO2018090386A1 (zh) | 一种nf组件异常的处理方法、设备及系统 | |
PH12014502594B1 (en) | Service node switching method and system | |
CN102710438B (zh) | 一种节点管理方法、装置及系统 | |
US11979335B2 (en) | Network controller | |
CN108366087B (zh) | 一种基于分布式文件系统的iscsi服务实现方法和装置 | |
CN114554615A (zh) | 一种业务切换方法、装置及网络设备 | |
CN105790985B (zh) | 数据倒换的方法、第一设备、第二设备及系统 | |
CN111478937B (zh) | 一种负载均衡方法和装置 | |
WO2014029287A1 (zh) | 隧道负荷分担方法及装置 | |
JP4309321B2 (ja) | ネットワークシステムの運用管理方法及びストレージ装置 | |
CN114095342B (zh) | 备份的实现方法及装置 | |
US9015518B1 (en) | Method for hierarchical cluster voting in a cluster spreading more than one site | |
CN114079584A (zh) | 用户端保活的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180313 |
|
WD01 | Invention patent application deemed withdrawn after publication |