一种微服务故障检测处理方法及装置转让专利

申请号 : CN201711368632.3

文献号 : CN108173911B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郭志川赵然朱小勇

申请人 : 中国科学院声学研究所

摘要 :

本发明实施例提供一种微服务故障检测处理方法及装置,所述方法包括:通过微服务管理程序实时监测至少一个终端上的微服务是否出现故障;当监测到所述至少一个终端上的微服务出现故障时,对微服务出现故障的故障终端进行处理和恢复以及采用云端服务器进行协同服务。当终端微服务管理模块检测到单个终端微服务发生故障的时候,可以利用云端服务器进行协同服务,保证在单个终端微服务故障修复期间整个系统仍然能够正常对外提供服务,提高了整个终端微服务系统的可用性,提升了用户体验度。

权利要求 :

1.一种微服务故障检测处理方法,其特征在于,包括:

在云端服务器以及智能终端上部署微服务管理程序;

通过微服务管理程序实时监测至少一个终端上的微服务是否出现故障;

当监测到所述至少一个终端上的微服务出现故障时,对微服务出现故障的故障终端进行处理和恢复以及采用云端服务器进行协同服务;其中,所述对微服务出现故障的故障终端进行处理,包括:

若所述故障终端的故障类型为程序错误故障,则在故障节点启动路由模块,将发送到该节点的微服务请求直接转发到云端服务器上进行处理;

若所述故障终端的故障类型为节点不可达故障,则在终端微服务管理模块中将该微服务的地址由故障节点的地址修改为云端服务器的地址;

所述对微服务出现故障的故障终端进行恢复,包括:

若所述故障终端的故障类型为程序错误故障,则在已修复故障节点关闭路由模块,将发送到该节点的微服务请求直接在该节点上进行处理;

若故障终端的故障类型为节点为不可达故障,则在终端微服务管理模块中将该微服务的地址由云端服务器的地址修改为已修复故障节点的地址;

所述采用云端服务器进行协同服务,包括:

云端服务器根据所述故障终端的故障通知中的微服务类型,启动相应微服务容器来接收对应的终端微服务请求流量;

终端微服务管理根据终端故障类型,选择不同的终端故障处理方法向云端服务器发送微服务请求流量;

当所述故障终端的微服务故障修复后,终端微服务管理根据故障终端的故障类型,选择不同的终端微服务恢复方法将已修复的微服务请求流量导入到所述至少一个终端进行服务;

云端服务器将协同服务期间微服务数据发送到终端微服务管理,关闭云端服务器上的微服务容器,回收相关资源。

2.根据权利要求1所述的方法,其特征在于,所述通过微服务管理程序实时监测至少一个终端上的微服务是否出现故障,包括:所述至少一个终端上的微服务管理程序实时监测每个终端上的微服务容器状态,如果容器状态异常或直接退出,则认为是程序错误故障,其中,节点为可达的状态;

在发送微服务请求的时,若在预设的等待时间内没有收到微服务响应,则在系统内随机通知两个节点向可能发生故障的节点发送微服务测试请求;

若发送的两个微服务测试请求都未收到可能发生故障的节点的响应,则认为该节点确实发生了故障,故障类型为节点不可达;

若发送的两个微服务测试请求中至少有一个收到了可能发生故障的节点的响应,则认为该节点可能并未发生故障,可重新发送正常的微服务请求;

若重新发送的正常的微服务请求在预设等待时间内收到微服务响应,则认为该节点没有发生故障,正常对外提供微服务;

若重新发送的正常的微服务请求在预设等待时间内仍没有收到微服务响应,则认为该节点发生故障,其中,故障类型为节点不可达状态。

3.一种微服务故障检测处理装置,其特征在于,包括:

监测模块,用于通过微服务管理程序实时监测至少一个终端上的微服务是否出现故障;

处理模块,用于当监测到所述至少一个终端上的微服务出现故障时,对微服务出现故障的故障终端进行处理和恢复以及采用云端服务器进行协同服务;其中,所述对微服务出现故障的故障终端进行处理包括:若所述故障终端的故障类型为程序错误故障,则在故障节点启动路由模块,将发送到该节点的微服务请求直接转发到云端服务器上进行处理;若所述故障终端的故障类型为节点不可达故障,则在终端微服务管理模块中将该微服务的地址由故障节点的地址修改为云端服务器的地址;

所述对微服务出现故障的故障终端进行恢复包括:若所述故障终端的故障类型为程序错误故障,则在已修复故障节点关闭路由模块,将发送到该节点的微服务请求直接在该节点上进行处理;若故障终端的故障类型为节点为不可达故障,则在终端微服务管理模块中将该微服务的地址由云端服务器的地址修改为已修复故障节点的地址;

根据所述故障终端的故障通知中的微服务类型,启动相应微服务容器来接收对应的终端微服务请求流量;根据终端故障类型,选择不同的终端故障处理装置向云端服务器发送微服务请求流量当所述故障终端的微服务故障修复后,终端微服务管理根据故障终端的故障类型,选择不同的终端微服务恢复装置将已修复的微服务请求流量导入到所述至少一个终端进行服务;云端服务器将协同服务期间微服务数据发送到终端微服务管理,关闭云端服务器上的微服务容器,回收相关资源。

4.根据权利要求3所述的装置,其特征在于,所述监测模块,用于实时监测每个终端上的微服务容器状态,如果容器状态异常或直接退出,则认为是程序错误故障,其中,节点为可达的状态;在发送微服务请求的时,若在预设的等待时间内没有收到微服务响应,则在系统内随机通知两个节点向可能发生故障的节点发送微服务测试请求;若发送的两个微服务测试请求都未收到可能发生故障的节点的响应,则认为该节点确实发生了故障,故障类型为节点不可达;若发送的两个微服务测试请求中至少有一个收到了可能发生故障的节点的响应,则认为该节点可能并未发生故障,可重新发送正常的微服务请求;若重新发送的正常的微服务请求在预设等待时间内收到微服务响应,则认为该节点没有发生故障,正常对外提供微服务;若重新发送的正常的微服务请求在预设等待时间内仍没有收到微服务响应,则认为该节点发生故障,其中,故障类型为节点不可达状态。

说明书 :

一种微服务故障检测处理方法及装置

技术领域

[0001] 本发明实施例涉及计算机处理领域,尤其涉及一种微服务故障检测处理方法及装置。

背景技术

[0002] 微服务是一种近年来越来越流行的新兴的软件服务架构,是采用一小组服务来构建一个整体应用的方法,每个服务运行在独立的进程中,不同服务通过一些轻量级交互机制来通信。
[0003] 随着计算机技术的不断发展,人工智能、边缘计算、物联网等技术与智能终端的结合越来越紧密,智能终端上要承担的计算任务越来越重。由于智能终端上的资源是分散的,所以越来越多的智能终端服务会选择容器化微服务这一非常符合智能终端特点的服务架构。
[0004] 微服务将整体的终端服务拆分成一组微服务,分别部署在不同的智能终端上面。由于微服务之间存在大量的依赖关系,如果系统中的某一个终端或终端上的微服务发生故障,整个系统对外提供服务的能力会受到很大影响,在故障修复之前用户不能正常收到服务响应,用户体验会迅速下降。
[0005] 因此,如何检测处理终端容器化微服务故障,以保证系统在某个终端或终端上的微服务发生故障的时候仍然能够稳定地为用户提供服务,保持高可用性,提高用户体验,是本领域技术人员需要解决的问题。

发明内容

