CN111813601B - 有状态分布式集群的微服务回滚方法及装置 - Google Patents
有状态分布式集群的微服务回滚方法及装置 Download PDFInfo
- Publication number
- CN111813601B CN111813601B CN202010655163.9A CN202010655163A CN111813601B CN 111813601 B CN111813601 B CN 111813601B CN 202010655163 A CN202010655163 A CN 202010655163A CN 111813601 B CN111813601 B CN 111813601B
- Authority
- CN
- China
- Prior art keywords
- container
- micro
- service
- rollback
- distributed cluster
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
- G06F11/1484—Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
-
- 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
-
- 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/45575—Starting, stopping, suspending or resuming 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/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/815—Virtual
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Retry When Errors Occur (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种有状态分布式集群的微服务回滚方法及装置,该方法包括:针对部署在有状态分布式集群中的目标应用程序,监控该目标应用程序中是否存在运行故障的微服务,若是,则确定该微服务对应的当前启动的容器实例;获取所述当前启动的容器实例对应的部署信息以及所述微服务对应的历史版本通用容器镜像;停止所述当前启动的容器实例,并启动基于所述部署信息和历史版本通用容器镜像的容器实例,以完成微服务的回滚。本申请能够提高有状态分布式集群的微服务回滚的效率和便捷化程度,进而能够提高分布式集群运行的可靠性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种有状态分布式集群的微服务回滚方法及装置。
背景技术
Docker容器技术是一种虚拟化技术,相比KVM和VMWare虚拟机,Docker是一种轻量的虚拟化技术,具有很好的性能和安全性;Docker作为一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或者Windows机器上,也可以实现虚拟化。基于Docker容器技术可以实现微服务架构,一般一个应用程序会提供多个服务,包括内部服务和外部服务,将所有的服务单独用容器包装起来,分别部署和运行,能够简化整个应用程序维护的复杂度,同时能够解耦微服务之间的耦合性,便于不同微服务单独开发和维护升级。
目前,通常采用Docker+微服务的方式构建分布式系统。然而,这种方式存在着不足。当生产上新部署的程序出现问题时,比如监控到新容器镜像的容器实例存在无法提供服务或者出现漏洞影响生产等问题,需要进行回滚程序时,需要针对每个定制的容器镜像分别进行回滚,增加了操作复杂度。
发明内容
针对现有技术中的问题,本申请提出了一种有状态分布式集群的微服务回滚方法及装置,能够提高有状态分布式集群的微服务回滚的效率和便捷化程度,进而能够提高分布式集群运行的可靠性。
为了解决上述技术问题,本申请提供以下技术方案:
第一方面,本申请提供一种有状态分布式集群的微服务回滚方法,包括:
针对部署在有状态分布式集群中的目标应用程序,监控该目标应用程序中是否存在运行故障的微服务,若是,则确定该微服务对应的当前启动的容器实例;
获取所述当前启动的容器实例对应的部署信息以及所述微服务对应的历史版本通用容器镜像;
停止所述当前启动的容器实例,并启动基于所述部署信息和历史版本通用容器镜像的容器实例,以完成微服务的回滚。
进一步地,在所述监控该目标应用程序中是否存在运行故障的微服务之前,还包括:若接收到容器启动指令,则获取该容器启动指令对应的部署信息;基于所述部署信息和预存储的通用容器镜像,启动所述容器启动指令对应的容器实例。
进一步地,在所述监控该目标应用程序中是否存在运行故障的微服务之前,还包括:若升级所述目标应用程序,则生成升级后的目标应用程序的各个微服务各自对应的通用容器镜像,且每个所述微服务对应唯一的通用容器镜像。
进一步地,所述历史版本通用容器镜像为所述当前启动的容器实例对应的通用容器镜像的前一旧版本的通用容器镜像。
进一步地,所述停止所述当前启动的容器实例,并启动基于所述部署信息和历史版本通用容器镜像的容器实例,包括:停止所述当前启动的容器实例;将所述当前启动的容器实例对应的容器镜像的启用字段设为否,将所述历史版本通用容器镜像的启用字段设为是;基于所述部署信息,启动所述启用字段为是的容器镜像对应的容器实例。
第二方面,本申请提供一种有状态分布式集群的微服务回滚装置,包括:
监控模块,用于针对部署在有状态分布式集群中的目标应用程序,监控该目标应用程序中是否存在运行故障的微服务,若是,则确定该微服务对应的当前启动的容器实例;
获取模块,用于获取所述当前启动的容器实例对应的部署信息以及所述微服务对应的历史版本通用容器镜像;
回滚模块,用于停止所述当前启动的容器实例,并启动基于所述部署信息和历史版本通用容器镜像的容器实例,以完成微服务的回滚。
进一步地,所述的有状态分布式集群的微服务回滚装置,还包括:接收模块,用于若接收到容器启动指令,则获取该容器启动指令对应的部署信息;启动模块,用于基于所述部署信息和预存储的通用容器镜像,启动所述容器启动指令对应的容器实例。
进一步地,所述的有状态分布式集群的微服务回滚装置,还包括:生成模块,用于若升级所述目标应用程序,则生成升级后的目标应用程序的各个微服务各自对应的通用容器镜像,且每个所述微服务对应唯一的通用容器镜像。
进一步地,所述历史版本通用容器镜像为所述当前启动的容器实例对应的通用容器镜像的前一旧版本的通用容器镜像。
进一步地,所述回滚模块,包括:停止单元,用于停止所述当前启动的容器实例;设置单元,用于将所述当前启动的容器实例对应的容器镜像的启用字段设为否,将所述历史版本通用容器镜像的启用字段设为是;回滚单元,用于基于所述部署信息,启动所述启用字段为是的容器镜像对应的容器实例。
第三方面,本申请提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的有状态分布式集群的微服务回滚方法。
第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现所述的有状态分布式集群的微服务回滚方法。
由上述技术方案可知,本申请提供一种有状态分布式集群的微服务回滚方法及装置。其中,该方法包括:针对部署在有状态分布式集群中的目标应用程序,监控该目标应用程序中是否存在运行故障的微服务,若是,则确定该微服务对应的当前启动的容器实例;获取所述当前启动的容器实例对应的部署信息以及所述微服务对应的历史版本通用容器镜像;停止所述当前启动的容器实例,并启动基于所述部署信息和历史版本通用容器镜像的容器实例,以完成微服务的回滚,能够提高有状态分布式集群的微服务回滚的效率和便捷化程度,进而能够提高分布式集群运行的可靠性;具体地,能够提高有状态分布式集群的生成容器镜像的效率,实现容器镜像的快速回滚,能够快速停止容器实例故障对分布式集群运行的影响,保证分布式集群的可靠性;能够有效提高分布式集群的灵活性、可维护性和可扩展性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例中有状态分布式集群的微服务回滚方法的流程示意图;
图2是本申请另一实施例中有状态分布式集群的微服务回滚方法的流程示意图;
图3是本申请又一实施例中有状态分布式集群的微服务回滚方法的流程示意图;
图4是本申请实施例中有状态分布式集群的微服务回滚方法的步骤401至步骤403的流程示意图;
图5是本申请实施例中有状态分布式集群的微服务回滚装置的结构示意图;
图6是本申请另一实施例中有状态分布式集群的微服务回滚装置的结构示意图;
图7是本申请又一实施例中有状态分布式集群的微服务回滚装置的结构示意图;
图8是本申请实施例中回滚模块的结构示意图;
图9是本申请应用实例中有状态分布式集群的微服务回滚方法的流程示意图;
图10是本申请应用实例中启停调度服务器、分布式集群以及配置数据库之间的逻辑关系图。
图11是本申请一个举例中微服务1回滚的逻辑示意图;
图12为本申请实施例的电子设备9600的系统构成示意框图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了便于理解本申请实施例提供的有状态分布式集群的微服务回滚的方案,首先介绍以下内容:
分布式集群,即分布式计算机系统是指由多台分散的计算机,经互连网络的联接而形成的系统,系统的处理和控制功能分布在各个计算机,是实现系统扩展性和高可靠的重要手段。
有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理。
有状态分布式集群,即有状态服务的分布式集群。
微服务,是一种新兴的软件架构,是把一个大型的单个应用程序和服务拆分为多个的支持微服务。
在分布式集群中,如果要针对某一微服务的多个容器实例进行定制化配置,就需要制作同一微服务的多个容器镜像。这增大了运维上进行版本回滚的困难,需要针对每个容器实例进行操作。基于此,本申请考虑从改变现有的版本回滚方式出发,提出一种有状态分布式集群的微服务回滚方法及装置,微服务的容器镜像只需要制作一次,做成参数化并且通用的版本,当任一Docker容器启动的时候,通过不同的初始化部署信息实现针对不同租户的定制服务,定制化配置的部署信息可以由启动调度服务器启动容器的时候传入,这些部署信息存储在一个统一的配置模块。Docker容器的启停交给启停调度服务器管理,在运行容器实例的目标服务器上,使用特定的微服务镜像和特定的定制参数启动容器实例,能够实现有状态分布式集群的快速回退应急,操作简单方便,集群规模可扩展。
为了提高有状态分布式集群的微服务回滚的效率和便捷化程度,进而提高分布式集群运行的可靠性,本申请实施例提供一种有状态分布式集群的微服务回滚装置,该装置可以是一服务器或客户端设备,所述客户端设备可以包括智能手机、平板电子设备、网络机顶盒、便携式计算机、台式电脑、个人数字助理(PDA)、车载设备和智能穿戴设备等。其中,所述智能穿戴设备可以包括智能眼镜、智能手表和智能手环等。
在实际应用中,进行有状态分布式集群的微服务回滚的部分可以在如上述内容所述的服务器侧执行,也可以所有的操作都在所述客户端设备中完成。具体可以根据所述客户端设备的处理能力,以及用户使用场景的限制等进行选择。本申请对此不作限定。若所有的操作都在所述客户端设备中完成,所述客户端设备还可以包括处理器。
上述的客户端设备可以具有通信模块(即通信单元),可以与远程的服务器进行通信连接,实现与所述服务器的数据传输。所述服务器可以包括任务调度中心一侧的服务器,其他的实施场景中也可以包括中间平台的服务器,例如与任务调度中心服务器有通信链接的第三方服务器平台的服务器。所述的服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式装置的服务器结构。
所述服务器与所述客户端设备之间可以使用任何合适的网络协议进行通信,包括在本申请提交日尚未开发出的网络协议。所述网络协议例如可以包括TCP/IP协议、UDP/IP协议、HTTP协议、HTTPS协议等。当然,所述网络协议例如还可以包括在上述协议之上使用的RPC协议(Remote Procedure Call Protocol,远程过程调用协议)、REST协议(Representational State Transfer,表述性状态转移协议)等。
具体通过下述各个实施例进行说明。
为了提高有状态分布式集群的微服务回滚的效率和便捷化程度,进而提高分布式集群运行的可靠性,本实施例提供一种执行主体是有状态分布式集群的微服务回滚装置的有状态分布式集群的微服务回滚方法,该有状态分布式集群的微服务回滚装置可以是启停调度服务器,如图1所示,该方法具体包含有如下内容:
步骤101:针对部署在有状态分布式集群中的目标应用程序,监控该目标应用程序中是否存在运行故障的微服务,若是,则确定该微服务对应的当前启动的容器实例。
具体地,可以定时监控或实时监控各个微服务是否存在运行故障;目标应用程序中可以有多个微服务,一个微服务可以对应一个或多个容器实例,不同的微服务包含的实例个数可以相同或不同。可以通过监控服务日志中的报错信息,判断微服务是否运行故障,也可以根据前端页面的反馈信息确定无法使用的功能,确定该功能对应的容器实例,进而确定该容器实例对应的微服务运行故障。
可以理解的是,一个微服务可以对应多个租户,也就是多个客户可以应用同一个微服务。一个微服务针对每个租户定制一个容器镜像。一个租户分别对应一个容器镜像,一个容器镜像可以生成多个容器实例,因此一个租户可以对应多个容器实例。
步骤102:获取所述当前启动的容器实例对应的部署信息以及所述微服务对应的历史版本通用容器镜像。
具体地,所述部署信息包含有:容器实例对应的镜像参数、分布式集群、微服务、租户、服务端口和读写状态信息等,镜像参数可以有:日志等级、是否开启报警以及获取镜像参数的数据库等信息。该部署信息可以预先存储在本地数据库中。所述历史版本通用容器镜像可以为所述当前启动的容器实例对应的通用容器镜像的前一旧版本的通用容器镜像,能够在实现微服务快速回滚的基础上,保证微服务的可靠性。
步骤103:停止所述当前启动的容器实例,并启动基于所述部署信息和历史版本通用容器镜像的容器实例,以完成微服务的回滚。
具体地,将所述部署信息输入历史版本通用容器镜像中,得到所述部署信息对应的租户的目标容器镜像,实例化所述目标容器镜像,得到所述容器实例。
为了在提高有状态分布式集群的微服务回滚的效率和便捷化程度的基础上,提高启动容器实例的效率,在本申请一个实施例中,参见图2,在步骤101之前,还包含有:
步骤201:若接收到容器启动指令,则获取该容器启动指令对应的部署信息。
具体地,所述容器启动指令中可以包含有容器实例对应的唯一标识,根据该唯一标识能够确定容器启动指令对应的部署信息。
步骤202:基于所述部署信息和预存储的通用容器镜像,启动所述容器启动指令对应的容器实例。
具体地,所述预存储的通用容器镜像为对应的微服务最新版本的通用容器镜像。
在现有技术中,在有状态的分布式集群中,无法简单的针对某一服务的多个容器实例进行分别定制。针对每个租户分别定制容器镜像,会增大系统的复杂性,失去了Docker技术快速部署、易于维护的优点,因此为了降低生成容器镜像的复杂性,提高生成容器镜像的效率,实现容器镜像的快速部署和维护,在本申请一个实施例中,参见图3,在步骤101之前,还包含有:
步骤301:若升级所述目标应用程序,则生成升级后的目标应用程序的各个微服务各自对应的通用容器镜像,且每个所述微服务对应唯一的通用容器镜像。
具体地,可以采用镜像打包方法生成升级后的目标应用程序的各个微服务各自对应的通用容器镜像。
为了进一步提高有状态分布式集群的微服务回滚的效率和便捷化程度,进而有效提高分布式集群的灵活性、可维护性和可拓展性,在本申请一个实施例中,参见图4,步骤103包含有:
步骤401:停止所述当前启动的容器实例。
步骤402:将所述当前启动的容器实例对应的容器镜像的启用字段设为否,将所述历史版本通用容器镜像的启用字段设为是。
步骤403:基于所述部署信息,启动所述启用字段为是的容器镜像对应的容器实例。
为了进一步说明本方案,在本申请一个应用实例中,步骤103包含有:
(1)回退镜像版本号。
具体包含有:将当前启用的镜像版本对应的启用字段置为否;将待回退单元待回退到的目标镜像版本对应的启用字段置为是,具体回退版本可根据实际需要进行设置,一般为镜像更新前所使用的旧镜像。根据这个启用字段选择要调用的镜像版本。
(2)回退部署信息和配置参数。
具体包含有:回退部署信息和配置参数,将部署信息和配置参数等还原,若存在对应的备份信息,则恢复备份信息。
(3)重启相关容器实例。
具体包含有:读取容器部署信息及配置参数,包括服务租户、读写状态、服务端口和服务名等内容;停止正运行的容器实例;使用部署信息调用启动命令启动容器实例;容器实例内进程读取对应的配置参数等信息,完成启动配置。
从软件层面来说,为了提高有状态分布式集群的微服务回滚的效率和便捷化程度,进而能够提高分布式集群运行的可靠性,本申请提供一种用于实现所述有状态分布式集群的微服务回滚方法中全部或部分内容的有状态分布式集群的微服务回滚装置的实施例,参见图5,所述有状态分布式集群的微服务回滚装置具体包含有如下内容:
监控模块51,用于针对部署在有状态分布式集群中的目标应用程序,监控该目标应用程序中是否存在运行故障的微服务,若是,则确定该微服务对应的当前启动的容器实例。
获取模块52,用于获取所述当前启动的容器实例对应的部署信息以及所述微服务对应的历史版本通用容器镜像。
其中,所述历史版本通用容器镜像可以为所述当前启动的容器实例对应的通用容器镜像的前一旧版本的通用容器镜像。
回滚模块53,用于停止所述当前启动的容器实例,并启动基于所述部署信息和历史版本通用容器镜像的容器实例,以完成微服务的回滚。
在本申请一个实施例中,参见图6,所述的有状态分布式集群的微服务回滚装置,还包括:
接收模块61,用于若接收到容器启动指令,则获取该容器启动指令对应的部署信息。
启动模块62,用于基于所述部署信息和预存储的通用容器镜像,启动所述容器启动指令对应的容器实例。
在本申请一个实施例中,参见图7,所述的有状态分布式集群的微服务回滚装置,还包括:
生成模块71,用于若升级所述目标应用程序,则生成升级后的目标应用程序的各个微服务各自对应的通用容器镜像,且每个所述微服务对应唯一的通用容器镜像。
在本申请一个实施例中,参见图8,所述回滚模块包括:
停止单元81,用于停止所述当前启动的容器实例。
设置单元82,用于将所述当前启动的容器实例对应的容器镜像的启用字段设为否,将所述历史版本通用容器镜像的启用字段设为是。
回滚单元83,用于基于所述部署信息,启动所述启用字段为是的容器镜像对应的容器实例。
本说明书提供的有状态分布式集群的微服务回滚装置的实施例具体可以用于执行上述有状态分布式集群的微服务回滚方法的实施例的处理流程,其功能在此不再赘述,可以参照上述有状态分布式集群的微服务回滚方法实施例的详细描述。
为了解决现有技术中Docker镜像应用于有状态分布式集群时配置难和回滚难的问题,提高有状态分布式集群的微服务回滚的效率和便捷化程度,进而能够提高分布式集群运行的可靠性,本申请还提供一种有状态分布式集群的微服务回滚装置的应用实例,该装置包含有:配置模块、启停调度模块和容器模块;具体描述如下:
(1)配置模块,用于存储各个微服务的历史镜像版本信息、各个容器实例的部署信息(比如服务与租户的对应关系、对应服务的读写状态)及容器内进程启动运行初始化所需的各类参数信息。实现形式可以是各类数据库。对服务而言的,一个服务可以有两种状态。例如,对A租户提供读写服务的有2个镜像容器a和b。其中a提供读取数据的服务,b提供写入数据的服务。
(2)启停调度模块,用于控制各个容器实例的启停,可以通过读取配置模块中的部署信息启动特定微服务特定版本的容器实例,为特定租户提供特定功能服务。
(3)容器模块,用于参数化配置。启动时读取调度微服务传递过来的部署信息,以及对应的配置参数等信息,完成启动配置,其中,本应用实例中的部署信息和配置参数相当于上述部署信息。
结合上述有状态分布式集群的微服务回滚装置,本申请还提供一种有状态分布式集群的微服务回滚方法的应用实例,在上述微服务配置的集群中,参见图9,该方法具体描述如下:
S101:回退镜像版本号。
S102:回退部署信息和配置参数。
S103:重启相关容器实例。
回退镜像版本号,具体包括:将配置微服务中待回退单元现在启用的镜像版本对应的启用字段置为否;将配置微服务中待回退单元待回退到的目标镜像版本对应的启用字段置为是,具体回退版本由运维人员确定,一般为镜像更新前所使用的旧镜像。启停调度微服务会根据这个启动字段选择要调用的镜像版本。
回退部署信息和配置参数,具体包括:将配置微服务中涉及待回退单元的修改(部署信息和配置参数等)还原,若有备份则恢复备份。
重启相关容器实例,具体包括:启停调度微服务读取配置微服务中容器部署信息及配置参数,部署信息包括服务租户、读写状态、服务端口和服务名等内容;启停调度微服务停止对应的正运行的容器实例;启停调度微服务使用部署信息调用启动命令启动容器实例;容器实例内进程读配置微服务,读取对应的配置参数等信息,完成启动配置。
考虑到现有的Docker+微服务分布式系统中,对某一微服务进行多实例定制化配置时需要定制镜像,不方便进行运维回退。可以将镜像功能参数化,将需要定制化的参数和镜像版本信息及部署信息存放到一个集中的配置模块。配合统一的启停调度服务,读取配置模块中的部署信息,传递给镜像容器进行启动。这样只需要简单的修改配置模块中的内容,便可以很方便的进行快速回退。
图10是启停调度服务器、分布式集群以及配置数据库之间的逻辑关系图。如图10所示,启停调度服务器、分布式集群以及配置数据库两两之间互相关联;在配置数据库中,切换镜像信息,回退镜像版本。在配置数据库中回退容器实例所需的部署信息和配置参数。应用启停调度服务器重启分布式集群中的容器,配置数据库可以设置在所述启停调度服务器中,也可以设置在一个独立的服务器中。
由上述描述可知,本应用实例提供了一种有状态分布式集群的微服务回滚方法,包括:回退镜像版本号,修改配置回退容器实例涉及的新修改参数,然后重启容器实例。在本应用实例中,通过将静态镜像参数化,这些参数可由租户提供信息自动生成,该租户提供信息包含有:租户根据模板,填写的租户名称、业务名称、使用集群、主园区、数据存储时长和是否双活等信息;并将参数统一存放在配置模块中,使得模块定制化运行成为可能,在分布式集群中可以通过动态修改参数,配合统一的启停调度,达到快速应急回退,能够解决现有的分布式系统中微服务快速回退的技术问题,能够有效提升系统灵活性、可维护性和扩展性。
如图11所示,本申请提供一个微服务1回滚的举例,具体包含有:
步骤S201,配置数据库;在数据库中修改微服务1当前启用的镜像版本;在数据库中回退微服务1涉及到的新修改参数。
步骤S202,启停调度服务器;启停调度服务器读取数据库中微服务1当前启用的镜像版本、容器实例1和容器实例2的部署信息,部署信息包括服务的租户名、读写状态、服务端口号和服务名等。
步骤S203,启停调度服务器停止容器实例1和容器实例2,然后启动指定的镜像版本,传进所需的部署信息。
步骤S204,容器实例1和容器实例2中的进程从配置数据库中读取所需的配置参数,比如所要连接的集群、是否需要写日志写消息和是否限流等,完成启动。
由上述描述可知,本申请提供的有状态分布式集群的微服务回滚方法及装置,能够提高有状态分布式集群的微服务回滚的效率,进而能够提高分布式集群运行的可靠性;具体地,能够提高有状态分布式集群的生成容器镜像的效率,实现容器镜像的快速回滚,能够快速停止容器实例故障对分布式集群运行的影响,保证分布式集群的可靠性;有效提高分布式集群的灵活性、可维护性和可扩展性。
从硬件层面来说,为了提高有状态分布式集群的微服务回滚的效率和便捷化程度,进而提高分布式集群运行的可靠性,本申请提供一种用于实现所述有状态分布式集群的微服务回滚方法中的全部或部分内容的电子设备的实施例所述电子设备具体包含有如下内容:
处理器(processor)、存储器(memory)、通信接口(Communications Interface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述通信接口用于实现所述有状态分布式集群的微服务回滚装置以及用户终端等相关设备之间的信息传输;该电子设备可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该电子设备可以参照实施例用于实现所述有状态分布式集群的微服务回滚方法的实施例及用于实现所述有状态分布式集群的微服务回滚装置的实施例进行实施,其内容被合并于此,重复之处不再赘述。
图12为本申请实施例的电子设备9600的系统构成的示意框图。如图12所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图12是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
在本申请一个或多个实施例中,有状态分布式集群的微服务回滚功能可以被集成到中央处理器9100中。其中,中央处理器9100可以被配置为进行如下控制:
步骤101:针对部署在有状态分布式集群中的目标应用程序,监控该目标应用程序中是否存在运行故障的微服务,若是,则确定该微服务对应的当前启动的容器实例;
步骤102:获取所述当前启动的容器实例对应的部署信息以及所述微服务对应的历史版本通用容器镜像;
步骤103:停止所述当前启动的容器实例,并启动基于所述部署信息和历史版本通用容器镜像的容器实例,以完成微服务的回滚。
从上述描述可知,本申请的实施例提供的电子设备,能够提高有状态分布式集群的微服务回滚的效率和便捷化程度,进而提高分布式集群运行的可靠性。
在另一个实施方式中,有状态分布式集群的微服务回滚装置可以与中央处理器9100分开配置,例如可以将有状态分布式集群的微服务回滚装置配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现有状态分布式集群的微服务回滚功能。
如图12所示,该电子设备9600还可以包括:通信模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图12中所示的所有部件;此外,电子设备9600还可以包括图12中没有示出的部件,可以参考现有技术。
如图12所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。
其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。
输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器9140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。
存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通信模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通信模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声音。
上述描述可知,本申请的实施例提供的电子设备,能够提高有状态分布式集群的微服务回滚的效率,进而提高分布式集群运行的可靠性。
本申请的实施例还提供能够实现上述实施例中的有状态分布式集群的微服务回滚方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的有状态分布式集群的微服务回滚方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
步骤101:针对部署在有状态分布式集群中的目标应用程序,监控该目标应用程序中是否存在运行故障的微服务,若是,则确定该微服务对应的当前启动的容器实例;
步骤102:获取所述当前启动的容器实例对应的部署信息以及所述微服务对应的历史版本通用容器镜像;
步骤103:停止所述当前启动的容器实例,并启动基于所述部署信息和历史版本通用容器镜像的容器实例,以完成微服务的回滚。
从上述描述可知,本申请实施例提供的计算机可读存储介质,能够提高有状态分布式集群的微服务回滚的效率和便捷化程度,进而提高分布式集群运行的可靠性。
本申请中上述方法的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。相关之处参见方法实施例的部分说明即可。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本申请中应用了具体实施例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (8)
1.一种有状态分布式集群的微服务回滚方法,其特征在于,包括:
针对部署在有状态分布式集群中的目标应用程序,监控该目标应用程序中是否存在运行故障的微服务,若是,则确定该微服务对应的当前启动的容器实例;
获取所述当前启动的容器实例对应的部署信息以及所述微服务对应的历史版本通用容器镜像;
停止所述当前启动的容器实例,并启动基于所述部署信息和历史版本通用容器镜像的容器实例,以完成微服务的回滚,所述历史版本通用容器镜像为所述当前启动的容器实例对应的通用容器镜像的前一旧版本的通用容器镜像;
所述停止所述当前启动的容器实例,并启动基于所述部署信息和历史版本通用容器镜像的容器实例,包括:
停止所述当前启动的容器实例;
将所述当前启动的容器实例对应的容器镜像的启用字段设为否,将所述历史版本通用容器镜像的启用字段设为是;
基于所述部署信息,启动所述启用字段为是的容器镜像对应的容器实例。
2.根据权利要求1所述的有状态分布式集群的微服务回滚方法,其特征在于,在所述监控该目标应用程序中是否存在运行故障的微服务之前,还包括:
若接收到容器启动指令,则获取该容器启动指令对应的部署信息;
基于所述部署信息和预存储的通用容器镜像,启动所述容器启动指令对应的容器实例。
3.根据权利要求1所述的有状态分布式集群的微服务回滚方法,其特征在于,在所述监控该目标应用程序中是否存在运行故障的微服务之前,还包括:
若升级所述目标应用程序,则生成升级后的目标应用程序的各个微服务各自对应的通用容器镜像,且每个所述微服务对应唯一的通用容器镜像。
4.一种有状态分布式集群的微服务回滚装置,其特征在于,包括:
监控模块,用于针对部署在有状态分布式集群中的目标应用程序,监控该目标应用程序中是否存在运行故障的微服务,若是,则确定该微服务对应的当前启动的容器实例;
获取模块,用于获取所述当前启动的容器实例对应的部署信息以及所述微服务对应的历史版本通用容器镜像;
回滚模块,用于停止所述当前启动的容器实例,并启动基于所述部署信息和历史版本通用容器镜像的容器实例,以完成微服务的回滚,所述历史版本通用容器镜像为所述当前启动的容器实例对应的通用容器镜像的前一旧版本的通用容器镜像;
所述回滚模块,包括:
停止单元,用于停止所述当前启动的容器实例;
设置单元,用于将所述当前启动的容器实例对应的容器镜像的启用字段设为否,将所述历史版本通用容器镜像的启用字段设为是;
回滚单元,用于基于所述部署信息,启动所述启用字段为是的容器镜像对应的容器实例。
5.根据权利要求4所述的有状态分布式集群的微服务回滚装置,其特征在于,还包括:
接收模块,用于若接收到容器启动指令,则获取该容器启动指令对应的部署信息;
启动模块,用于基于所述部署信息和预存储的通用容器镜像,启动所述容器启动指令对应的容器实例。
6.根据权利要求4所述的有状态分布式集群的微服务回滚装置,其特征在于,还包括:
生成模块,用于若升级所述目标应用程序,则生成升级后的目标应用程序的各个微服务各自对应的通用容器镜像,且每个所述微服务对应唯一的通用容器镜像。
7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至3任一项所述的有状态分布式集群的微服务回滚方法。
8.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述指令被计算机执行时实现权利要求1至3任一项所述的有状态分布式集群的微服务回滚方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010655163.9A CN111813601B (zh) | 2020-07-09 | 2020-07-09 | 有状态分布式集群的微服务回滚方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010655163.9A CN111813601B (zh) | 2020-07-09 | 2020-07-09 | 有状态分布式集群的微服务回滚方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111813601A CN111813601A (zh) | 2020-10-23 |
CN111813601B true CN111813601B (zh) | 2023-08-08 |
Family
ID=72842052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010655163.9A Active CN111813601B (zh) | 2020-07-09 | 2020-07-09 | 有状态分布式集群的微服务回滚方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111813601B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112433882B (zh) * | 2020-10-30 | 2024-01-26 | 福建福诺移动通信技术有限公司 | 一种记录和恢复微服务部署信息的方法 |
CN112463304A (zh) * | 2020-12-03 | 2021-03-09 | 金蝶软件(中国)有限公司 | 容器镜像的回滚方法、装置、计算机设备和存储介质 |
CN112579139B (zh) * | 2020-12-09 | 2024-07-12 | 北京红山信息科技研究院有限公司 | 一种多集群补丁更新方法、系统、服务器和存储介质 |
CN112596946B (zh) * | 2020-12-10 | 2024-08-20 | 长沙市到家悠享网络科技有限公司 | 服务的运行状态控制方法、装置、电子设备及存储介质 |
CN112579397B (zh) * | 2020-12-25 | 2024-06-18 | 京东科技控股股份有限公司 | 服务上线自检方法、装置、设备及存储介质 |
CN114675872B (zh) * | 2021-05-21 | 2024-10-15 | 腾讯云计算(北京)有限责任公司 | 一种对应用程序的数据处理方法、装置、设备及存储介质 |
CN113064700B (zh) * | 2021-04-30 | 2024-06-07 | 中国工商银行股份有限公司 | 容器部署方法及装置 |
CN114936070A (zh) * | 2022-06-01 | 2022-08-23 | 山东中创软件商用中间件股份有限公司 | 基于容器集群调度技术的服务滚动发布方法、装置及介质 |
CN115665265B (zh) * | 2022-12-29 | 2023-04-04 | 国家超级计算天津中心 | 请求处理方法、装置、设备、存储介质及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107066296A (zh) * | 2017-03-31 | 2017-08-18 | 北京奇艺世纪科技有限公司 | 一种集群节点中镜像的清理方法及装置 |
CN110162382A (zh) * | 2019-04-09 | 2019-08-23 | 平安科技(深圳)有限公司 | 基于容器的灰度发布方法、装置、计算机设备及存储介质 |
CN111078468A (zh) * | 2019-11-21 | 2020-04-28 | 贝壳技术有限公司 | 微服务架构下的服务回滚方法及装置 |
-
2020
- 2020-07-09 CN CN202010655163.9A patent/CN111813601B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107066296A (zh) * | 2017-03-31 | 2017-08-18 | 北京奇艺世纪科技有限公司 | 一种集群节点中镜像的清理方法及装置 |
CN110162382A (zh) * | 2019-04-09 | 2019-08-23 | 平安科技(深圳)有限公司 | 基于容器的灰度发布方法、装置、计算机设备及存储介质 |
CN111078468A (zh) * | 2019-11-21 | 2020-04-28 | 贝壳技术有限公司 | 微服务架构下的服务回滚方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111813601A (zh) | 2020-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111813601B (zh) | 有状态分布式集群的微服务回滚方法及装置 | |
CN112463535B (zh) | 多集群异常处理方法及装置 | |
CN112445575B (zh) | 多集群资源调度方法、装置及系统 | |
CN111031058A (zh) | 基于WebSocket的分布式服务器集群交互方法及装置 | |
CN111796838B (zh) | Mpp数据库自动部署方法及装置 | |
CN112965814B (zh) | 多任务调度方法及系统 | |
CN112835688A (zh) | 分布式事务处理方法、设备及存储介质 | |
CN113138812B (zh) | 航天器任务调度方法及装置 | |
CN110837407B (zh) | 无服务器云服务系统及其资源管理方法以及电子设备 | |
CN110764881A (zh) | 分布式系统后台重试方法及装置 | |
CN111459539A (zh) | 基于镜像分层的持续集成流水线运行方法及装置 | |
CN111813625B (zh) | 分布式服务器集群的健康检查方法及装置 | |
CN112069154A (zh) | etcd分布式数据库自动运维方法及相关装置 | |
CN112905337A (zh) | 软硬件混合部署的MySQL集群调度方法及装置 | |
CN110427260B (zh) | 主机作业调度方法、装置及系统 | |
CN111371695B (zh) | 服务限流方法及装置 | |
CN113157481B (zh) | 基于集群的服务器跳时间故障处理方法、装置及系统 | |
CN110781014A (zh) | 基于Android设备的录音数据的多进程分发方法与系统 | |
CN111367561B (zh) | 软件程序远程开发方法及装置 | |
CN112559158A (zh) | 微服务定时任务调度方法及装置 | |
CN115102999B (zh) | DevOps系统、服务提供方法、存储介质和电子装置 | |
CN112445574B (zh) | 应用容器多集群迁移方法及装置 | |
CN113452776B (zh) | PaaS平台服务调度方法、装置及PaaS平台 | |
CN111930626B (zh) | 基于PaaS云服务的自动化测试方法及装置 | |
CN112416641B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |