CN113076246A - 软件***的维护方法、装置、计算机设备及可读存储介质 - Google Patents
软件***的维护方法、装置、计算机设备及可读存储介质 Download PDFInfo
- Publication number
- CN113076246A CN113076246A CN202110351857.8A CN202110351857A CN113076246A CN 113076246 A CN113076246 A CN 113076246A CN 202110351857 A CN202110351857 A CN 202110351857A CN 113076246 A CN113076246 A CN 113076246A
- Authority
- CN
- China
- Prior art keywords
- application
- script
- detected
- executing
- calling
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3616—Software analysis for verifying properties of programs using software metrics
-
- 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/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及自动程序设计领域,本发明实施例提供了一种软件***的维护方法、装置、计算机设备及可读存储介质,其中,该方法包括:调用自检测脚本,执行所述自检测脚本根据配置文件中的进程关键字判断待检测应用的进程是否为存活状态;若否,且判断出所述待检测应用为非正常关停,则根据所述配置文件中的应用关停脚本全路径调用应用关停脚本,执行所述应用关停脚本来关停所述待检测应用,并根据所述配置文件中的应用启动脚本全路径调用应用启动脚本,执行所述应用启动脚本来启动所述待检测应用。该方案实现了应用的自动恢复,有利于保证信息***的高可用性,同时,该维护方式操作便捷,无需增加额外的高可用服务器,有利于降低成本。
Description
技术领域
本发明涉及自动程序设计领域,特别涉及一种软件***的维护方法、装置、计算机设备及可读存储介质。
背景技术
信息***在国计民生中具有广泛的应用,大到航空航天、金融电信,小到普通的管理***。如果应用停止导致信息***无法对外提供服务,将会对企业和客户产生重要影响,甚至带来重大经济损失。因此,信息***的运行需要保障持续的可用性,在软件设计中需要考虑高可用方案,保证***持续对外提供服务。
高可用HA(High Availability)是分布式***架构设计中必须考虑的因素之一,它通常是指通过尽量缩短因日常维护操作(计划)和突发的***崩溃(非计划)所导致的停机时间,以提高***和应用的可用性。HA是企业防止核心计算机***因故障停机的最有效手段。
业内常用的高可用方式基于分布式集群,需要将应用部署为集群模式,需要依赖额外的负载均衡服务器提供心跳检测的机制,以通过负载均衡服务器及其高可用来保障***的高可用,对于一些中小企业或中小应用,这种方式无疑会增加成本和维护难度。
发明内容
本发明实施例提供了一种软件***的维护方法,以解决现有技术中软件***维护由于需要额外的负载均衡服务器导致的成本高、操作难度大的技术问题。该方法包括:
调用自检测脚本,执行所述自检测脚本根据配置文件中的进程关键字判断待检测应用的进程是否为存活状态;
若否,且判断出所述待检测应用为非正常关停,则根据所述配置文件中的应用关停脚本全路径调用应用关停脚本,执行所述应用关停脚本来关停所述待检测应用,并根据所述配置文件中的应用启动脚本全路径调用应用启动脚本,执行所述应用启动脚本来启动所述待检测应用。
在一个实施例中,判断待检测应用的进程是否为存活状态,包括:
根据所述配置文件中的进程关键字确定待检测应用;
通过访问命令访问所述待检测应用,接收到正确的响应状态时,判断出所述待检测应用的进程为存活状态,否则,判断出待检测应用的进程为不存活状态。
在一个实施例中,还包括:
执行所述应用关停脚本判断出所述应用关停脚本的调用为手动调用时,在指定路径存储特定文件;
执行所述应用启动脚本删除所述指定路径存储的所述特定文件;
判断出所述待检测应用为非正常关停,包括:
执行所述自检测脚本的过程中判断出所述指定路径未存储所述特定文件,且所述待检测应用的进程为不存活状态时,则判断出所述待检测应用为非正常关停;判断出所述指定路径存储有所述特定文件时,则判断出所述待检测应用为正常关停。
在一个实施例中,还包括:
当判断出所述待检测应用的进程为存活状态,执行所述自检测脚本判断所述待检测应用在注册中心是否存在,若否,根据所述配置文件中的服务注册脚本全路径调用服务注册脚本,执行所述服务注册脚本将所述待检测应用在所述注册中心中注册;
当判断出所述待检测应用为正常关停或非正常关停,执行所述自检测脚本判断所述待检测应用在注册中心是否存在,若是,根据所述配置文件中的服务摘除脚本全路径调用服务摘除脚本,执行所述服务摘除脚本将所述待检测应用在所述注册中心中摘除。
在一个实施例中,
执行所述服务注册脚本将所述待检测应用在所述注册中心中注册,包括:
执行所述服务注册脚本在所述注册中心中写入所述待检测应用的相关信息;
执行所述服务摘除脚本将所述待检测应用在所述注册中心中摘除,包括:
执行所述服务摘除脚本在所述注册中心中删除所述待检测应用的相关信息。
在一个实施例中,所述注册中心为zookeeper。
在一个实施例中,调用自检测脚本,包括:
通过crontab设置定时任务,根据定时任务调用自检测脚本。
本发明实施例还提供了一种软件***的维护装置,以解决现有技术中软件***维护由于需要额外的负载均衡服务器导致的成本高、操作难度大的技术问题。该装置包括:
检测模块,用于调用自检测脚本,执行所述自检测脚本根据配置文件中的进程关键字判断待检测应用的进程是否为存活状态;
维护模块,用于判断出所述待检测应用的进程为不存活状态,且判断出所述待检测应用为非正常关停,则根据所述配置文件中的应用关停脚本全路径调用应用关停脚本,执行所述应用关停脚本来关停所述待检测应用,并根据所述配置文件中的应用启动脚本全路径调用应用启动脚本,执行所述应用启动脚本来启动所述待检测应用。
在一个实施例中,检测模块,包括:
存活状态检测单元,用于根据所述配置文件中的进程关键字确定待检测应用;通过访问命令访问所述待检测应用,接收到正确的响应状态时,判断出所述待检测应用的进程为存活状态,否则,判断出待检测应用的进程为不存活状态。
在一个实施例中,维护模块,包括:
关停单元,用于执行所述应用关停脚本判断出所述应用关停脚本的调用为手动调用时,在指定路径存储特定文件;
启动单元,用于执行所述应用启动脚本删除所述指定路径存储的所述特定文件;
判断出所述待检测应用为非正常关停,包括:
关停状态检测单元,用于判断出所述指定路径未存储所述特定文件,且所述待检测应用的进程为不存活状态时,则判断出所述待检测应用为非正常关停;判断出所述指定路径存储有所述特定文件时,则判断出所述待检测应用为正常关停。
在一个实施例中,维护模块,还包括:
服务注册单元,用于当判断出所述待检测应用的进程为存活状态,执行所述自检测脚本判断所述待检测应用在注册中心是否存在,若否,根据所述配置文件中的服务注册脚本全路径调用服务注册脚本,执行所述服务注册脚本将所述待检测应用在所述注册中心中注册;
服务摘除单元,用于当判断出所述待检测应用为正常关停或非正常关停,执行所述自检测脚本判断所述待检测应用在注册中心是否存在,若是,根据所述配置文件中的服务摘除脚本全路径调用服务摘除脚本,执行所述服务摘除脚本将所述待检测应用在所述注册中心中摘除。
在一个实施例中,服务注册单元,包括:
服务注册子单元,用于执行所述服务注册脚本在所述注册中心中写入所述待检测应用的相关信息;
服务摘除单元,包括:
服务摘除子单元,用于执行所述服务摘除脚本在所述注册中心中删除所述待检测应用的相关信息。
在一个实施例中,所述注册中心为zookeeper。
在一个实施例中,检测模块,包括:
调用单元,用于通过crontab设置定时任务,根据定时任务调用自检测脚本。
本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意的软件***的维护方法,以解决现有技术中软件***维护由于需要额外的负载均衡服务器导致的成本高、操作难度大的技术问题。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述任意的软件***的维护方法的计算机程序,以解决现有技术中软件***维护由于需要额外的负载均衡服务器导致的成本高、操作难度大的技术问题。
在本发明实施例中,提出了基于自检测脚本检测待检测应用的进程的存活状态,当判断出待检测应用的进程为不存活状态,且判断出待检测应用为非正常关停,则根据配置文件中的应用关停脚本全路径调用应用关停脚本,执行应用关停脚本来关停待检测应用,实现待检测应用的正常关停,并根据配置文件中的应用启动脚本全路径调用应用启动脚本,执行所应用启动脚本来启动待检测应用,实现待检测应用的正常启动。与现有技术中依靠负载均衡服务器提供心跳检测机制来维护软件***的技术方案相比,实现了通过自检测脚本自动检测应用的存活状态、关停状态的检测机制,并基于应用关停脚本和应用启动脚本自动实现了应用的正常启动,即实现了应用的自恢复,有利于保证信息***的高可用性,同时,该维护方式操作便捷,无需增加额外的高可用服务器,有利于降低成本。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1是本发明实施例提供的一种软件***的维护方法的流程图;
图2是本发明实施例提供的一种实施上述软件***的维护方法的场景示意图;
图3是本发明实施例提供的一种实施上述软件***的维护方法的流程图;
图4是本发明实施例提供的一种计算机设备的结构框图;
图5是本发明实施例提供的一种软件***的维护装置的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在本发明实施例中,提供了一种软件***的维护方法,如图1所示,该方法包括:
步骤102:调用自检测脚本,执行所述自检测脚本根据配置文件中的进程关键字判断待检测应用的进程是否为存活状态;
步骤104:若否,且判断出所述待检测应用为非正常关停,则根据所述配置文件中的应用关停脚本全路径调用应用关停脚本,执行所述应用关停脚本来关停所述待检测应用,并根据所述配置文件中的应用启动脚本全路径调用应用启动脚本,执行所述应用启动脚本来启动所述待检测应用。
由图1所示的流程可知,在本发明实施例中,提出了基于自检测脚本检测待检测应用的进程的存活状态,当判断出待检测应用的进程为不存活状态,且判断出待检测应用为非正常关停,则根据配置文件中的应用关停脚本全路径调用应用关停脚本,执行应用关停脚本来关停待检测应用,实现待检测应用的正常关停,并根据配置文件中的应用启动脚本全路径调用应用启动脚本,执行所应用启动脚本来启动待检测应用,实现待检测应用的正常启动。与现有技术中依靠负载均衡服务器提供心跳检测机制来维护软件***的技术方案相比,实现了通过自检测脚本自动检测应用的存活状态、关停状态的检测机制,并基于应用关停脚本和应用启动脚本自动实现了应用的正常启动,即实现了应用的自恢复,有利于保证信息***的高可用性,同时,该维护方式操作便捷,无需增加额外的高可用服务器,有利于降低成本。
具体实施时,上述待检测应用可以是部署在Web容器中的应用。容器是一种常用的中间件。所谓中间件,是提供***软件和应用软件之间连接的软件,以便于软件各部件之间的沟通。中间件处在操作***和更高一级应用程序之间。它充当的功能是:将应用程序运行环境与操作***隔离,从而实现应用程序开发者不必为更多***问题忧虑,而直接关注该应用程序在解决问题上的能力。而容器可以给处于其中的应用程序组件提供一个环境,使应用程序直接跟容器中的环境变量交互,而不必关注其它***问题。例如:tomcat(servlet容器),Jboss(EJB容器),这些容器提供的接口严格遵守J2EE规范中的web application标准。
具体实施时,实施上述软件***的维护方法的场景如图2所示,应用部署在Web容器中,用户可以通过http请求方式访问应用。上述软件***的维护方法可以运行在服务器后台,服务器后台调用、执行自检测脚本,执行自检测脚本来判读应用的进程是否处于存活状态。如果处于存活状态,则休眠指定间隔时间后继续执行下一轮扫描。如果该应用进程为不存活状态,判断是否为非正常关停,若为非正常关停,则调用应用关停脚本关停应用,实现应用的正常关停,再调用应用启动脚本来启动应用,实现应用的重启。
具体实施时,上述自检测脚本的调用可以根据待检测应用的特征灵活设置定时调用,例如,如图2所示,可以通过crontab设置定时任务,进而根据定时任务调用自检测脚本。具体的,定时任务既可以通过root用户执行,也可以通过应用用户执行,利用应用用户执行可以更好的保障***的安全性。
具体的,crontab命令常见于Unix和类Unix的操作***之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。通常,crontab储存的指令被守护进程激活,cront常常在后台运行,检查是否有预定的作业需要执行,这类作业一般称为cron jobs。
具体实施时,上述软件***的维护方法基于自检测脚本可以实现兼容多种web容器的自检测机制,只需要在配置文件中调整容器对应的进程关键字及对应容器应用的启动、关停脚本,就可以进行灵活调用,实现应用在不同web容器的自动检测和异常恢复。具体的,配置文件的设置可以包括进程关键字、应用关停脚本全路径、应用启动脚本全路径、日志文件路径等信息,如下示例所示。
具体的,进程关键字可以根据web容器的类型进行确定,并同时调整启动脚本和关停脚本的文件全路径,可以支持tomcat、Weblogic、Jboss等多种主流web容器。FileFlag标识用来记录应用是正常关停还是非正常(意外)关停。
具体实施时,在执行自检测脚本的过程中,可以通过以下方式来判断应用的进程是否处于存活状态,例如,根据配置文件中的进程关键字确定出待检测应用,即包含进程关键字的进程存在,进而通过访问命令访问所述待检测应用,接收到正确的响应状态时,判断出所述待检测应用的进程为存活状态,否则,判断出待检测应用的进程为不存活状态。
具体的,可以通过curl命令访问该web应用,如果web应用可以返回正确的http响应状态码,则表明web应用的进程处于存活状态,否则,表明web应用的进程处于不存活状态。
具体实施时,所谓应用的正常关停,是指通过手动调用应用关停脚本方式关闭应用;而应用的非正常关停应用,是指由于意外原因引起的应用服务停止。为了便捷、准确地确定应用是否为非正常关停,在本实施例中,对应用关停脚本进行改进,应用关停脚本在可以关停应用的基础上,还可以判断应用关停脚本的调用是否为手动调用,当判断出所述应用关停脚本的调用为手动调用时,在指定路径存储特定文件appisshutdown,这样,根据该特定文件appisshutdown是否存在,即可以判断应用是正常关停还是非正常关停。例如,改进应用关停脚本的方式可以是在原有应用关停脚本的逻辑基础上增加如下内容:
具体的,还对应地对应用启动脚本进行了改进,应用启动脚本执行过程中,除了可以启动应用之外,还可以删除指定路径存储的上述特定文件appisshutdown,以表明应用为正常重启状态,不再是非正常关停状态。例如,改进应用启动脚本的方式可以是在原有应用启动脚本的逻辑基础上增加如下内容:
具体实施时,改进应用关停脚本和应用启动脚本之后,则可以基于特定文件通过以下步骤判断出待检测应用是否为非正常关停,例如,执行所述自检测脚本的过程中判断出所述指定路径未存储所述特定文件,且所述待检测应用的进程为不存活状态时,即此时待检测应用的进程为不存活且不属于手动调用应用关停脚本关停应用,说明应用为意外原因服务停止,则判断出所述待检测应用为非正常关停;判断出所述指定路径存储有所述特定文件时,此时说明属于手动调用应用关停脚本关停应用,则判断出所述待检测应用为正常关停。当判断出指定路径未存储有特定文件且待检测应用的进程为存活状态,则说明应用为服务正常。
具体实施时,针对分布式应用或微服务应用的场景,由于应用往往需要在注册中心进行注册,为了上述软件***的维护方法可以用于分布式应用或微服务应用的场景,在本实施例中,上述自检测脚本还可以根据待检测应用的不同状态对应用在注册中心进行自动摘除和注册。例如,当判断出所述待检测应用的进程为存活状态,执行所述自检测脚本判断所述待检测应用在注册中心是否存在,若否,说明待检测应用未在注册中心注册,则根据所述配置文件中的服务注册脚本全路径调用服务注册脚本,执行所述服务注册脚本将所述待检测应用在所述注册中心中注册;若是,说明待检测应用已在注册中心注册,则跳过本次检测。
当判断出所述待检测应用为正常关停或非正常关停,执行所述自检测脚本判断所述待检测应用在注册中心是否存在,若是,说明待检测应用已在注册中心注册,则根据所述配置文件中的服务摘除脚本全路径调用服务摘除脚本,执行所述服务摘除脚本将所述待检测应用在所述注册中心中摘除,进而再进行应用重启过程,应用重启后对应用在注册中心进行注册;若否,说明待检测应用未在注册中心注册,则跳过本次检测。
具体实施时,注册中心,在微服务架构中,各个微服务在启动时,将自己的网络地址等信息注册到注册中心,注册中心存储这些数据。服务消费者从注册中心查询服务提供者的地址,并通过该地址调用服务提供者的接口。各个微服务与注册中心使用一定机制(例如心跳)通信。如果注册中心与某微服务长时间无法通信,就会注销该实例。
具体实施时,所述注册中心可以为zookeeper。
具体的,zookeeper是一种常用的注册中心实现技术。具体来讲,zooeeper是一个分布式的、开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致***的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
具体实施时,执行所述服务注册脚本将所述待检测应用在所述注册中心中注册的过程可以是:执行所述服务注册脚本在所述注册中心中写入所述待检测应用的相关信息;
执行所述服务摘除脚本将所述待检测应用在所述注册中心中摘除的过程可以是:执行所述服务摘除脚本在所述注册中心中删除所述待检测应用的相关信息。
具体实施时,上述软件***的维护方法基于自动检测脚本可以进行应用的服务状态检测、服务注册及摘除的机制,服务注册及摘除可根据注册中心的具体实现技术进行调整和扩展。
具体实施时,以下结合图3来详细描述实施上述软件***的维护方法的过程,该过程包括以下步骤:
301.编写自检测脚本的配置文件,设置应用的进程关键字、应用启动脚本文件全路径、应用关停脚本文件全路径、日志文件路径等信息;
302.调整应用关停脚本,在原有逻辑基础上增加内容,使得应用关停脚本的调用为手动调用时,在指定路径存储特定文件:
303.调整应用启动脚本,在原有逻辑基础上增加内容,使得执行所述应用启动脚本时删除所述指定路径存储的所述特定文件:
304.编写自动检测脚本,实现自动检测脚本自动检测应用状态、自动启动应用、自动关停应用,自动注册和摘除等逻辑,具体如下:
判断指定路径下是否存在特定文件appisshutdown,如果存在,说明应用是通过手动调用应用关停脚本方式正常关停的,此时,判断应用在注册中心是否存在,如果应用在注册中心中存在,则需要调用服务摘除脚本,将应用节点在注册中心中进行摘除;否则,直接跳出本轮检测。
如果指定路径下不存在特定文件appisshutdown,则根据配置文件中的进程关键字及curl命令访问应用URL的响应状态来判断应用进程是否为存活状态,如果为存活状态,则说明应用状态正常,此时,再去判断该应用在注册中心是否存在,如果存在,即应用已注册,则跳过本次检测;如果不存在,即应用未注册,则调用服务注册脚本,将应用节点在注册中心中进行注册;
如果进程为不存活状态,说明程序意外宕机,属于非正常关停,这种情况下,会先判断应用在注册中心是否存在,如果存在,即应用已注册,需要调用服务摘除脚本将应用节点在注册中心中摘除。
然后调用配置文件中的应用关停脚本,先使应用正常关停,然后再调用配置文件中的应用启动脚本,使应用正常启动,应用正常启动后,还需调用服务注册脚本将应用在注册中心进行注册。
305.通过crontab设置定时任务,定时调用步骤304中的自动检测脚本。
可以根据业务场景实际需求,通过调整crantab表达式灵活配置自动检测的执行周期及日志输出目录。
具体实施时,上述软件***的维护方法不仅可以用于单机应用的自动检测和高可用,也支持集群环境的自动检测和高可用。通过将进程关键字调整为负载均衡器相关的进程,可以实现负载均衡器的自动检测和恢复,为其提供了高可用保障。无论是普通应用、微服务、还是负载均衡中间件或是其他需要自恢复的场景,均可利用上述软件***的维护方法实现应用状态自动检测和恢复。上述软件***的维护方法实现的高可用方案与业务解耦,对开发人员及客户是无感知的,还可以支持分布式或微服务场景下服务节点的自动摘除和注册。
在本实施例中,提供了一种计算机设备,如图4所示,包括存储器402、处理器404及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意的软件***的维护方法。
具体的,该计算机设备可以是计算机终端、服务器或者类似的运算装置。
在本实施例中,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述任意的软件***的维护方法的计算机程序。
具体的,计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机可读存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读存储介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
基于同一发明构思,本发明实施例中还提供了一种软件***的维护装置,如下面的实施例所述。由于软件***的维护装置解决问题的原理与软件***的维护方法相似,因此软件***的维护装置的实施可以参见软件***的维护方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是本发明实施例的软件***的维护装置的一种结构框图,如图5所示,该装置包括:
检测模块502,用于调用自检测脚本,执行所述自检测脚本根据配置文件中的进程关键字判断待检测应用的进程是否为存活状态;
维护模块504,用于判断出所述待检测应用的进程为不存活状态,且判断出所述待检测应用为非正常关停,则根据所述配置文件中的应用关停脚本全路径调用应用关停脚本,执行所述应用关停脚本来关停所述待检测应用,并根据所述配置文件中的应用启动脚本全路径调用应用启动脚本,执行所述应用启动脚本来启动所述待检测应用。
在一个实施例中,检测模块,包括:
存活状态检测单元,用于根据所述配置文件中的进程关键字确定待检测应用;通过访问命令访问所述待检测应用,接收到正确的响应状态时,判断出所述待检测应用的进程为存活状态,否则,判断出待检测应用的进程为不存活状态。
在一个实施例中,维护模块,包括:
关停单元,用于执行所述应用关停脚本判断出所述应用关停脚本的调用为手动调用时,在指定路径存储特定文件;
启动单元,用于执行所述应用启动脚本删除所述指定路径存储的所述特定文件;
判断出所述待检测应用为非正常关停,包括:
关停状态检测单元,用于判断出所述指定路径未存储所述特定文件,且所述待检测应用的进程为不存活状态时,则判断出所述待检测应用为非正常关停;判断出所述指定路径存储有所述特定文件时,则判断出所述待检测应用为正常关停。
在一个实施例中,维护模块,还包括:
服务注册单元,用于当判断出所述待检测应用的进程为存活状态,执行所述自检测脚本判断所述待检测应用在注册中心是否存在,若否,根据所述配置文件中的服务注册脚本全路径调用服务注册脚本,执行所述服务注册脚本将所述待检测应用在所述注册中心中注册;
服务摘除单元,用于当判断出所述待检测应用为正常关停或非正常关停,执行所述自检测脚本判断所述待检测应用在注册中心是否存在,若是,根据所述配置文件中的服务摘除脚本全路径调用服务摘除脚本,执行所述服务摘除脚本将所述待检测应用在所述注册中心中摘除。
在一个实施例中,服务注册单元,包括:
服务注册子单元,用于执行所述服务注册脚本在所述注册中心中写入所述待检测应用的相关信息;
服务摘除单元,包括:
服务摘除子单元,用于执行所述服务摘除脚本在所述注册中心中删除所述待检测应用的相关信息。
在一个实施例中,所述注册中心为zookeeper。
在一个实施例中,检测模块,包括:
调用单元,用于通过crontab设置定时任务,根据定时任务调用自检测脚本。
本发明实施例实现了如下技术效果:提出了基于自检测脚本检测待检测应用的进程的存活状态,当判断出待检测应用的进程为不存活状态,且判断出待检测应用为非正常关停,则根据配置文件中的应用关停脚本全路径调用应用关停脚本,执行应用关停脚本来关停待检测应用,实现待检测应用的正常关停,并根据配置文件中的应用启动脚本全路径调用应用启动脚本,执行所应用启动脚本来启动待检测应用,实现待检测应用的正常启动。与现有技术中依靠负载均衡服务器提供心跳检测机制来维护软件***的技术方案相比,实现了通过自检测脚本自动检测应用的存活状态、关停状态的检测机制,并基于应用关停脚本和应用启动脚本自动实现了应用的正常启动,即实现了应用的自恢复,有利于保证信息***的高可用性,同时,该维护方式操作便捷,无需增加额外的高可用服务器,有利于降低成本。
虽然本发明提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本领域技术人员应明白,本说明书的实施例可提供为方法、装置(***)或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。本发明并不局限于任何单一的方面,也不局限于任何单一的实施例,也不局限于这些方面和/或实施例的任意组合和/或置换。而且,可以单独使用本发明的每个方面和/或实施例或者与一个或更多其他方面和/或其实施例结合使用。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
Claims (16)
1.一种软件***的维护方法,其特征在于,包括:
调用自检测脚本,执行所述自检测脚本根据配置文件中的进程关键字判断待检测应用的进程是否为存活状态;
若否,且判断出所述待检测应用为非正常关停,则根据所述配置文件中的应用关停脚本全路径调用应用关停脚本,执行所述应用关停脚本来关停所述待检测应用,并根据所述配置文件中的应用启动脚本全路径调用应用启动脚本,执行所述应用启动脚本来启动所述待检测应用。
2.如权利要求1所述的软件***的维护方法,其特征在于,判断待检测应用的进程是否为存活状态,包括:
根据所述配置文件中的进程关键字确定待检测应用;
通过访问命令访问所述待检测应用,接收到正确的响应状态时,判断出所述待检测应用的进程为存活状态,否则,判断出待检测应用的进程为不存活状态。
3.如权利要求1所述的软件***的维护方法,其特征在于,还包括:
执行所述应用关停脚本判断出所述应用关停脚本的调用为手动调用时,在指定路径存储特定文件;
执行所述应用启动脚本删除所述指定路径存储的所述特定文件;
判断出所述待检测应用为非正常关停,包括:
执行所述自检测脚本的过程中判断出所述指定路径未存储所述特定文件,且所述待检测应用的进程为不存活状态时,则判断出所述待检测应用为非正常关停;判断出所述指定路径存储有所述特定文件时,则判断出所述待检测应用为正常关停。
4.如权利要求3所述的软件***的维护方法,其特征在于,还包括:
当判断出所述待检测应用的进程为存活状态,执行所述自检测脚本判断所述待检测应用在注册中心是否存在,若否,根据所述配置文件中的服务注册脚本全路径调用服务注册脚本,执行所述服务注册脚本将所述待检测应用在所述注册中心中注册;
当判断出所述待检测应用为正常关停或非正常关停,执行所述自检测脚本判断所述待检测应用在注册中心是否存在,若是,根据所述配置文件中的服务摘除脚本全路径调用服务摘除脚本,执行所述服务摘除脚本将所述待检测应用在所述注册中心中摘除。
5.如权利要求4所述的软件***的维护方法,其特征在于,
执行所述服务注册脚本将所述待检测应用在所述注册中心中注册,包括:
执行所述服务注册脚本在所述注册中心中写入所述待检测应用的相关信息;
执行所述服务摘除脚本将所述待检测应用在所述注册中心中摘除,包括:
执行所述服务摘除脚本在所述注册中心中删除所述待检测应用的相关信息。
6.如权利要求4所述的软件***的维护方法,其特征在于,所述注册中心为zookeeper。
7.如权利要求1至6中任一项所述的软件***的维护方法,其特征在于,调用自检测脚本,包括:
通过crontab设置定时任务,根据定时任务调用自检测脚本。
8.一种软件***的维护装置,其特征在于,包括:
检测模块,用于调用自检测脚本,执行所述自检测脚本根据配置文件中的进程关键字判断待检测应用的进程是否为存活状态;
维护模块,用于判断出所述待检测应用的进程为不存活状态,且判断出所述待检测应用为非正常关停,则根据所述配置文件中的应用关停脚本全路径调用应用关停脚本,执行所述应用关停脚本来关停所述待检测应用,并根据所述配置文件中的应用启动脚本全路径调用应用启动脚本,执行所述应用启动脚本来启动所述待检测应用。
9.如权利要求8所述的软件***的维护装置,其特征在于,检测模块,包括:
存活状态检测单元,用于根据所述配置文件中的进程关键字确定待检测应用;通过访问命令访问所述待检测应用,接收到正确的响应状态时,判断出所述待检测应用的进程为存活状态,否则,判断出待检测应用的进程为不存活状态。
10.如权利要求8所述的软件***的维护装置,其特征在于,维护模块,包括:
关停单元,用于执行所述应用关停脚本判断出所述应用关停脚本的调用为手动调用时,在指定路径存储特定文件;
启动单元,用于执行所述应用启动脚本删除所述指定路径存储的所述特定文件;
判断出所述待检测应用为非正常关停,包括:
关停状态检测单元,用于判断出所述指定路径未存储所述特定文件,且所述待检测应用的进程为不存活状态时,则判断出所述待检测应用为非正常关停;判断出所述指定路径存储有所述特定文件时,则判断出所述待检测应用为正常关停。
11.如权利要求10所述的软件***的维护装置,其特征在于,维护模块,还包括:
服务注册单元,用于当判断出所述待检测应用的进程为存活状态,执行所述自检测脚本判断所述待检测应用在注册中心是否存在,若否,根据所述配置文件中的服务注册脚本全路径调用服务注册脚本,执行所述服务注册脚本将所述待检测应用在所述注册中心中注册;
服务摘除单元,用于当判断出所述待检测应用为正常关停或非正常关停,执行所述自检测脚本判断所述待检测应用在注册中心是否存在,若是,根据所述配置文件中的服务摘除脚本全路径调用服务摘除脚本,执行所述服务摘除脚本将所述待检测应用在所述注册中心中摘除。
12.如权利要求11所述的软件***的维护装置,其特征在于,服务注册单元,包括:
服务注册子单元,用于执行所述服务注册脚本在所述注册中心中写入所述待检测应用的相关信息;
服务摘除单元,包括:
服务摘除子单元,用于执行所述服务摘除脚本在所述注册中心中删除所述待检测应用的相关信息。
13.如权利要求11所述的软件***的维护装置,其特征在于,所述注册中心为zookeeper。
14.如权利要求8至13中任一项所述的软件***的维护装置,其特征在于,检测模块,包括:
调用单元,用于通过crontab设置定时任务,根据定时任务调用自检测脚本。
15.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的软件***的维护方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至7中任一项所述的软件***的维护方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110351857.8A CN113076246A (zh) | 2021-03-31 | 2021-03-31 | 软件***的维护方法、装置、计算机设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110351857.8A CN113076246A (zh) | 2021-03-31 | 2021-03-31 | 软件***的维护方法、装置、计算机设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113076246A true CN113076246A (zh) | 2021-07-06 |
Family
ID=76614582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110351857.8A Pending CN113076246A (zh) | 2021-03-31 | 2021-03-31 | 软件***的维护方法、装置、计算机设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113076246A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113641544A (zh) * | 2021-08-23 | 2021-11-12 | 北京百度网讯科技有限公司 | 用于检测应用状态的方法、装置、设备、介质和产品 |
-
2021
- 2021-03-31 CN CN202110351857.8A patent/CN113076246A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113641544A (zh) * | 2021-08-23 | 2021-11-12 | 北京百度网讯科技有限公司 | 用于检测应用状态的方法、装置、设备、介质和产品 |
CN113641544B (zh) * | 2021-08-23 | 2024-04-26 | 北京百度网讯科技有限公司 | 用于检测应用状态的方法、装置、设备、介质和产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107451147B (zh) | 一种kafka集群动态切换的方法和装置 | |
KR102077898B1 (ko) | 데이터베이스 고장 시의 데이터 저장 | |
CN108038039B (zh) | 记录日志的方法及微服务*** | |
US9880897B2 (en) | Failure mode identification and reporting | |
WO2017016408A1 (zh) | 一种基于服务调用的故障处理方法、装置和*** | |
US20140245077A1 (en) | Providing high availability for state-aware applications | |
CN113204353B (zh) | 一种大数据平台组件部署方法及装置 | |
US11151020B1 (en) | Method and system for managing deployment of software application components in a continuous development pipeline | |
CN114640610B (zh) | 基于云原生的服务治理方法、装置及存储介质 | |
CN113076246A (zh) | 软件***的维护方法、装置、计算机设备及可读存储介质 | |
De Iasio et al. | A framework for microservices synchronization | |
CN112788124B (zh) | 一种遥感影像分布式注册服务方法及装置 | |
CN114691445A (zh) | 集群故障处理方法、装置、电子设备及可读存储介质 | |
CN107301097B (zh) | 一种调用java对象、java对象的引用地址信息的存储方法及装置 | |
CN114064343B (zh) | 一种区块链的异常处置方法及装置 | |
US10552456B2 (en) | Deriving dependency information from tracing data | |
CN116594734A (zh) | 容器迁移方法、装置、存储介质及电子设备 | |
CN113157392B (zh) | 镜像仓库高可用方法及设备 | |
CN116339908A (zh) | 虚拟机启动方法、装置、计算机设备和存储介质 | |
CN112416555B (zh) | 一种客户端重启方法及设备、装置、存储介质 | |
CN111435320B (zh) | 一种数据处理方法及其装置 | |
CN113867776A (zh) | 中台应用的发布方法、装置、电子设备和存储介质 | |
US20230176837A1 (en) | Automated generation of additional versions of microservices | |
CN110321250B (zh) | 一种针对应用的容灾方法及装置 | |
US7536434B1 (en) | Global dynamic persistent information architecture |
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 |