[0006] 本发明实施例提供一种微服务故障检测处理方法及装置,以解决如何检测处理终端容器化微服务故障,以保证系统在某个终端或终端上的微服务发生故障的时候仍然能够稳定地为用户提供服务,保持高可用性,提高用户体验的问题。
[0007] 第一方面,本发明实施例提供一种微服务故障检测处理方法,包括:
[0008] 通过微服务管理程序实时监测至少一个终端上的微服务是否出现故障;
[0009] 当监测到所述至少一个终端上的微服务出现故障时,对微服务出现故障的故障终端进行处理和恢复以及采用云端服务器进行协同服务。
[0010] 在一个可能的实施方式中,所述采用云端服务器进行协同服务,包括:
[0011] 云端服务器根据所述故障终端的故障通知中的微服务类型,启动相应微服务容器来接收对应的终端微服务请求流量;
[0012] 终端微服务管理根据终端故障类型,选择不同的终端故障处理方法向云端服务器发送微服务请求流量
[0013] 当所述故障终端的微服务故障修复后,终端微服务管理根据故障终端的故障类型,选择不同的终端微服务恢复方法将已修复的微服务请求流量导入到所述至少一个终端进行服务;
[0014] 云端服务器将协同服务期间微服务数据发送到终端微服务管理,关闭云端服务器上的微服务容器,回收相关资源。
[0015] 在一个可能的实施方式中,所述对微服务出现故障的故障终端进行处理,包括:
[0016] 若所述故障终端的故障类型为程序错误故障,则在故障节点启动路由模块,将发送到该节点的微服务请求直接转发到云端服务器上进行处理;
[0017] 若所述故障终端的故障类型为节点不可达故障,则在终端微服务管理模块中将该微服务的地址由故障节点的地址修改为云端服务器的地址。
[0018] 在一个可能的实施方式中,所述对微服务出现故障的故障终端进行恢复,包括:
[0019] 若所述故障终端的故障类型为程序错误故障,则在已修复故障节点关闭路由模块,将发送到该节点的微服务请求直接在该节点上进行处理;
[0020] 若故障终端的故障类型为节点为不可达故障,则在终端微服务管理模块中将该微服务的地址由云端服务器的地址修改为已修复故障节点的地址。
[0021] 在一个可能的实施方式中,所述通过微服务管理程序实时监测至少一个终端上的微服务是否出现故障,包括:
[0022] 所述至少一个终端上的微服务管理程序实时监测每个终端上的微服务容器状态,如果容器状态异常或直接退出,则认为是程序错误故障,其中,节点为可达的状态;
[0023] 在发送微服务请求的时,若在预设的等待时间内没有收到微服务响应,则在系统内随机通知两个节点向可能发生故障的节点发送微服务测试请求;
[0024] 若发送的两个微服务测试请求都未收到可能发生故障的节点的响应,则认为该节点确实发生了故障,故障类型为节点不可达;
[0025] 若发送的两个微服务测试请求中至少有一个收到了可能发生故障的节点的响应,则认为该节点可能并未发生故障,可重新发送正常的微服务请求;
[0026] 若重新发送的正常的微服务请求在预设等待时间内收到微服务响应,则认为该节点没有发生故障,正常对外提供微服务;
[0027] 若重新发送的正常的微服务请求在预设等待时间内仍没有收到微服务响应,则认为该节点发生故障,其中,故障类型为节点不可达状态。
[0028] 第二方面,本发明实施例提供一种微服务故障检测处理装置,包括:
[0029] 监测模块,用于通过微服务管理程序实时监测至少一个终端上的微服务是否出现故障;
[0030] 处理模块,用于当监测到所述至少一个终端上的微服务出现故障时,对微服务出现故障的故障终端进行处理和恢复以及采用云端服务器进行协同服务。
[0031] 在一个可能的实施方式中,所述处理模块,用于根据所述故障终端的故障通知中的微服务类型,启动相应微服务容器来接收对应的终端微服务请求流量;根据终端故障类型,选择不同的终端故障处理装置向云端服务器发送微服务请求流量当所述故障终端的微服务故障修复后,终端微服务管理根据故障终端的故障类型,选择不同的终端微服务恢复装置将已修复的微服务请求流量导入到所述至少一个终端进行服务;云端服务器将协同服务期间微服务数据发送到终端微服务管理,关闭云端服务器上的微服务容器,回收相关资源。
[0032] 在一个可能的实施方式中,所述处理模块,用于若所述故障终端的故障类型为程序错误故障,则在故障节点启动路由模块,将发送到该节点的微服务请求直接转发到云端服务器上进行处理;若所述故障终端的故障类型为节点不可达故障,则在终端微服务管理模块中将该微服务的地址由故障节点的地址修改为云端服务器的地址。
[0033] 在一个可能的实施方式中,所述处理模块,用于若所述故障终端的故障类型为程序错误故障,则在已修复故障节点关闭路由模块,将发送到该节点的微服务请求直接在该节点上进行处理;若故障终端的故障类型为节点为不可达故障,则在终端微服务管理模块中将该微服务的地址由云端服务器的地址修改为已修复故障节点的地址。
[0034] 在一个可能的实施方式中,所述监测模块,用于实时监测每个终端上的微服务容器状态,如果容器状态异常或直接退出,则认为是程序错误故障,其中,节点为可达的状态;在发送微服务请求的时,若在预设的等待时间内没有收到微服务响应,则在系统内随机通知两个节点向可能发生故障的节点发送微服务测试请求;若发送的两个微服务测试请求都未收到可能发生故障的节点的响应,则认为该节点确实发生了故障,故障类型为节点不可达;若发送的两个微服务测试请求中至少有一个收到了可能发生故障的节点的响应,则认为该节点可能并未发生故障,可重新发送正常的微服务请求;若重新发送的正常的微服务请求在预设等待时间内收到微服务响应,则认为该节点没有发生故障,正常对外提供微服务;若重新发送的正常的微服务请求在预设等待时间内仍没有收到微服务响应,则认为该节点发生故障,其中,故障类型为节点不可达状态。
[0035] 通过以上方案可知,本发明提供一种微服务故障检测方案,通过在智能终端和云端服务器上部署微服务管理程序,实时检测每个终端上的微服务是否出现故障,并初步判断故障类型,根据不同的故障类型,采取不同的故障处理方法将故障微服务请求的流量导入到云端服务器,利用云端服务器进行协同服务。可见,在本方案中,当终端微服务管理模块检测到单个终端微服务发生故障的时候,可以利用云端服务器进行协同服务,保证在单个终端微服务故障修复期间整个系统仍然能够正常对外提供服务,提高了整个终端微服务系统的可用性,提升了用户体验度。

