CN114172917B - 一种分布式缓存系统及其部署的方法 - Google Patents
一种分布式缓存系统及其部署的方法 Download PDFInfo
- Publication number
- CN114172917B CN114172917B CN202111455882.7A CN202111455882A CN114172917B CN 114172917 B CN114172917 B CN 114172917B CN 202111455882 A CN202111455882 A CN 202111455882A CN 114172917 B CN114172917 B CN 114172917B
- Authority
- CN
- China
- Prior art keywords
- redis
- node group
- redis node
- nodes
- node
- 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.)
- Active
Links
Images
Classifications
-
- 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/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/22—Arrangements for detecting or preventing errors in the information received using redundant apparatus to increase reliability
-
- 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/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0663—Performing the actions predefined by failover planning, e.g. switching to standby network elements
-
- 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/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请提供一种去中心化的分布式缓存系统及其部署的技术方案:部署客户端组件,以及在异地部署的包括相同数量Redis节点的第一Redis节点群和第二Redis节点群,其中,Redis节点不支持RedisCluster集群模式。通过客户端组件进行配置,将第一Redis节点群设置成主Redis节点群,第二Redis节点群设置成备Redis节点群;分别为第一Redis节点群和第二Redis节点群分配应用缓存区,并在应用缓存区中配置每个Redis节点信息以及分配hash区间,其中,为所述第一Redis节点群的每个Redis节点分配的hash区间与为所述第二Redis节点群的对应Redis节点分配的hash区间相同。本申请部署的分布式缓存系统支持在线扩容,可确保数据迁移时原有与新增Redis节点中缓存数据的实时一致性,提升了Redis节点群的容错性能,可支持异地容灾互备。
Description
技术领域
本申请涉及计算机数据缓存技术领域,尤其涉及一种分布式缓存系统及其部署的技术。
背景技术
数据缓存是一种在计算机中得到广泛应用的技术,将一些经常用到的数据存储在缓存设备,可供用户快速访问,当用户需要读写这些数据时,不需要每次都与数据库去做交互,因此可以提高访问效率。
Redis(Remote Dictionary Server,即远程字典服务)是一个key-value(键-值)对缓存系统,遵循BSD许可协议。Redis支持存储的value类型包括string(字符串)、list(链表)、set(集合)、zset(sorted set--有序集合)和hash(哈希类型),数据都是缓存在内存中,以保证数据访问效率。Redis普遍用于目前主流的分布式架构系统中。为了扩大Redis的缓存存储空间,提升可用性,通常在分布式架构系统中采用多Redis节点的RedisCluster集群方案。
Redis Cluster集群方案是Redis官方发布的一种Redis集群方案,采用无中心结构,其中的每个Redis节点保存不同数据和整个集群状态,每个Redis节点都需要和其他Redis节点连接。当对Redis Cluster集群作在线扩容和数据迁移时,数据从原有的Redis节点迁移至新增Redis节点,是先从原有Redis节点转储(dump)出来,再存储(restore)至新增Redis节点,存在时间差,因此,RedisCluster集群在线扩容后无法保证原有Redis节点与新增Redis节点中数据的实时一致性。
发明内容
本申请的目的是提供一种分布式缓存系统及其部署的技术方案,用以解决现有RedisCulster集群在线扩容时原有Redis节点与新增Redis节点中数据无法确保实时一致的技术问题。
根据本申请的一个方面,提供了一种分布式缓存系统部署的方法,其中,所述方法包括:
分别在异地部署第一Redis节点群和第二Redis节点群,其中,所述第一Redis节点群和所述第二Redis节点群包括相同数量的若干个Redis节点,其中,节点不支持Cluster集群模式;
部署客户端组件,通过客户端组件进行配置设置,并加载所述配置以确定所述第一Redis节点群和/或所述第二Redis节点群中可用的Redis节点,其中,所述配置设置包括:
将所述第一Redis节点群设置成主Redis节点群,以及将所述第二Redis节点群对应设置成备Redis节点群;
分别为所述第一Redis节点群和所述第二Redis节点群分配应用缓存区,并基于所述应用缓存区,配置每个Redis节点信息以及分配hash区间,其中,为所述第一Redis节点群的每个Redis节点分配的hash区间与为所述第二Redis节点群的对应Redis节点分配的hash区间相同。
可选地,其中,所述配置设置还包括:
设置预设参数的参数值,其中,所述预设参数包括:
第一Redis节点群与第二Redis节点群之间的切换模式;
第一Redis节点群与第二Redis节点群之间的切换最大等待时间;
切换到第二Redis节点群中的节点。
可选地,其中,所述一种分布式缓存系统部署的方法还包括:
通过所述客户端组件解析接收到的Redis命令,提供缓存服务。
可选地,其中,所述一种分布式缓存系统部署的方法还包括:
通过所述客户端组件对所述第一Redis节点群和/或所述第二Redis节点群的Redis节点的可用状态进行监听,当监听到Redis节点的可用状态是异常时,根据设置的参数值进行切换,以保证持续提供缓存服务。
可选地,其中,若所述第一Redis节点群和所述第二Redis节点群的每个Redis节点配置一个主节点实例和一个从节点实例,所述Redis节点的可用状态是异常包括:
所述Redis节点的主节点实例和从节点实例的可用状态都是异常。
可选地,其中,所述预设参数还包括:
异常Redis节点的可用状态恢复正常后的处理方式。
可选地,其中,当所述Redis命令是缓存数据更新命令时,所述提供缓存服务包括:
将缓存数据同时更新至所述第一Redis节点群和所述第二Redis节点群中hash区间相同的Redis节点。
根据本申请的另一方面,还提供了一种分布式缓存系统系统,其中,所述系统包括:
第一Redis节点群,用于提供主缓存服务,包括若干个Redis节点,其中,节点不支持Cluster集群模式;
第二Redis节点群,用于提供备用缓存服务,与所述第一Redis节点群异地部署,包括与所述第一Redis节点群相同数量的若干个Redis节点,其中,节点不支持Cluster集群模式;
客户端组件,用于进行配置设置,并加载所述配置以确定所述第一Redis节点群和/或所述第二Redis节点群中可用的Redis节点,其中,所述配置设置包括:
将所述第一Redis节点群设置成主Redis节点群,以及将所述第二Redis节点群对应设置成备Redis节点群;
分别为所述第一Redis节点群和所述第二Redis节点群分配应用缓存区,并基于所述应用缓存区,配置每个Redis节点信息以及分配hash区间,其中,为所述第一Redis节点群的每个Redis节点分配的hash区间与为所述第二Redis节点群的对应Redis节点分配的hash区间相同。
可选地,其中,所述客户端组件还用于:
对所述第一Redis节点群和/或所述第二Redis节点群的Redis节点的可用状态进行监听,当监听到Redis节点的可用状态是异常时,根据设置的参数值进行切换,以保证持续提供缓存服务。
与现有技术相比,本申请提供一种去中心化的分布式缓存系统及其部署的技术方案,该分布式缓存系统包括客户端组件,以及在异地部署的包括相同数量Redis节点的第一Redis节点群和第二Redis节点群,其中,Redis节点不支持RedisCluster集群模式。通过客户端组件进行配置,将第一Redis节点群设置成主Redis节点群,第二Redis节点群设置成对应的备Redis节点群;分别为第一Redis节点群和第二Redis节点群分配应用缓存区,并在应用缓存区中配置每个Redis节点信息以及分配hash区间,其中,为所述第一Redis节点群的每个Redis节点分配的hash区间与为所述第二Redis节点群的对应Redis节点分配的hash区间相同。还通过客户端组件配置第一Redis节点群与第二Redis节点群之间进行切换的参数,实时监听各Redis节点的可用状态,在Redis节点异常不可用时可支持实时切换到可用的备用Redis节点,持续提供缓存服务。
带来的技术效果:
本申请部署的分布式缓存系统支持在线扩容,可确保在线扩容及数据迁移时原有Redis节点与新增Redis节点中缓存数据的实时一致性;在缓存数据更新时,通过客户端组件可同时将缓存数据更新至第一Redis节点群中的主Redis节点和第二Redis节点群中hash区间相同的备Redis节点,实现主备Redis节点保存的缓存数据实时一致。还提升了Redis节点群的可用性及容错性能,可支持异地容灾互备。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的一种分布式缓存系统部署的方法流程图;
图2示出本申请另一个方面的一种分布式缓存系统示意图;
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本发明作进一步详细描述。
在本申请一个典型的配置中,设备、装置、集群、系统和/或相关可信方均可能包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为更进一步阐述本申请所采取的技术手段及取得的效果,下面结合附图及优选实施例,对本申请的技术方案,进行清楚和完整的描述。
图1示出本申请一个方面的一种分布式缓存系统部署的方法流程图,其中,一个实施例的方法包括:
S101分别在异地部署第一Redis节点群和第二Redis节点群,其中,该第一Redis节点群和第二Redis节点群包括相同数量的若干个Redis节点,其中,节点不支持Cluster集群模式;
S102部署客户端组件,通过客户端组件进行配置设置,并加载该配置以确定该第一Redis节点群和/或第二Redis节点群中可用的Redis节点,其中,该配置设置包括:
将该第一Redis节点群设置成主Redis节点群,以及将该第二Redis节点群对应设置成备Redis节点群;
分别为该第一Redis节点群和第二Redis节点群分配应用缓存区,并基于分配的应用缓存区,配置每个Redis节点信息以及分配hash区间,其中,为该第一Redis节点群的每个Redis节点分配的hash区间与为该第二Redis节点群的对应Redis节点分配的hash区间相同。
在本申请中,所述方法实施例中的第一Redis节点群和第二Redis节点群分别安装在存储设备中,其中,所述存储设备可以是用于缓存数据的计算机设备和/或云,所述客户端组件安装在计算机设备中。其中,所述计算机设备包括但不限于个人计算机、笔记本电脑、工业计算机、网络主机、单个网络服务器、多个网络服务器集;所述云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。
在此,所述计算机设备和/或云仅为举例,其他现有的或者今后可能出现的设备和/或资源共享平台如适用于本申请也应包含在本申请的保护范围内,在此,以引用的方式包含于此。
在所述方法实施例的步骤S101中,分别在异地部署第一Redis节点群和第二Redis节点群,其中,该第一Redis节点群和第二Redis节点群包括相同数量的若干个Redis节点,其中,节点不支持Cluster集群模式。
其中,第一Redis节点群和第二Redis节点群中的每个Redis节点配置至少一个节点实例。
比如该方法的一个可选实施例中,在IDC A(A地的数据中心机房)部署第一Redis节点群IDC_A,包括N个Redis节点(A1,…,AN),各节点不支持Redis Cluster集群模式;在IDC B(B地的数据中心机房)部署第二Redis节点群IDC_B,也包括N个Redis节点(B1,…,BN),各节点不支持Redis Cluster集群模式。
现有技术中,Redis可支持持久化功能,包括AOF(Append Only File,仅附加文件)方式和RDB(Redis DataBase,Redis数据库)方式。若Redis开启AOF持久化功能,可将Redis执行的每次Redis命令记录到单独的日志文件中,当Redis重启时再次执行日志文件中的命令来恢复数据;若Redis开启RDB持久化功能,可根据设定周期,定时将Redis缓存数据做快照保存到磁盘,根据需要从磁盘读取快照来恢复数据。但Redis集群开启持久化会影响缓存服务性能。因此,本方法实施例中,该第一Redis节点群和该第二Redis节点群中的每个Redis节点也不开启持久化功能,以保持Redis缓存服务性能最大化。
继续在该方法实施例中,在步骤S102中,部署客户端组件,通过客户端组件进行配置设置,并加载所述配置以确定该第一Redis节点群和/或第二Redis节点群中可用的Redis节点,其中,该配置设置包括:
将该第一Redis节点群设置成主Redis节点群,以及将该第二Redis节点群对应设置成备Redis节点群;
分别为该第一Redis节点群和第二Redis节点群分配应用缓存区,并基于该应用缓存区,配置每个Redis节点信息以及分配hash区间,其中,为该第一Redis节点群的每个Redis节点分配的hash区间与为该第二Redis节点群的对应Redis节点分配的hash区间相同。
其中,客户端组件可以部署在与第一Redis节点群同一个机房,也可以部署在与第二Redis节点群同一个机房,或者部署在可通过网络实时与第一Redis节点群和第二Redis节点群通信的其它地方。可选地,客户端组件部署在可通过内部局域网或专线网络与第一Redis节点群或第二Redis节点群通信的地方。
其中,通过客户端组件在配置文件中设置包括:
将第一Redis节点群设置成主Redis节点群,以及将第二Redis节点群对应设置成备Redis节点群。其中,第二Redis节点群的每个Redis节点都对应第一Redis节点群中的一个Redis节点。
分别为该第一Redis节点群和第二Redis节点群分配应用缓存区,并基于该应用缓存区,配置每个Redis节点信息以及分配hash区间,其中,为该第一Redis节点群的每个Redis节点分配的hash区间与为该第二Redis节点群的对应Redis节点分配的hash区间相同。其中,为每个要访问分布式缓存系统的应用程序都要分别分配应用缓存区及分配hash区间。
其中,为了确保能正确访问,Redis节点信息至少包括:节点名称、IP地址、端口号,其中,第二Redis节点群的每个Redis节点的节点名称与其第一Redis节点群中的对应Redis节点的名称可以相同,也可以不同,为了便于维护,可选地,第二Redis节点群的每个Redis节点的节点名称与其第一Redis节点群中的对应Redis节点的名称相同。为了增强访问的安全性,要配置的Redis节点信息还应包括授权信息。
同样地,为了确保缓存可用性,还需要为每个Redis节点分配hash区间,以便应用程序能正常访问分布式缓存系统,其中,对于每个应用程序,为第一Redis节点群的每个Redis节点分配的hash区间与为第二Redis节点群的对应Redis节点分配的hash区间相同。
Redis是通过配置的与Redis节点对应的节点实例去执行收到的Redis命令的。为了提升Redis缓存服务的容错性能,本申请中,第一Redis节点群和第二Redis节点群的每个Redis节点可按照哨兵机制配置一个主节点实例和一个从节点实例,当Redis节点的主节点实例异常时,从节点实例可继续提供缓存服务。根据应用场景需要,第一Redis节点群和第二Redis节点群的每个Redis节点还可以按照哨兵机制配置一个主节点实例和若干个从节点实例,当Redis节点的主节点实例和部分从节点异常时,其它正常可用的从节点实例依次继续提供缓存服务。只有当Redis节点的主节点实例和所有从节点实例都异常时,该Redis节点的可用状态才异常。
如上述可选实施例中,假如N为2,即第一Redis节点群和第二Redis节点群都包括2个Redis节点,每个Redis节点按照哨兵机制配置一个主节点实例和一个从节点实例,Redis为应用程序Cache.PRD分配的hash区间为hashslot0~99,则一个基于JSON(JavaScriptObject Notation,JavaScript对象简谱)编写的配置文件中的相关内容可以参考如下:
在完成第一Redis节点群、第二Redis节点群及客户端组件的部署,并根据应用场景实际需求完成每个访问分布式缓存系统的应用程序在配置文件中的配置设置后,通过客户端组件加载配置,以确定第一Redis节点群和/或第二Redis节点群中可用的Redis节点。
若本申请中的分布式缓存系统要作在线扩容和数据迁移,在该方法实施例中,在拟增加Redis节点部署到位后,可直接在配置文件的相关应用程序代码段中配置新增Redis节点的节点信息,为新增Redis节点分配hash区间。为了获得更大的缓存空间,以及为了更好的负载均衡性能,其中,对于第一Redis节点群和第二Redis节点群,可成倍扩容Redis节点。
上述可选实施例中,应用程序Cache.PRD可访问的第一Redis节点群和第二Redis节点群中分别包含2个节点group1和group2,若在线扩容,分别在Cache.PRD可访问的第一Redis节点群和第二Redis节点群中增加2个Redis节点group3和group4,将Redis节点group1和group2中的部分数据迁移到新增Redis节点,则一个基于JSON(JavaScriptObject Notation,JavaScript对象简谱)编写的配置文件中的相关内容可以参考如下:
在配置过程中,原来的分布式缓存系统正常工作,完成配置后,通过客户端组件加载更新后的配置文件,新增Redis节点即可直接用于缓存数据,无需各Redis节点重新建立连接、同步数据。
可选地,其中,该实施例的一种分布式缓存系统部署的方法还包括:
通过该客户端组件解析接收到的Redis命令,提供缓存服务。
该实施例中,在完成分布式缓存系统的部署后,当上层应用程序访问Redis,通过该客户端组件解析接收到的Redis命令,进行hash计算获得hash值,根据hash值将Redis命令同时发送至包含该hash值的第一Redis节点群和第二Redis节点群中对应的Redis节点,通过节点实例执行Redis命令,提供数据缓存服务。
上述可选实施例中,假如客户端组件解析接收到的上层应用程序Cache.PRD发出的Redis命令后获取的hash值是10,该hash值在分配给第一Redis节点群和第二Redis节点群中的Redis节点group1的hash区间中,则客户端组件会将该Redis命令同时发送至第一Redis节点群和第二Redis节点群中的Redis节点group1,通过group1的节点实例执行Redis命令,提供数据缓存服务。
可选地,在步骤S102中,预设参数包括:
第一Redis节点群与第二Redis节点群之间的切换模式;
第一Redis节点群与第二Redis节点群之间的切换最大等待时间;
切换到第二Redis节点群中的节点。
其中,可根据应用场景的需要在配置文件中设置第一Redis节点群与第二Redis节点群之间的切换模式,以实现异地互备容灾。该参数值可设置成:异常切换但不同步数据、异常切换且同步数据、同步数据且异常不切换。可根据应用场景的需要在配置文件中设置第一Redis节点群与第二Redis节点群之间的切换最大等待时间,该参数值通常为数字,单位为秒。可根据应用场景的需要在配置文件中设置当第一Redis节点群中的Redis节点异常后,切换到第二Redis节点群中的Redis节点信息,该参数值可设置为第二Redis节点群中具体的节点名称,也可以为空,其中,该参数值若设置为空,则当第一Redis节点群中的单Redis节点异常不可用时,则切换到第二Redis节点群的对应Redis节点,上述可选实施例中,若该参数设置为空,则当第一Redis节点群中Redis节点group1异常不可用时,自动切换到第二Redis节点群中对应的Redis节点group1,由第二Redis节点群中的group1提供缓存服务;当第一Redis节点群中Redis节点group2异常不可用时,自动切换到第二Redis节点群中对应的Redis节点group2,由第二Redis节点群中的group2提供缓存服务。
该参数值若设置为具体的Redis节点名称,则当第一Redis节点群中具体的Redis节点异常不可用时,自动切换到第二Redis节点群中对应Redis节点来提供缓存服务;当第一Redis节点群中其它未设置的Redis节点异常不可用时,不会自动切换。上述可选实施例中,若该参数设置为group1,则当第一Redis节点群中Redis节点group1异常不可用时,切换到第二Redis节点群中的group1提供缓存服务,当第一Redis节点群中Redis节点group2异常不可用时,不会自动切换。
上述可选实施例的一个基于JSON编写的配置文件中的相关内容可以参考如下:
其中,当第一Redis节点群与第二Redis节点群之间的切换模式设置成:异常切换且同步数据或同步数据且异常不切换,第一Redis节点群和第二Redis节点群之间还会保持心跳同步,以进一步确保第一Redis节点群中的Redis节点和第二Redis节点群中对应的Redis节点之间的数据同步。
其中,当第一Redis节点群与第二Redis节点群之间的切换模式设置成:异常切换且同步数据或异常切换且不同步数据,若上层应用程序要从Redis中读取缓存数据,则当第一Redis节点群中对应的Redis节点的可用状态是正常时,由第一Redis节点群中对应的Redis节点提供缓存数据,当第一Redis节点群中对应的Redis节点的可用状态是异常而第二Redis节点群中对应的Redis节点的可用状态是正常时,由第二Redis节点群中对应的Redis节点提供缓存数据;若上层应用程序要向Redis中写入数据,当第一Redis节点群和第二Redis节点群中对应的Redis节点的可用状态都是正常时,同时向第一Redis节点群和第二Redis节点群中对应的Redis节点写入数据。
可选地,其中,该实施例的一种分布式缓存系统部署的方法还包括:
通过客户端组件对该第一Redis节点群和/或该第二Redis节点群的Redis节点的可用状态进行监听,当监听到Redis节点的可用状态是异常时,根据设置的参数值进行切换,以保证持续提供缓存服务,提升了容错性,可实现异地互备容灾。
可选地,若第一Redis节点群和所述第二Redis节点群的每个Redis节点配置一个主节点实例和一个从节点实例,其中,所述Redis节点的可用状态是异常包括:
所述Redis节点的主节点实例和从节点实例的可用状态都是异常。
其中,Redis节点的可用状态与其配置的节点实例的可用状态相关,一个Redis节点只有在其配置的对应全部节点实例的可用状态都异常时,该Redis节点的可用状态才是异常。
上述可选实施例的未扩容分布式缓存系统中,客户端组件对第一Redis节点群和/或第二Redis节点群的Redis节点group1、group2共四个Redis节点的可用状态进行监听,若客户端组件监听到第一Redis节点群中的Redis节点group1的主从节点实例的可用状态都异常,则确定第一Redis节点群中的Redis节点group1的可用状态异常,参照配置文件中配置的参数值,若持续3秒第一Redis节点群中的Redis节点group1的可用状态未恢复正常,则切换至第二Redis节点群中的Redis节点group1,以保障持续提供缓存服务。
可选地,其中,步骤S102中,预设参数还可以包括:
异常Redis节点的可用状态恢复正常后的处理方式。
上述方法实施例的未扩容分布式缓存系统中,还可以通过客户端组件在配置文件中对异常Redis节点的可用状态恢复正常后的处理方式进行设置。
上述可选实施例的一个基于JSON编写的配置文件中的相关内容可以参考如下:
其中,若该参数设置成不自动切回,则当第一Redis节点群的Redis节点可用状态恢复后,不自动切换回第一Redis节点群的Redis节点,若提供缓存服务的第二Redis节点群对应的Redis节点的可用状态变成异常,则无法继续提供缓存服务。
可选地,其中,当客户端组件接收到的Redis命令是缓存数据更新命令时,所述提供缓存服务包括:
将缓存数据同时更新至所述第一Redis节点群和所述第二Redis节点群中hash区间相同的Redis节点。
上述可选实施例中,假如上层应用程序Cache.PRD要存储数据key,则在Cache.PRD发出Redis命令后,客户端组件解析接收到的Redis命令,对其中数据key进行hash处理,获得hash值(即value值),若获取的hash值是10,而该hash值位于分配给第一Redis节点群和第二Redis节点群中的Redis节点group1的hash区间中,若第一Redis节点群和第二Redis节点群中的Redis节点group1的可用状态是正常时,客户端组件会将该Redis命令同时发送至第一Redis节点群和第二Redis节点群中的Redis节点group1,通过group1的节点实例执行该Redis命令,以将数据a同时存储至第一Redis节点群和第二Redis节点群中的Redis节点group1。
图2示出本申请另一方面的一种分布式缓存系统,其特征在于,所述系统200包括:
第一Redis节点群201,用于提供主缓存服务,包括若干个Redis节点,其中,节点不支持Cluster集群模式;
第二Redis节点群202,用于提供备用缓存服务,与所述第一Redis节点群异地部署,包括与所述第一Redis节点群相同数量的若干个Redis节点,其中,节点不支持Cluster集群模式;
客户端组件203,用于进行配置设置,并加载所述配置以确定所述第一Redis节点群和/或所述第二Redis节点群中可用的Redis节点,其中,所述配置设置包括:
将所述第一Redis节点群设置成主Redis节点群,以及将所述第二Redis节点群对应设置成备Redis节点群;
分别为所述第一Redis节点群和所述第二Redis节点群分配应用缓存区,并基于所述应用缓存区,配置每个Redis节点信息以及分配hash区间,其中,为所述第一Redis节点群的每个Redis节点分配的hash区间与为所述第二Redis节点群的对应Redis节点分配的hash区间相同。
在系统200中,第一Redis节点群201、第二Redis节点群202和客户端组件203之间通过网络204实现实时交互。系统200用于实现前述实施例的方法。
其中,第一Redis节点群201和第二Redis节点群202中的各Redis节点可配置有主节点实例和若干个从节点实例,以提升Redis节点的容错性能,其中,主从节点实例基于哨兵机制配置。第一Redis节点群201和第二Redis节点群202中的各Redis节点相互独立,通过客户端组件203进行配置设置,将第一Redis节点群设置成主Redis节点群,第二Redis节点群设置成备Redis节点群,为访问分布式缓存系统的每个应用程序分配应用缓存区以及hash区间,以维护第一Redis节点群201和第二Redis节点群202中各Redis节点的可用性,以及明确第一Redis节点群201中各Redis节点和第二Redis节点群202中各Redis节点的对应关系。通过客户端组件203解析上层应用程序访问的分布式缓存系统的Redis命令,对Redis命令中的数据key进行hash处理,获得hash值(即value值),根据配置文件中分配的hash区间信息,将Redis命令同时发送至第一Redis节点群201和第二Redis节点群202中包含该hash值的相应Redis节点,由相应Redis节点的节点实例执行,以提供数据缓存服务。系统200可支持在线扩容及数据迁移时原有Redis节点与新增Redis节点间缓存数据的实时一致性。
可选地,其中,客户端组件203还用于:
对该第一Redis节点群201和/或该第二Redis节点群202的Redis节点的可用状态进行监听,当监听到Redis节点的可用状态是异常时,根据设置的参数值进行切换,以保证持续提供缓存服务。系统200还提升了缓存数据的容错性能,并可支持异地互备容灾。
根据本申请的又一方面,还提供了一种计算机可读介质,所述计算机可读介质存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现前述方法。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机、缓存计算机和/或任何其他类似硬件设备来实现。在一个实施例中,本申请中涉及的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个设备,该设备包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该设备运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件和/或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (8)
1.一种分布式缓存系统部署的方法,其特征在于,所述方法包括:
分别在异地部署第一Redis节点群和第二Redis节点群,其中,所述第一Redis节点群和所述第二Redis节点群包括相同数量的若干个Redis节点,其中,节点不支持Cluster集群模式;
部署客户端组件,通过客户端组件进行配置设置,并加载所述配置以确定所述第一Redis节点群和/或所述第二Redis节点群中可用的Redis节点,其中,所述配置设置包括:
将所述第一Redis节点群设置成主Redis节点群,以及将所述第二Redis节点群对应设置成备Redis节点群;
分别为所述第一Redis节点群和所述第二Redis节点群分配应用缓存区,并基于所述应用缓存区,配置每个Redis节点信息以及分配hash区间,其中,为所述第一Redis节点群的每个Redis节点分配的hash区间与为所述第二Redis节点群的对应Redis节点分配的hash区间相同;
通过所述客户端组件解析接收到的Redis命令,当所述Redis命令是缓存数据更新命令时,将缓存数据同时更新至所述第一Redis节点群和所述第二Redis节点群中hash区间相同的Redis节点。
2.根据权利要求1所述的方法,其特征在于,所述配置设置还包括:
设置预设参数的参数值,其中,所述预设参数包括:
第一Redis节点群与第二Redis节点群之间的切换模式;
第一Redis节点群与第二Redis节点群之间的切换最大等待时间;
切换到第二Redis节点群中的节点。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
通过所述客户端组件对所述第一Redis节点群和/或所述第二Redis节点群的Redis节点的可用状态进行监听,当监听到Redis节点的可用状态是异常时,根据设置的参数值进行切换,以保证持续提供缓存服务。
4.根据权利要求3所述的方法,其特征在于,若所述第一Redis节点群和所述第二Redis节点群的每个Redis节点配置一个主节点实例和一个从节点实例,其中,所述Redis节点的可用状态是异常包括:
所述Redis节点的主节点实例和从节点实例的可用状态都是异常。
5.根据权利要求3或4所述的方法,其特征在于,所述预设参数还包括:
异常Redis节点的可用状态恢复正常后的处理方式。
6.一种分布式缓存系统,其特征在于,所述系统包括:
第一Redis节点群,用于提供主缓存服务,包括若干个Redis节点,其中,节点不支持Cluster集群模式;
第二Redis节点群,用于提供备用缓存服务,与所述第一Redis节点群异地部署,包括与所述第一Redis节点群相同数量的若干个Redis节点,其中,节点不支持Cluster集群模式;
客户端组件,用于进行配置设置,并加载所述配置以确定所述第一Redis节点群和/或所述第二Redis节点群中可用的Redis节点,其中,所述配置设置包括:
将所述第一Redis节点群设置成主Redis节点群,以及将所述第二Redis节点群对应设置成备Redis节点群;
分别为所述第一Redis节点群和所述第二Redis节点群分配应用缓存区,并基于所述应用缓存区,配置每个Redis节点信息以及分配hash区间,其中,为所述第一Redis节点群的每个Redis节点分配的hash区间与为所述第二Redis节点群的对应Redis节点分配的hash区间相同;
通过所述客户端组件解析接收到的Redis命令,当所述Redis命令是缓存数据更新命令时,将缓存数据同时更新至所述第一Redis节点群和所述第二Redis节点群中hash区间相同的Redis节点。
7.根据权利要求6所述的系统,其特征在于,所述客户端组件还用于:
对所述第一Redis节点群和/或所述第二Redis节点群的Redis节点的可用状态进行监听,当监听到Redis节点的可用状态是异常时,根据设置的参数值进行切换,以保证持续提供缓存服务。
8.一种计算机可读介质,其特征在于,
其上存储有计算机可读指令,所述计算机可读指令被处理器执行以实现如权利要求1至5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111455882.7A CN114172917B (zh) | 2021-12-01 | 2021-12-01 | 一种分布式缓存系统及其部署的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111455882.7A CN114172917B (zh) | 2021-12-01 | 2021-12-01 | 一种分布式缓存系统及其部署的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114172917A CN114172917A (zh) | 2022-03-11 |
CN114172917B true CN114172917B (zh) | 2023-06-09 |
Family
ID=80482379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111455882.7A Active CN114172917B (zh) | 2021-12-01 | 2021-12-01 | 一种分布式缓存系统及其部署的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114172917B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017122922A1 (ko) * | 2016-01-11 | 2017-07-20 | 충북대학교 산학협력단 | 분산 인-메모리 환경에서 데이터 복제 및 이주를 이용한 부하 분산 시스템 |
CN107493327A (zh) * | 2017-08-11 | 2017-12-19 | 杭州顺网科技股份有限公司 | 分布式缓存管理方法、系统及数据管理系统 |
CN108183961A (zh) * | 2018-01-04 | 2018-06-19 | 中电福富信息科技有限公司 | 一种基于Redis的分布式缓存方法 |
CN109714430A (zh) * | 2019-01-16 | 2019-05-03 | 深圳壹账通智能科技有限公司 | 分布式缓存方法、装置、计算机系统及存储介质 |
CN109783564A (zh) * | 2019-01-28 | 2019-05-21 | 上海雷腾软件股份有限公司 | 支持多节点的分布式缓存方法及设备 |
CN113190620A (zh) * | 2021-04-30 | 2021-07-30 | 康键信息技术(深圳)有限公司 | Redis集群之间数据的同步方法、装置、设备及存储介质 |
-
2021
- 2021-12-01 CN CN202111455882.7A patent/CN114172917B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017122922A1 (ko) * | 2016-01-11 | 2017-07-20 | 충북대학교 산학협력단 | 분산 인-메모리 환경에서 데이터 복제 및 이주를 이용한 부하 분산 시스템 |
CN107493327A (zh) * | 2017-08-11 | 2017-12-19 | 杭州顺网科技股份有限公司 | 分布式缓存管理方法、系统及数据管理系统 |
CN108183961A (zh) * | 2018-01-04 | 2018-06-19 | 中电福富信息科技有限公司 | 一种基于Redis的分布式缓存方法 |
CN109714430A (zh) * | 2019-01-16 | 2019-05-03 | 深圳壹账通智能科技有限公司 | 分布式缓存方法、装置、计算机系统及存储介质 |
CN109783564A (zh) * | 2019-01-28 | 2019-05-21 | 上海雷腾软件股份有限公司 | 支持多节点的分布式缓存方法及设备 |
CN113190620A (zh) * | 2021-04-30 | 2021-07-30 | 康键信息技术(深圳)有限公司 | Redis集群之间数据的同步方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114172917A (zh) | 2022-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11163479B2 (en) | Replicated state cluster with standby node state assessment during leadership transition | |
JP6607783B2 (ja) | 分散キャッシュクラスタ管理 | |
US9304815B1 (en) | Dynamic replica failure detection and healing | |
US7610582B2 (en) | Managing a computer system with blades | |
US7668876B1 (en) | Snapshot-based replication infrastructure for efficient logging with minimal performance effect | |
US20170123939A1 (en) | Data management agent for selective storage re-caching | |
US9678680B1 (en) | Forming a protection domain in a storage architecture | |
US9262323B1 (en) | Replication in distributed caching cluster | |
WO2020131330A1 (en) | Cross cluster replication | |
CN109933312B (zh) | 一种有效降低容器化关系型数据库i/o消耗的方法 | |
CN113032085A (zh) | 云操作系统的管理方法、装置、服务器、管理系统及介质 | |
US10838977B2 (en) | Key-value replication with consensus protocol | |
JP2014044553A (ja) | プログラム、情報処理装置および情報処理システム | |
US9148430B2 (en) | Method of managing usage rights in a share group of servers | |
CN111147274B (zh) | 为集群解决方案创建高度可用的仲裁集的系统和方法 | |
CN107943615B (zh) | 基于分布式集群的数据处理方法与系统 | |
CN116389233B (zh) | 容器云管理平台主备切换系统、方法、装置和计算机设备 | |
CN114172917B (zh) | 一种分布式缓存系统及其部署的方法 | |
CN113157392B (zh) | 镜像仓库高可用方法及设备 | |
CN106790521B (zh) | 采用基于ftp的节点设备进行分布式组网的系统及方法 | |
US10929168B2 (en) | Enhanced data storage and versioning of virtual nodes in a data processing environment | |
CN112214176B (zh) | 一种面向san云盘制备的方法与设备 | |
EP1489498A1 (en) | Managing a computer system with blades | |
CN115426251B (zh) | 一种云主机的容灾方法、装置及介质 | |
US20240004712A1 (en) | Fencing off cluster services based on shared storage access keys |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |