CN113965582B - 一种模式转换方法和系统,及存储介质 - Google Patents
一种模式转换方法和系统,及存储介质 Download PDFInfo
- Publication number
- CN113965582B CN113965582B CN202010700309.7A CN202010700309A CN113965582B CN 113965582 B CN113965582 B CN 113965582B CN 202010700309 A CN202010700309 A CN 202010700309A CN 113965582 B CN113965582 B CN 113965582B
- Authority
- CN
- China
- Prior art keywords
- mode
- redis
- target
- instance
- current
- 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
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 179
- 238000000034 method Methods 0.000 title claims abstract description 82
- 230000008569 process Effects 0.000 claims abstract description 22
- 238000012545 processing Methods 0.000 claims description 47
- 230000015654 memory Effects 0.000 claims description 43
- 238000012544 monitoring process Methods 0.000 claims description 33
- 238000004458 analytical method Methods 0.000 claims description 16
- 230000002159 abnormal effect Effects 0.000 claims description 9
- 238000005192 partition Methods 0.000 claims description 8
- 238000011084 recovery Methods 0.000 claims description 4
- 230000007704 transition Effects 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 23
- 238000012423 maintenance Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 238000007726 management method Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 238000013508 migration Methods 0.000 description 7
- 230000005012 migration Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- KLDZYURQCUYZBL-UHFFFAOYSA-N 2-[3-[(2-hydroxyphenyl)methylideneamino]propyliminomethyl]phenol Chemical compound OC1=CC=CC=C1C=NCCCN=CC1=CC=CC=C1O KLDZYURQCUYZBL-UHFFFAOYSA-N 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 201000001098 delayed sleep phase syndrome Diseases 0.000 description 1
- 208000033921 delayed sleep phase type circadian rhythm sleep disease Diseases 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种模式转换方法和系统,及存储介质,所述模式转换方法包括:在Kubernetes集群中运行当前Redis模式时,接收转换指令;其中,转换指令用于指示从当前Redis模式转换至目标Redis模式;根据当前Redis模式和目标Redis模式,建立目标Redis模式对应的目标实例;将当前Redis模式中的数据存储至目标实例,并在Kubernetes集群中运行目标Redis模式。从而,解决了Redis模式转换过程中存在的耗时长、风险高的问题,降低了Redis服务的宕机时间,大大提高了Redis服务的高可用性以及数据安全性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种模式转换方法和系统,及存储介质。
背景技术
随着云计算的发展,中间件产品上云逐渐成为一种趋势。目前,在公有云的场景下,为了节省开支,可以在订购一个Redis单机实例之后进行模式转换处理,获得其他Redis模式,从而实现不同Redis部署模式的需求。由于Redis大部分部署在物理机或者虚拟机环境中,如果用户需要变更Redis的部署模式,无可避免的要通过维护人员进行运维操作,比如配置主节点的地址以及密码等信息,配置主从模式、集群模式等。
然而,这样的模式转换方式常常会存在数据丢失或数据错误的问题,且耗时较长,转换效率低,使得Redis服务长时间宕机,导致用户无法正常访问Redis服务。
发明内容
本申请实施例提供了一种模式转换方法和系统,及存储介质,解决了Redis模式转换过程中存在的耗时长、风险高的问题,降低了Redis服务的宕机时间,大大提高了Redis服务的高可用性以及数据安全性。
本申请实施例的技术方案是这样实现的:
第一方面,本申请实施例提供了一种模式转换方法,所述方法包括:
在Kubernetes集群中运行当前Redis模式时,接收转换指令;其中,所述转换指令用于指示从所述当前Redis模式转换至目标Redis模式;
根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例;
将所述当前Redis模式中的数据存储至所述目标实例,并在所述Kubernetes集群中运行所述目标Redis模式。
第二方面,本申请实施例提供了一种模式转换系统,所述模式转换系统包括:接收单元,建立单元,存储单元以及运行单元,
所述接收单元,用于在Kubernetes集群中运行当前Redis模式时,接收转换指令;其中,所述转换指令用于指示从所述当前Redis模式转换至目标Redis模式;
所述建立单元,用于根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例;
所述存储单元,用于将所述当前Redis模式中的数据存储至所述目标实例;
所述运行单元,用于在所述Kubernetes集群中运行所述目标Redis模式。
第三方面,本申请实施例提供了一种模式转换系统,所述模式转换系统包括处理器、存储有所述处理器可执行指令的存储器,当所述指令被所述处理器执行时,实现如上所述的模式转换方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有程序,应用于模式转换系统中,所述程序被处理器执行时,实现如上所述的模式转换方法。
本申请实施例提供了一种模式转换方法和系统,及存储介质,模式转换系统在Kubernetes集群中运行当前Redis模式时,接收转换指令;其中,转换指令用于指示从当前Redis模式转换至目标Redis模式;根据当前Redis模式和目标Redis模式,建立目标Redis模式对应的目标实例;将当前Redis模式中的数据存储至目标实例,并在Kubernetes集群中运行目标Redis模式。也就是说,在本申请的实施例中,模式转换系统可以利用Kubernetes的弹性扩展以及高可用的特性,在Kubernetes集群中自动将运行当前Redis模式转换为运行目标Redis模式,解决了Redis模式转换过程中存在的耗时长、风险高的问题,降低了Redis服务的宕机时间,大大提高了Redis服务的高可用性以及数据安全性。
附图说明
图1为Redis模式转换示意图;
图2为模式转换方法的实现流程示意图一;
图3为模式转换方法的实现流程示意图二;
图4为模式转换方法的实现流程示意图三;
图5为模式转换系统的结构示意图;
图6为Redis单例示意图;
图7为Redis集群示意图;
图8为模式转换系统的组成结构示意图一;
图9为模式转换系统的组成结构示意图二。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅用于解释相关申请,而非对该申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关申请相关的部分。
远程字典服务(Remote Dictionary Server,Redis)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的应用程序接口(Application Programming Interface,API)。
Redis是一个Key-Value存储系统,和Memcached类似,它支持存储的value类型相对更多,包括字符串string、链表list、集合set、有序集合zset以及哈希类型hash哈希类型。这些数据类型都支持push/pop、add/remove及取交集、并集和差集等丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与Memcached一样,为了保证效率,数据都是缓存在内存中。区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了主从(master-slave)同步。
Redis是一个高性能的Key-Value数据库。Redis的出现,很大程度补偿了Memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。
Redis支持主从同步,数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
根据用户不同的使用需求,Redis有不同的部署方式,常见部署模式有单例模式、主从模式、集群模式,其中,集群模式有不同的方案,包括原生Redis集群方案,Twitter团队开源的Twemproxy以及豌豆荚公司开源的Codis方案。
Redis单例模式,即所有服务连接一台Redis服务,该模式不适用于生产环境中,如果单实例发生宕机或者内存爆炸,就可能导致所有连接该Redis的服务发生缓存失效引起雪崩。
主从模式是Redis官方推荐的高可用性解决方案,当用Redis做master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主从切换的功能,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,在发现master宕机后能进行主从节点的切换。其中,sentinel主要功能包括:不时的监控Redis是否良好运行,如果节点不可达就会对节点进行下线标识;如果被标识的是主节点,sentinel就会和其他的sentinel节点“协商”,如果其他节点也人为主节点不可达,就会选举一个sentinel节点来完成自动故障转义;在master-slave进行切换后,master_Redis.conf、slave_Redis.conf和sentinel.conf的内容都会发生改变,即master_Redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换。
Redis集群模式同样可以实现Redis高可用部署,Redis Sentinel集群模式中,随着业务量和数据量增,到性能达到Redis单节点瓶颈,垂直扩容受机器限制,水平扩容涉及对应用的影响以及数据迁移中数据丢失风险。针对这些痛点Redis3.0推出cluster分布式集群方案,当遇到单节点内存、并发、流量瓶颈时,采用cluster方案实现负载均衡,cluster方案主要解决分片问题,即把整个数据按照规则分成多个子集存储在多个不同节点上,每个节点负责自己整个数据的一部分。
Codis集群模式采用分布式代理,利用负载均衡技术将请求通过proxy分发到后端Redis服务器,有效解决了Redis Cluster中IP地址资源浪费的问题。同时Codis支持平滑水平扩容功能,相比Twemproxy的重启扩容方案更有优势。
随着云计算的发展,中间件产品上云也成为了一种趋势。在公有云的场景下,为了节省开支,可以在订购了一个Redis单例实例之后将其转换为其他Redis模式,因此存在Redis部署模式的转换需求。
现有方案中,Redis大部分部署在物理机或者虚拟机环境中,如果用户需要变更Redis的部署模式,无可避免的要进行手工的运维操作,比如配置主节点的地址以及密码等信息,配置主从模式等,用户手工操作的范围越大,出错的风险也就越高。示例性的,图1为Redis模式转换示意图,如图1所示,在从Redis单例模式转换为Redis集群模式的过程中,需要先申请物物理机或虚拟机,然后部署新的Redis服务,在配置主从服务和哨兵实例之后,进行代理proxy服务的配置,接着需要通过人工进行迁槽处理,然后将数据信息同步至代理proxy中,最终完成Redis模式的转换。可见,在这一模式转换过程中,需要额外的进行手工的迁槽,期间可能会导致数据的不一致。
进一步地,如果在模式转换的同时,还需要保留原有的接入点信息以及原有的Redis单实例中的数据,在这种场景下,手工的运维已变得不现实,需要一个自动化的Redis模式转换方法来支撑。
可以理解的是,进行模式转换时,用户手工操作易出错,且这一过程耗时较长,造成服务宕机状态的时间较长,导致用户无法正常访问Redis服务,因此会对业务系统的运行造成严重的影响。
也就是说,由于现有技术方案中Redis是直接部署在物理机或者虚拟机环境中,不具备自动化的模式转换能力,手工操作运维成本高,并且耗时长,在转换期间对用户的应用有明显影响,存在系统不可用的风险,同时对运维人员的要求高,存在Redis数据丢失的风险。即在公有云的场景中,现有技术并无法满足公有云用户按需变更Redis模式的使用需求。
为解决现有技术存在的上述问题,解决Redis服务在线转换的运维以及用户体验,本申请提出的模式转换方法是依托Kubernetes容器管理平台的弹性扩展以及高可用的自维护能力,搭建基于Kubernetes的Redis平台,提供Redis不同部署模式之间的转换能力,并保证数据的一致性以及整体系统的可用性。
本申请实施例提供了一种模式转换方法和系统,及存储介质,模式转换系统可以利用Kubernetes的弹性扩展以及高可用的特性,在Kubernetes集群中自动将运行当前Redis模式转换为运行目标Redis模式,解决了Redis模式转换过程中存在的耗时长、风险高的问题,降低了Redis服务的宕机时间,大大提高了Redis服务的高可用性以及数据安全性。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请一实施例提供了一种模式转换方法,图2为模式转换方法的实现流程示意图一,如图2所示,在本申请的实施例中,模式转换系统执行模式转换的方法可以包括以下步骤:
步骤101、在Kubernetes集群中运行当前Redis模式时,接收转换指令;其中,转换指令用于指示从当前Redis模式转换至目标Redis模式。
在本申请的实施例中,在Kubernetes集群中运行当前Redis模式时,模式转换系统可以接收转换指令,其中,该转换指令用于指示将Kubernetes集群中运行的当前Redis模式转换为目标Redis模式。
Kubernetes,简称K8s,是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署、规划、更新、维护的一种机制。
传统的应用部署方式是通过插件或脚本来安装应用,这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。
新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。
容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚拟机轻量、更“透明”,这更便于监控和管理。
在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。
需要说明的是,在本申请的实施例中,模式转换系统在接收转换指令之前,需要先在Kubernetes集群中运行当前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模式对应设置的模式转换的接口向模式转换系统发送转换指令。
可以理解的是,在本申请的实施例中,模式转换系统在Kubernetes集群中运行当前Redis模式时,接收转换指令之后,可以先确定Kubernetes集群对应的内存参数和资源参数;若内存参数和资源参数满足目标Redis模式,则开始模式转换处理;若内存参数和资源参数不满足目标Redis模式,则不进行模式转换处理。
步骤102、根据当前Redis模式和目标Redis模式,建立目标Redis模式对应的目标实例。
在本申请的实施例中,模式转换系统在Kubernetes集群中运行当前Redis模式时,接收转换指令之后,可以进一步根据当前Redis模式和目标Redis模式,建立目标Redis模式对应的目标实例。
需要说明的是,在本申请的实施例中,模式转换系统在基于转换指令确定需要执行从当前Redis模式转换为目标Redis模式的模式转换处理之后,可以先基于当前Redis模式和目标Redis模式,对目标Redis模式中的实例进行创建,即建立目标Redis模式对应的目标实例。
在Redis主从模式中,使用一个Redis实例作为主机,其余的Redis实例作为备份机,即从机。主机和从机的数据完全一致,主机支持数据的写入和读取等各项操作,而从机则只支持与主机数据的同步和读取,也就是说,客户端可以将数据写入到主机,由主机自动将数据的写入操作同步到从机。主从模式很好的解决了数据备份问题,并且由于主从服务数据几乎是一致的,因而可以将写入数据的命令发送给主机执行,而读取数据的命令发送给不同的从机执行,从而达到读写分离的目的。其中,在Redis主从模式中,一个主机可以对应有多个从机,例如,主机Redis-A分别有Redis-B、Redis-C、Redis-D、Redis-E四个从机。
具体地,由于Redis主从模式是多个Redis实例组成的,因而Redis主从模式的配置可以理解为多个不同的Redis实例通过一定的配置告知其相互之间的主从关系而完成的。其中,每个Redis实例都会占用一个本机的端口号,Redis主从模式的配置主要的配置点有两个:Redis实例端口号和Redis实例是主机还是从机,是从机的话其主机的ip和端口是什么。其中,如果不在配置文件中指定主从节点的关系,也可以在启动相关Redis实例之后使用slaveof命令来指定当前节点称为某个节点的从节点。
示例性的,在本申请的实施例中,如果当前Redis模式为Redis单例模式,目标Redis模式为Redis主从模式,由于Redis主从模式的配置是通过创建多个不同的Redis实例,并配置其相互之间的主从关系而完成的,因此,模式转换系统在根据当前Redis模式和目标Redis模式,建立目标Redis模式对应的目标实例时,可以先对Redis单例模式中的当前实例进行扩展处理,然后得到当前实例对应的至少一个扩展实例,接着可以对当前实例和扩展实例进行主从关系和部署形态的配置,从而可以获得一部分目标实例,即获得第一实例,其中,第一实例中包括一个主实例和至少一个从实例。
进一步地,在本申请的实施例中,模式转换系统还可以建立Redis主从模式对应的分片;其中,每个分片中均包括多个实例,接着,模式转换系统可以对每个分片中的多个实例进行主从关系和部署形态的配置处理,从而获得剩余的另一部分目标实例,即获得第二实例,其中,第二实例中包括n个主实例和至少n个从实例,n为大于等于1的整数。
也就是说,Redis主从模式对应的目标实例,可以包括基于当前实例扩展而来的第一实例和重新创建的第二实例。
Redis集群中数据是和槽(slot)挂钩的,其总共定义了16384个槽,所有的数据根据一致哈希算法会被映射到这16384个槽中的某个槽中;另一方面,这16384个槽是按照设置被分配到不同的Redis节点上的,比如启动了三个Redis实例:cluster-A,cluster-B和cluster-C,这里将0-5460号槽分配给cluster-A,将5461-10922号槽分配给cluster-B,将10923-16383号槽分配给cluster-C。也就是说,在Redis集群中,数据的存储只和槽有关,并且槽的数量是一定的,由于一致hash算法是一定的,因而将这16384个槽分配给无论多少个Redis实例,对于确认的数据其都将被分配到确定的槽位上。Redis集群通过这种方式来达到Redis的高效和高可用性目的。
具体地,Redis使用了虚拟槽来处理分区时节点变化的问题,也即将所有的数据映射到16384个虚拟槽位上,当Redis节点变化时数据映射的槽位将不会变化,并且这也是Redis进行节点扩张的基础。
对于一个高可用的Redis集群方案,Redis集群每个节点都将为其分配一个从节点,以防止数据节点因为故障下线,例如,当配置六个Redis实例时,会将其中三个作为主节点,剩余三个分别作为三个主节点的三个从节点。
示例性的,在本申请的实施例中,如果当前Redis模式为Redis单例模式,目标Redis模式为Redis集群模式,由于Redis集群模式的配置是通过创建多个不同的Redis实例,且两个Redis实例一组进行主从关系的配置而完成的,因此,模式转换系统在根据当前Redis模式和目标Redis模式,建立目标Redis模式对应的目标实例时,可以先对Redis单例模式中的当前实例进行扩展处理,然后得到当前实例对应的一个扩展实例,接着可以对当前实例和扩展实例进行主从关系、集群关系以及部署形态的配置处理,从而可以获得一部分目标实例,即获得第三实例,其中,第三实例中包括一个主实例和一个从实例。
进一步地,在本申请的实施例中,模式转换系统还可以建立Redis集群模式对应的分片;其中,每个分片中均包括两个实例,接着,模式转换系统可以对每个分片中的两个实例进行主从关系、集群关系以及部署形态的配置处理,从而获得剩余的另一部分目标实例,即获得第四实例,其中,第四实例中包括n个主实例和n个从实例,n为大于等于1的整数。
也就是说,Redis集群模式对应的目标实例,可以包括基于当前实例扩展而来的第三实例和重新创建的第四实例。
步骤103、将当前Redis模式中的数据存储至目标实例,并在Kubernetes集群中运行目标Redis模式。
在本申请的实施例中,模式转换系统在根据当前Redis模式和目标Redis模式,建立目标Redis模式对应的目标实例之后,便可以将当前Redis模式中的数据存储至目标实例,并在Kubernetes集群中运行目标Redis模式,从而实现从当前Redis模式到目标Redis模式的转换。
可以理解的是,在本申请的实施例中,由于Redis集群中数据是和槽挂钩的,所有的数据根据一致哈希算法会被映射到槽中,因此,如果当前Redis模式为Redis单例模式,目标Redis模式为Redis集群模式,模式转换系统在将当前Redis模式中的数据存储至目标实例,并在Kubernetes集群中运行目标Redis模式时,可以先按照哈希规则,将当前实例中的关键字映射至Redis集群模式中的全部分片中,并执行迁槽处理,以将数据存储至目标实例。
进一步地,在本申请的实施例中,模式转换系统还可以建立Redis集群模式对应的地址信息,从而便可以基于地址信息,运行Redis集群模式。
需要说明的是,在本申请的实施例中,模式转换系统在将当前Redis模式中的数据存储至目标实例之后,可以删除当前实例中的数据。
本申请实施例提供了一种模式转换方法,模式转换系统在Kubernetes集群中运行当前Redis模式时,接收转换指令;其中,转换指令用于指示从当前Redis模式转换至目标Redis模式;根据当前Redis模式和目标Redis模式,建立目标Redis模式对应的目标实例;将当前Redis模式中的数据存储至目标实例,并在Kubernetes集群中运行目标Redis模式。也就是说,在本申请的实施例中,模式转换系统可以利用Kubernetes的弹性扩展以及高可用的特性,在Kubernetes集群中自动将运行当前Redis模式转换为运行目标Redis模式,解决了Redis模式转换过程中存在的耗时长、风险高的问题,降低了Redis服务的宕机时间,大大提高了Redis服务的高可用性以及数据安全性。
基于上述实施例,在本申请的再一实施例中,图3为模式转换方法的实现流程示意图二,如图3所示,如果当前Redis模式为Redis单例模式,即目标Redis模式为Redis集群模式或Redis主从模式,模式转换系统在根据当前Redis模式和目标Redis模式,建立目标Redis模式对应的目标实例之后,即步骤102之后,模式转换系统执行模式转换的方法还可以包括以下步骤:
步骤104、创建哨兵实例集合;其中,哨兵实例集合中包括多个哨兵实例。
在本申请的实施例中,如果当前Redis模式为Redis单例模式,那么,无论目标Redis模式是Redis集群模式还是Redis主从模式,模式转换系统都可以进行多个哨兵实例的创建。具体地,模式转换系统建立的哨兵实例集合包括有多个哨兵实例。
在2.8版本之后Redis正式提供了sentinel(哨兵)架构。每个sentinel节点其实就是一个Redis实例,与主从节点不同的是sentinel节点作用是用于监控Redis数据节点的,而sentinel节点集合则表示监控一组主从Redis实例多个sentinel监控节点的集合。
对于一组主从节点,sentinel只是在其外部额外添加的一组用于监控作用的Redis实例。在主从节点和sentinel节点集合配置好之后,sentinel节点之间会相互发送消息,以检测其余sentinel节点是否正常工作,并且sentinel节点也会向主从节点发送消息,以检测监控的主从节点是否正常工作。
具体地,每个sentinel节点在本质上还是一个Redis实例,只不过和Redis数据节点不同的是,其主要作用是监控Redis数据节点。在Redis安装目录下有个默认的sentinel配置文件sentinel.conf,
进一步地,在本申请的实施例中,图4为模式转换方法的实现流程示意图三,如图4所示,如果当前Redis模式为Redis单例模式,即目标Redis模式为Redis集群模式或Redis主从模式,模式转换系统在将当前Redis模式中的数据存储至目标实例,并在Kubernetes集群中运行目标Redis模式之后,即步骤103之后,模式转换系统执行模式转换的方法还可以包括以下步骤:
步骤105、通过哨兵实例集合对目标实例进行监控处理,获得监控数据。
在本申请的实施例中,模式转换系统在Kubernetes集群中运行目标Redis模式之后,可以通过哨兵实例集合对目标实例进行监控处理,从而可以获得监控数据。
需要说明的是,在本申请的实施例中,如果目标Redis模式为Redis集群模式,那么模式转换系统可以通过哨兵实例对目标实例中的主实例进行监控处理;如果目标Redis模式为Redis主从模式,那么模式转换系统可以通过哨兵实例对全部目标实例进行监控处理,从而获得监控数据。
步骤106、对监控数据进行分析处理,获得目标Redis模式的状态参数。
在本申请的实施例中,模式转换系统在通过哨兵实例集合对目标实例进行监控处理,获得监控数据之后,可以对监控数据进行分析处理,进一步获得目标Redis模式的状态参数。
进一步地,在本申请的实施例中,模式转换系统在对监控数据进行分析处理,获得目标Redis模式的状态参数时,可以先分析监控数据,获得分析结果;如果分析结果为数据异常,那么模式转换系统可以将状态参数确定为异常状态。
步骤107、若状态参数为异常状态,则对目标Redis模式进行恢复处理。
在本申请的实施实施例中,模式转换系统在对监控数据进行分析处理,获得目标Redis模式的状态参数之后,如果状态参数为异常状态,那么模式转换系统可以对目标Redis模式进行恢复处理。
在本申请的实施例中,进一步地,如果当前Redis模式为Redis单例模式,即目标Redis模式为Redis集群模式或Redis主从模式,模式转换系统在Kubernetes集群中运行当前Redis模式时,接收转换指令之前,即步骤101之前,模式转换系统可以先创建当前实例和资源对象,然后确定当前实例的标识信息,并通过标识信息绑定当前实例和资源对象。
在本申请的实施例中,进一步地,如果当前Redis模式为Redis单例模式,即目标Redis模式为Redis集群模式或Redis主从模式,模式转换系统在根据当前Redis模式和目标Redis模式,建立目标Redis模式对应的目标实例之前,即步骤102之前,还可以先基于Redis集群模式,创建配置信息,然后利用配置信息建立Redis集群模式的代理。
具体地,在本申请中,模式转换系统可以先基于Redis主从模式或Redis集群模式,建立对应的配置信息,然后可以利用配置信息建立对应的代理proxy。其中,proxy指的是代理软件或代理服务器,也可以认为是一种网络访问方式,其功能是代理网络用户去取得网络信息。形象地说,它是网络信息的中转站,是个人网络和Internet服务商之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记。
在本申请的实施例中,进一步地,如果目标Redis模式为Redis单例模式,即当前Redis模式为Redis集群模式或Redis主从模式,那么模式转换系统在根据当前Redis模式和目标Redis模式,建立目标Redis模式对应的目标实例之前,即步骤103之前,模式转换系统可以先基于Redis单例模式,创建配置信息,然后利用配置信息删除目标Redis模式的代理。
本申请实施例提供了一种模式转换方法,模式转换系统在Kubernetes集群中运行当前Redis模式时,接收转换指令;其中,转换指令用于指示从当前Redis模式转换至目标Redis模式;根据当前Redis模式和目标Redis模式,建立目标Redis模式对应的目标实例;将当前Redis模式中的数据存储至目标实例,并在Kubernetes集群中运行目标Redis模式。也就是说,在本申请的实施例中,模式转换系统可以利用Kubernetes的弹性扩展以及高可用的特性,在Kubernetes集群中自动将运行当前Redis模式转换为运行目标Redis模式,解决了Redis模式转换过程中存在的耗时长、风险高的问题,降低了Redis服务的宕机时间,大大提高了Redis服务的高可用性以及数据安全性。
基于上述实施例,在本申请的另一实施例中,图5为模式转换系统的结构示意图,如图5所示,模式转换系统可以由配置管理模块、proxy模块、监控模块、分析模块以及协调管理模块构成。
具体地,在本申请中,配置管理模块主要负责接收用户的配置管理请求,是整个系统中Redis部署模式转换的发起点,并负责处理模式转换中的主要逻辑;proxy模块提供集群模式下的Redis的访问能力,并提供迁槽的能力;监控模块负责收集各个Redis实例的运行状况数据并上报到分析模块中;分析模块负责所有Redis实例的运行健康状态的维护,如果发现某个Redis服务出现宕机,会进行相应的重启恢复;协调管理模块负责监控模块以及分析模块的线性扩展以及高可用保障。
可以理解的是,在本申请的实施例提出的模式转换方法可以支持Redis单例模式、Redis集群模式以及Redis主从模式之间的相互转换,示例性的,如果当前Redis模式为Redis单例模式,目标Redis模式为Redis集群模式,那么,模式转换系统在Kubernetes集群中,将Redis单例模式转换为Redis集群模式的方法可以包括以下步骤:
步骤201、用户调用配置管理模块中Redis模式转换的接口,首先检查Redis模式转换之后Kubernetes集群中是否有足够的内存以及cpu资源,只有资源都满足的情况下才可以进行模式转换,否则提示用户资源不足。
步骤202、创建proxy以及连接ETCD使用的ConfigMap,ConfigMap主要用于pod重启之后的配置信息的重新读取。ETCD主要存储集群模式下的槽位信息以及所有Redis实例中的状态信息,由于单实例无需维护槽位信息,所以转换到集群模式之后,需要创建连接ETCD使用的ConfigMap以及proxy的ConfigMap。
步骤203、扩展原先的单实例data-group0的StatefulSet副本数以及配置其主从关系、集群关系、部署形态之间的转化。
步骤204、新建集群其他分片的StatefulSet,副本数均设置为2,并配置每个group分片中的主从关系。
步骤205、创建哨兵实例的StatefulSet,副本数为3,并配置监控所有group分片中角色属性为master的Redis实例。
步骤206、执行迁槽流程,将原先集中在data-group0分片中的Redis keys按照hash规则重新映射到所有的group分片中,并发执行迁槽任务。
步骤207、等待迁槽任务全部完成之后,新建proxy的Deployment,提供Redis集群的用户访问入口。
步骤208、执行数据库更新以及ETCD的更新等相关收尾工作。
可以理解的是,在本申请的实施例中,在Redis集群运行之后,监控模块会每隔10s拉取对应的监控数据信息,并上报到分析模块中,如果监控指标中有异常的数据,则将Redis实例的状态标记为ERROR状态,此时Redis实例会尝试进行恢复,如果连续监测到3次监控指标正常,则恢复Redis实例的状态。
图6为Redis单例模式示意图,如图6所示,在Kubernetes集群中进行Redis单例的创建,具体地,可以先在Kubernetes中创建一个名为data-group0的StatefulSet作为Redis数据节点,将副本数设定为1。由于用户需要一个固定的endpoint来连接Redis,所以需要为Redis服务创建一个Service,这个Service通过Pod的label来绑定到具体的Pod上。其中,pod A挂了之后Kubernetes会自动重新拉起一个新的pod B。
图7为Redis集群模式示意图,如图7所示,在进行模式转换之后,基于配置信息创建了proxy,且创建的每一个分片的副本数为2,即每一个分片中都包括有一个主实例Redismaster pod和一个从实例Redis slave pod,同时,创建哨兵实例集合Redis sentinelpod,配置副本数为3,即每个哨兵实例集合中包括有3个哨兵实例sentinel。
需要说明的是,在申请提出的模式转换方法也可以利用于其他部署形态的转换过程中。
可见,本申请实施例提出的基于Kubernetes的Redis模式转换方法,能够利用Kubernetes的弹性扩展以及高可用的特性来解决了Redis部署模式转换的人工运维痛点;进一步地,可以通过监控分析模块,保障了模式转换的正确性,在出错的情况下可进行尝试性的重启工作,极大的解放了运维的工作压力,可大大提高Redis系统的整体可用率。
也就是说,在Redis云化部署的基础之上,本申请提出的模式转换方法提供了Redis模式转换的自动化能力;且在公有云的环境中,实现了租户层面真正意义上的资源按需购买,弹性伸缩的能力。
本申请实施例提供了一种模式转换方法,模式转换系统在Kubernetes集群中运行当前Redis模式时,接收转换指令;其中,转换指令用于指示从当前Redis模式转换至目标Redis模式;根据当前Redis模式和目标Redis模式,建立目标Redis模式对应的目标实例;将当前Redis模式中的数据存储至目标实例,并在Kubernetes集群中运行目标Redis模式。也就是说,在本申请的实施例中,模式转换系统可以利用Kubernetes的弹性扩展以及高可用的特性,在Kubernetes集群中自动将运行当前Redis模式转换为运行目标Redis模式,解决了Redis模式转换过程中存在的耗时长、风险高的问题,降低了Redis服务的宕机时间,大大提高了Redis服务的高可用性以及数据安全性。
基于上述实施例,在本申请的另一实施例中,图8为模式转换系统的组成结构示意图一,如图8示,本申请实施例提出的模式转换系统10可以包括接收单元11,建立单元12,存储单元13,运行单元14,监控单元15,分析单元16,确定单元17,绑定单元18,删除单元19,处理单元110。
所述接收单元11,用于在Kubernetes集群中运行当前Redis模式时,接收转换指令;其中,所述转换指令用于指示从所述当前Redis模式转换至目标Redis模式;
所述建立单元12,用于根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例;
所述存储单元13,用于将所述当前Redis模式中的数据存储至所述目标实例;
所述运行单元14,用于在所述Kubernetes集群中运行所述目标Redis模式。
进一步地,在本申请的实施例中,所述当前Redis模式和所述目标Redis模式为Redis单例模式、Redis集群模式以及Redis主从模式中的任意两种不同模式。
进一步地,在本申请的实施例中,当所述当前Redis模式为所述Redis单例模式,所述目标Redis模式为所述Redis主从模式,所述目标实例包括第一实例,所述建立单元12,具体用于对所述Redis单例模式的当前实例进行扩展处理,获得所述当前实例对应的扩展实例;对所述当前实例和所述扩展实例进行主从关系和部署形态的配置处理,获得所述第一实例。
进一步地,在本申请的实施例中,所述目标实例还包括第二实例,所述建立单元12,还具体用于建立所述Redis主从模式对应的分片;其中,每个分片包括多个实例;对所述分片中的所述多个实例进行所述主从关系和所述部署形态的配置处理,获得所述第二实例。
进一步地,在本申请的实施例中,当所述当前Redis模式为所述Redis单例模式,所述目标Redis模式为所述Redis集群模式,所述目标实例包括第三实例,所述建立单元12,还具体用于对所述Redis单例模式的当前实例进行扩展处理,获得所述当前实例对应的扩展实例;对所述当前实例和所述扩展实例进行主从关系、集群关系以及部署形态的配置处理,获得所述第三实例。
进一步地,在本申请的实施例中,所述建立单元12,所述目标实例还包括第四实例,还具体用于建立所述Redis集群模式对应的分片;其中,每个分片包括两个实例;对所述分片中的所述两个实例进行所述主从关系、所述集群关系以及所述部署形态的配置处理,获得所述第四实例。
进一步地,在本申请的实施例中,所述存储单元13和所述运行单元14,具体用于按照哈希规则,将所述当前实例中的关键字映射至所述Redis集群模式中的全部分片中,并执行迁槽处理,以将所述数据存储至所述目标实例;建立所述Redis集群模式对应的地址信息;基于所述地址信息,运行所述Redis集群模式。
进一步地,在本申请的实施例中,所述建立单元12,还用于所述根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例之后,创建哨兵实例集合;其中,所述哨兵实例集合中包括多个哨兵实例。
相应地,所述监控单元15,用于将所述当前Redis模式中的数据存储至所述目标实例,并在所述Kubernetes集群中运行所述目标Redis模式之后,通过所述哨兵实例集合对所述目标实例进行监控处理,获得监控数据;
所述分析单元16,用于对所述监控数据进行分析处理,获得所述目标Redis模式的状态参数;
所述运行单元14,还用于若所述状态参数为所述异常状态,则对所述目标Redis模式进行恢复处理。
进一步地,在本申请的实施例中,所述分析单元16,具体用于分析所述监控数据,获得分析结果;若分析结果为数据异常,则将所述状态参数确定为所述异常状态。
进一步地,在本申请的实施例中,所述建立单元12,还用于在Kubernetes集群中运行当前Redis模式时,接收转换指令之前,创建所述当前实例和资源对象;
所述确定单元17,用于确定所述当前实例的标识信息;
所述绑定单元18,用于通过所述标识信息绑定所述当前实例和所述资源对象。
进一步地,在本申请的实施例中,所述建立单元12,还用于根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例之前,基于所述Redis集群模式,创建配置信息;利用所述配置信息建立所述Redis集群模式的代理。
进一步地,在本申请的实施例中,所述删除单元19,用于将所述当前Redis模式中的数据存储至所述目标实例之后,删除所述当前实例中的所述数据。
进一步地,在本申请的实施例中,所述建立单元12,还用于当所述目标Redis模式为所述Redis单例模式,所述根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例之前,基于所述Redis单例模式,创建配置信息;
所述删除单元19,还用于利用所述配置信息删除所述目标Redis模式的代理。
进一步地,在本申请的实施例中,所述确定单元17,还用于根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例之前,确定所述Kubernetes集群对应的内存参数和资源参数;
所述处理单元110,用于若所述内存参数和所述资源参数满足所述目标Redis模式,则开始模式转换处理;若所述内存参数和所述资源参数不满足所述目标Redis模式,则不进行所述模式转换处理。
在本申请的实施例中,进一步地,图9为模式转换系统的组成结构示意图二,如图9示,本申请实施例提出的模式转换系统10还可以包括处理器111、存储有处理器111可执行指令的存储器112,进一步地,模式转换系统10还可以包括通信接口113,和用于连接处理器111、存储器112以及通信接口113的总线114。
在本申请的实施例中,上述处理器111可以为特定用途集成电路(ApplicationSpecific Integrated Circuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital Signal Processing Device,DSPD)、可编程逻辑装置(ProgRAMmable Logic Device,PLD)、现场可编程门阵列(Field ProgRAMmable GateArray,FPGA)、中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本申请实施例不作具体限定。模式转换系统10还可以包括存储器112,该存储器112可以与处理器111连接,其中,存储器112用于存储可执行程序代码,该程序代码包括计算机操作指令,存储器112可能包含高速RAM存储器,也可能还包括非易失性存储器,例如,至少两个磁盘存储器。
在本申请的实施例中,总线114用于连接通信接口113、处理器111以及存储器112以及这些器件之间的相互通信。
在本申请的实施例中,存储器112,用于存储指令和数据。
进一步地,在本申请的实施例中,上述处理器111,用于在Kubernetes集群中运行当前Redis模式时,接收转换指令;其中,所述转换指令用于指示从所述当前Redis模式转换至目标Redis模式;根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例;将所述当前Redis模式中的数据存储至所述目标实例,并在所述Kubernetes集群中运行所述目标Redis模式。
在实际应用中,上述存储器112可以是易失性存储器(volatile memory),例如随机存取存储器(Random-Access Memory,RAM);或者非易失性存储器(non-volatilememory),例如只读存储器(Read-Only Memory,ROM),快闪存储器(flash memory),硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);或者上述种类的存储器的组合,并向处理器111提供指令和数据。
另外,在本实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例提供了一种模式转换系统,该模式转换系统在Kubernetes集群中运行当前Redis模式时,接收转换指令;其中,转换指令用于指示从当前Redis模式转换至目标Redis模式;根据当前Redis模式和目标Redis模式,建立目标Redis模式对应的目标实例;将当前Redis模式中的数据存储至目标实例,并在Kubernetes集群中运行目标Redis模式。也就是说,在本申请的实施例中,模式转换系统可以利用Kubernetes的弹性扩展以及高可用的特性,在Kubernetes集群中自动将运行当前Redis模式转换为运行目标Redis模式,解决了Redis模式转换过程中存在的耗时长、风险高的问题,降低了Redis服务的宕机时间,大大提高了Redis服务的高可用性以及数据安全性。
本申请实施例提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上所述的模式转换方法。
具体来讲,本实施例中的一种模式转换方法对应的程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与一种模式转换方法对应的程序指令被一电子设备读取或被执行时,包括如下步骤:
在Kubernetes集群中运行当前Redis模式时,接收转换指令;其中,所述转换指令用于指示从所述当前Redis模式转换至目标Redis模式;
根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例;
将所述当前Redis模式中的数据存储至所述目标实例,并在所述Kubernetes集群中运行所述目标Redis模式。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的实现流程示意图和/或方框图来描述的。应理解可由计算机程序指令实现流程示意图和/或方框图中的每一流程和/或方框、以及实现流程示意图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。
Claims (15)
1.一种模式转换方法,其特征在于,所述方法包括:
在Kubernetes集群中运行当前Redis模式时,接收转换指令;其中,所述转换指令用于指示从所述当前Redis模式转换至目标Redis模式;
根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例;所述根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例之前,所述方法还包括:确定所述Kubernetes集群对应的内存参数和资源参数;若所述内存参数和所述资源参数满足所述目标Redis模式,则开始模式转换处理;
将所述当前Redis模式中的数据存储至所述目标实例,并在所述Kubernetes集群中运行所述目标Redis模式。
2.根据权利要求1所述的方法,其特征在于,所述当前Redis模式和所述目标Redis模式为Redis单例模式、Redis集群模式以及Redis主从模式中的任意两种不同模式。
3.根据权利要求2所述的方法,其特征在于,当所述当前Redis模式为所述Redis单例模式,所述目标Redis模式为所述Redis主从模式,所述目标实例包括第一实例,所述根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例,包括:
对所述Redis单例模式的当前实例进行扩展处理,获得所述当前实例对应的扩展实例;
对所述当前实例和所述扩展实例进行主从关系和部署形态的配置处理,获得所述第一实例。
4.根据权利要求3所述的方法,其特征在于,所述目标实例还包括第二实例,所述根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例,包括:
建立所述Redis主从模式对应的分片;其中,每个分片包括多个实例;
对所述分片中的所述多个实例进行所述主从关系和所述部署形态的配置处理,获得所述第二实例。
5.根据权利要求2所述的方法,其特征在于,当所述当前Redis模式为所述Redis单例模式,所述目标Redis模式为所述Redis集群模式,所述目标实例包括第三实例,所述根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例,包括:
对所述Redis单例模式的当前实例进行扩展处理,获得所述当前实例对应的扩展实例;
对所述当前实例和所述扩展实例进行主从关系、集群关系以及部署形态的配置处理,获得所述第三实例。
6.根据权利要求5所述的方法,其特征在于,所述目标实例还包括第四实例,所述根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例,包括:
建立所述Redis集群模式对应的分片;其中,每个分片包括两个实例;
对所述分片中的所述两个实例进行所述主从关系、所述集群关系以及所述部署形态的配置处理,获得所述第四实例。
7.根据权利要求6所述的方法,其特征在于,所述将所述当前Redis模式中的数据存储至所述目标实例,并在所述Kubernetes集群中运行所述目标Redis模式,包括:
按照哈希规则,将所述当前实例中的关键字映射至所述Redis集群模式中的全部分片中,并执行迁槽处理,以将所述数据存储至所述目标实例;
建立所述Redis集群模式对应的地址信息;
基于所述地址信息,运行所述Redis集群模式。
8.根据权利要求4或7所述的方法,其特征在于,
所述根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例之后,所述方法还包括:创建哨兵实例集合;其中,所述哨兵实例集合中包括多个哨兵实例;
所述将所述当前Redis模式中的数据存储至所述目标实例,并在所述Kubernetes集群中运行所述目标Redis模式之后,所述方法还包括:
通过所述哨兵实例集合对所述目标实例进行监控处理,获得监控数据;
对所述监控数据进行分析处理,获得所述目标Redis模式的状态参数;
若所述状态参数为异常状态,则对所述目标Redis模式进行恢复处理。
9.根据权利要求8所述的方法,其特征在于,所述对所述监控数据进行分析处理,获得所述目标Redis模式的状态参数,包括:
分析所述监控数据,获得分析结果;
若分析结果为数据异常,则将所述状态参数确定为所述异常状态。
10.根据权利要求1所述的方法,其特征在于,所述将所述当前Redis模式中的数据存储至所述目标实例之后,所述方法还包括:
删除当前实例中的所述数据。
11.根据权利要求2所述的方法,其特征在于,当所述目标Redis模式为所述Redis单例模式,所述根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例之前,所述方法还包括:
基于所述Redis单例模式,创建配置信息;
利用所述配置信息删除所述目标Redis模式的代理。
12.根据权利要求2所述的方法,其特征在于,所述根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例之前,所述方法还包括:
确定所述Kubernetes集群对应的内存参数和资源参数;
若所述内存参数和所述资源参数满足所述目标Redis模式,则开始模式转换处理;
若所述内存参数和所述资源参数不满足所述目标Redis模式,则不进行所述模式转换处理。
13.一种模式转换系统,其特征在于,所述模式转换系统包括:接收单元,建立单元,存储单元、运行单元、确定单元以及处理单元,
所述接收单元,用于在Kubernetes集群中运行当前Redis模式时,接收转换指令;其中,所述转换指令用于指示从所述当前Redis模式转换至目标Redis模式;
所述建立单元,用于根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例;
所述存储单元,用于将所述当前Redis模式中的数据存储至所述目标实例;
所述运行单元,用于在所述Kubernetes集群中运行所述目标Redis模式;
所述确定单元,用于根据所述当前Redis模式和所述目标Redis模式,建立所述目标Redis模式对应的目标实例之前,确定所述Kubernetes集群对应的内存参数和资源参数;
所述处理单元,用于若所述内存参数和所述资源参数满足所述目标Redis模式,则开始模式转换处理。
14.一种模式转换系统,其特征在于,所述模式转换系统包括处理器、存储有所述处理器可执行指令的存储器,当所述指令被所述处理器执行时,实现如权利要求1-12任一项所述的方法。
15.一种计算机可读存储介质,其上存储有程序,应用于模式转换系统中,其特征在于,所述程序被处理器执行时,实现如权利要求1-12任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010700309.7A CN113965582B (zh) | 2020-07-20 | 2020-07-20 | 一种模式转换方法和系统,及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010700309.7A CN113965582B (zh) | 2020-07-20 | 2020-07-20 | 一种模式转换方法和系统,及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113965582A CN113965582A (zh) | 2022-01-21 |
CN113965582B true CN113965582B (zh) | 2024-04-09 |
Family
ID=79459497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010700309.7A Active CN113965582B (zh) | 2020-07-20 | 2020-07-20 | 一种模式转换方法和系统,及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113965582B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117033396B (zh) * | 2023-10-08 | 2024-01-19 | 北京凌云雀科技有限公司 | 一种基于Redis的大Key处理方法及装置 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101296424A (zh) * | 2008-06-27 | 2008-10-29 | 中兴通讯股份有限公司 | 数字集群通讯系统模式转换时终端处理方法 |
CN101694632A (zh) * | 2009-10-19 | 2010-04-14 | 浪潮电子信息产业股份有限公司 | 一种用于数据库集群系统按需执行资源计划的方法 |
CN102708035A (zh) * | 2012-05-30 | 2012-10-03 | 浪潮电子信息产业股份有限公司 | 一种基于模式匹配的集群系统监控方法 |
CN107544829A (zh) * | 2017-09-11 | 2018-01-05 | 郑州云海信息技术有限公司 | 一种ElasticSearch集群的自动部署方法 |
CN108023932A (zh) * | 2017-10-26 | 2018-05-11 | 康美健康云服务有限公司 | 一种基于Redis通用代理的实现方法、存储介质及电子设备 |
CN109951528A (zh) * | 2019-02-21 | 2019-06-28 | 中国工商银行股份有限公司 | 支持多部署模式的业务处理方法、装置及系统 |
WO2019184164A1 (zh) * | 2018-03-30 | 2019-10-03 | 平安科技(深圳)有限公司 | 自动部署Kubernetes从节点的方法、装置、终端设备及可读存储介质 |
CN110532074A (zh) * | 2019-08-08 | 2019-12-03 | 北明云智(武汉)网软有限公司 | 一种多租户模式SaaS服务集群环境的任务调度方法及系统 |
CN110597788A (zh) * | 2019-09-18 | 2019-12-20 | 浪潮软件集团有限公司 | 一种MySQL数据库由主从模式热切换到集群模式的方法 |
CN110659262A (zh) * | 2019-09-20 | 2020-01-07 | 聚好看科技股份有限公司 | 一种redis节点主从切换方法及装置 |
CN111125261A (zh) * | 2020-03-31 | 2020-05-08 | 四川新网银行股份有限公司 | 基于分布式缓存的数据传输方法 |
CN111176886A (zh) * | 2018-11-09 | 2020-05-19 | 杭州海康威视系统技术有限公司 | 一种数据库模式的切换方法、装置及电子设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6820088B1 (en) * | 2000-04-10 | 2004-11-16 | Research In Motion Limited | System and method for synchronizing data records between multiple databases |
GB2372849B (en) * | 2001-02-28 | 2003-05-07 | 3Com Corp | Method for determining master or slave mode in a storage server subnet |
US9717068B2 (en) * | 2014-09-09 | 2017-07-25 | Cisco Technology, Inc. | System and method for supporting cell updates within a small cell cluster for idle mobility in cell paging channel mode |
US10733168B2 (en) * | 2017-10-26 | 2020-08-04 | Sap Se | Deploying changes to key patterns in multi-tenancy database systems |
US11023219B2 (en) * | 2019-01-16 | 2021-06-01 | Vmware, Inc. | Upgrade implementation of a virtualization management system |
-
2020
- 2020-07-20 CN CN202010700309.7A patent/CN113965582B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101296424A (zh) * | 2008-06-27 | 2008-10-29 | 中兴通讯股份有限公司 | 数字集群通讯系统模式转换时终端处理方法 |
CN101694632A (zh) * | 2009-10-19 | 2010-04-14 | 浪潮电子信息产业股份有限公司 | 一种用于数据库集群系统按需执行资源计划的方法 |
CN102708035A (zh) * | 2012-05-30 | 2012-10-03 | 浪潮电子信息产业股份有限公司 | 一种基于模式匹配的集群系统监控方法 |
CN107544829A (zh) * | 2017-09-11 | 2018-01-05 | 郑州云海信息技术有限公司 | 一种ElasticSearch集群的自动部署方法 |
CN108023932A (zh) * | 2017-10-26 | 2018-05-11 | 康美健康云服务有限公司 | 一种基于Redis通用代理的实现方法、存储介质及电子设备 |
WO2019184164A1 (zh) * | 2018-03-30 | 2019-10-03 | 平安科技(深圳)有限公司 | 自动部署Kubernetes从节点的方法、装置、终端设备及可读存储介质 |
CN111176886A (zh) * | 2018-11-09 | 2020-05-19 | 杭州海康威视系统技术有限公司 | 一种数据库模式的切换方法、装置及电子设备 |
CN109951528A (zh) * | 2019-02-21 | 2019-06-28 | 中国工商银行股份有限公司 | 支持多部署模式的业务处理方法、装置及系统 |
CN110532074A (zh) * | 2019-08-08 | 2019-12-03 | 北明云智(武汉)网软有限公司 | 一种多租户模式SaaS服务集群环境的任务调度方法及系统 |
CN110597788A (zh) * | 2019-09-18 | 2019-12-20 | 浪潮软件集团有限公司 | 一种MySQL数据库由主从模式热切换到集群模式的方法 |
CN110659262A (zh) * | 2019-09-20 | 2020-01-07 | 聚好看科技股份有限公司 | 一种redis节点主从切换方法及装置 |
CN111125261A (zh) * | 2020-03-31 | 2020-05-08 | 四川新网银行股份有限公司 | 基于分布式缓存的数据传输方法 |
Non-Patent Citations (1)
Title |
---|
Redis分布式缓存实现与解析;周智;;信息通信(06);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113965582A (zh) | 2022-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11947809B2 (en) | Data management system | |
US20210360066A1 (en) | Utilizing Cloud-Based Storage Systems To Support Synchronous Replication Of A Dataset | |
US11422730B1 (en) | Recovery for storage systems synchronously replicating a dataset | |
US9906598B1 (en) | Distributed data storage controller | |
US10623486B2 (en) | Methods, systems, and media for providing distributed database access during a network split | |
US9727273B1 (en) | Scalable clusterwide de-duplication | |
US9697092B2 (en) | File-based cluster-to-cluster replication recovery | |
US8918392B1 (en) | Data storage mapping and management | |
US11314444B1 (en) | Environment-sensitive distributed data management | |
US8930364B1 (en) | Intelligent data integration | |
US11789638B2 (en) | Continuing replication during storage system transportation | |
CN112470142A (zh) | 在存储系统的中介器服务之间进行切换 | |
CN112470112A (zh) | 块存储系统的分布式副本 | |
US11934670B2 (en) | Performing various operations at the granularity of a consistency group within a cross-site storage solution | |
US20230004658A1 (en) | Transitioning Leadership In A Cluster Of Nodes | |
US20240160538A1 (en) | Virtual machine failover management for geo-redundant data centers | |
US20240061752A1 (en) | Integration of database with distributed storage system | |
CN113965582B (zh) | 一种模式转换方法和系统,及存储介质 | |
US20230251934A1 (en) | Snapshot range filters | |
US20230252229A1 (en) | Fast fill for computerized data input | |
CN111400098B (zh) | 一种副本管理方法、装置、电子设备及存储介质 | |
US20200401567A1 (en) | Object Storage System with Versioned Meta Objects | |
US11892917B2 (en) | Application recovery configuration validation | |
Chen et al. | Research of distributed file system based on massive resources and application in the network teaching system | |
US20230252045A1 (en) | Life cycle management for standby databases |
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 |