附图说明

[0036] 图1为本发明实施例提供的一种基于云端协同的智能终端容器化微服务故障检测处理方法的交互示意图;
[0037] 图2为本发明实施例提供的一种智能终端容器化微服务故障检测方法流程图;
[0038] 图3为本发明实施例提供的一种基于云端协同的智能终端容器化微服务故障检测装置的结构示意图。

具体实施方式

[0039] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0040] 为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。
[0041] 在本实施例中,容器技术选择docker,整个系统分成N个微服务,分别部署在N个终端上面,另有一个用于协同服务的服务器部署在云端。
[0042] 图1为本发明实施例提供的一种基于云端协同的智能终端容器化微服务故障检测处理方法的交互示意图。如图1所示,所述方法具体包括:
[0043] S101、在云端服务器上部署微服务管理程序。
[0044] 具体地,云端服务器上的微服务管理程序还应该部署docker引擎,拉取相关微服务镜像,配置微服务运行环境。
[0045] S102、在智能终端上部署微服务管理程序。
[0046] 具体地,在智能终端上的微服务管理程序应具有监控智能终端容器化微服务状态、与其他终端及云端微服务管理程序通过网络通信等功能。
[0047] S103、在智能终端上为用户提供服务。
[0048] S104、智能终端对微服务进行故障检测,若出现故障时,执行S105,否则结束本次流程。
[0049] S105、判断故障类型,并向云端服务器报告终端微服务故障情况。
[0050] S106、云端服务器接收到终端微服务管理程序发送的终端微服务故障情况,启动相应的微服务容器,为终端微服务提供协同服务。
[0051] S107、在云端上为用户提供服务。
[0052] 具体地,智能终端微服务管理程序将发生故障的终端微服务请求流量导入到云端服务器进行服务。
[0053] 优选地,智能终端微服务管理程序根据终端微服务故障类型,选择不同的故障微服务请求流量导入方法。
[0054] 具体地,当故障类型为程序错误故障时,可以在故障节点上启动路由模块,直接将发生故障的终端微服务请求流量转发至云端服务器进行微服务,这样可以不用对系统中的其他终端节点做任何改动,减少额外开销。
[0055] 具体地,当故障类型为节点不可达故障时,通知系统中其他终端节点,在终端微服务管理程序中将该微服务的地址由故障节点的地址修改为云端服务器的地址。
[0056] 当智能终端的故障修复成功时,可执行下述步骤:
[0057] S108、智能终端微服务管理程序向云端服务器报告终端微服务故障修复情况。
[0058] 具体地,智能终端微服务管理程序将该微服务请求流量重新导入到提供该微服务的智能终端。
[0059] 优选地,智能终端微服务管理程序根据终端微服务故障类型,选择不同的故障微服务请求流量恢复方法。
[0060] 具体地,当故障类型为程序错误故障时,可以在故障节点上关闭路由模块,直接在已修复的智能终端进行微服务,这样可以不用对系统中的其他终端节点做任何改动,减少额外开销。
[0061] 具体地,当故障类型为节点不可达故障时,通知系统中其他终端节点,在终端微服务管理程序中将该微服务的地址由云端服务器的地址修改为故障节点的地址。
[0062] S109、将云端服务请求流量恢复到智能终端。
[0063] S110、智能终端提供微服务。
[0064] S111、关闭相应微服务容器。
[0065] 可选地,云端服务器可以将记录下来的协同服务期间接收到的服务请求详细数据发回到对应智能终端,以保证整个服务流程的完整性。
[0066] 本发明通过在智能终端和云端服务器上部署微服务管理程序,实时检测每个终端上的微服务是否出现故障,并初步判断故障类型,根据不同的故障类型,采取不同的故障处理方法将故障微服务请求的流量导入到云端服务器,利用云端服务器进行协同服务,保证在单个终端微服务故障修复期间整个系统仍然能够正常对外提供服务,提高了整个终端微服务系统的可用性,提升了用户体验度。
[0067] 图2为本发明实施例提供的一种智能终端容器化微服务故障检测方法流程图。如图2所示,所述方法具体包括:
[0068] S201、微服务管理程序检测微服务容器是否正常运行,若微服务容器出错或已退出,则执行S202;若微服务容器正常运行,则执行S202。
[0069] S202,微服务管理程序认为该微服务发生程序错误故障。
[0070] S203,微服务管理程序判断微服务是否能够正常响应微服务请求,若正常响应,则执行S204,若不能够正常响应,则执行S203。
[0071] S204,微服务管理程序认为该微服务正常运行,没有发生故障。
[0072] S205,微服务管理程序判断该微服务是否是第一次未收到响应,若是第一次,则执行S206,若不是,则执行S208。
[0073] S206,终端微服务管理程序从系统中随机选择两个终端,向被检测的终端发送微服务测试请求。
[0074] S207,判断被检测的终端是否能够正常返回两个测试请求,若至少有一个测试请求正常返回,则执行S203,若两个测试请求都不能正常返回,则执行S208。
[0075] S208,微服务管理程序该微服务发生节点不可用故障。
[0076] 本发明通过在智能终端和云端服务器上部署微服务管理程序,实时检测每个终端上的微服务是否出现故障,并初步判断故障类型,根据不同的故障类型,采取不同的故障处理方法将故障微服务请求的流量导入到云端服务器,利用云端服务器进行协同服务,保证在单个终端微服务故障修复期间整个系统仍然能够正常对外提供服务,提高了整个终端微服务系统的可用性,提升了用户体验度。
[0077] 图3为本发明实施例提供的一种基于云端协同的智能终端容器化微服务故障检测装置的结构示意图,如图3所示,该装置具体包括:
[0078] 监测模块301,用于通过微服务管理程序实时监测至少一个终端上的微服务是否出现故障;
[0079] 处理模块302,用于当监测到所述至少一个终端上的微服务出现故障时,对微服务出现故障的故障终端进行处理和恢复以及采用云端服务器进行协同服务。
[0080] 可选地,所述处理模块302,用于根据所述故障终端的故障通知中的微服务类型,启动相应微服务容器来接收对应的终端微服务请求流量;根据终端故障类型,选择不同的终端故障处理装置向云端服务器发送微服务请求流量当所述故障终端的微服务故障修复后,终端微服务管理根据故障终端的故障类型,选择不同的终端微服务恢复装置将已修复的微服务请求流量导入到所述至少一个终端进行服务;云端服务器将协同服务期间微服务数据发送到终端微服务管理,关闭云端服务器上的微服务容器,回收相关资源。
[0081] 可选地,所述处理模块302,用于若所述故障终端的故障类型为程序错误故障,则在故障节点启动路由模块,将发送到该节点的微服务请求直接转发到云端服务器上进行处理;若所述故障终端的故障类型为节点不可达故障,则在终端微服务管理模块中将该微服务的地址由故障节点的地址修改为云端服务器的地址。
[0082] 可选地,所述处理模块302,用于若所述故障终端的故障类型为程序错误故障,则在已修复故障节点关闭路由模块,将发送到该节点的微服务请求直接在该节点上进行处理;若故障终端的故障类型为节点为不可达故障,则在终端微服务管理模块中将该微服务的地址由云端服务器的地址修改为已修复故障节点的地址。
[0083] 可选地,所述监测模块301,用于实时监测每个终端上的微服务容器状态,如果容器状态异常或直接退出,则认为是程序错误故障,其中,节点为可达的状态;在发送微服务请求的时,若在预设的等待时间内没有收到微服务响应,则在系统内随机通知两个节点向可能发生故障的节点发送微服务测试请求;若发送的两个微服务测试请求都未收到可能发生故障的节点的响应,则认为该节点确实发生了故障,故障类型为节点不可达;若发送的两个微服务测试请求中至少有一个收到了可能发生故障的节点的响应,则认为该节点可能并未发生故障,可重新发送正常的微服务请求;若重新发送的正常的微服务请求在预设等待时间内收到微服务响应,则认为该节点没有发生故障,正常对外提供微服务;若重新发送的正常的微服务请求在预设等待时间内仍没有收到微服务响应,则认为该节点发生故障,其中,故障类型为节点不可达状态。
[0084] 本发明通过在智能终端和云端服务器上部署微服务管理程序,实时检测每个终端上的微服务是否出现故障,并初步判断故障类型,根据不同的故障类型,采取不同的故障处理方法将故障微服务请求的流量导入到云端服务器,利用云端服务器进行协同服务,保证在单个终端微服务故障修复期间整个系统仍然能够正常对外提供服务,提高了整个终端微服务系统的可用性,提升了用户体验度。
[0085] 专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。
专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0086] 结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0087] 以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。