微服务状态检测方法、装置、电子设备和存储介质与流程

    专利2022-07-08  73


    本发明涉及计算机软件技术领域,具体而言,涉及一种微服务状态检测方法、装置、电子设备和存储介质。



    背景技术:

    随着计算机软件技术的发展,计算机应用程序的功能越来越强大,也越来越复杂。为了保证应用的开发效率,人们开始采用微服务的方式对应用或者服务进行开发或者更新。微服务可以相当于一个单独的项目,与其他微服务组合在一起实现某种功能,并且其相互之间可以采用不同的存储方式,开发技术、编程语言等,使得应用或者服务的开发更加简单、灵活,效率也更高。

    kubernetes,简称为k8s,是google开源的用于管理容器集群的系统,可为微服务提供自动化部署、调度、维护和集群管理功能。然而,目前的微服务发布系统仅能简单地向k8s集群发送更新版本信息的指令,但是不能准确地判断微服务的发布状态,不利于发布者及时知晓微服务的发布结果。



    技术实现要素:

    有鉴于此,本发明的目的在于提供一种微服务状态检测方法、装置、电子设备和存储介质,能够在kubernetes集群执行微服务发布操作之后,快速并准确地反馈微服务的发布状态,进而使发布者及时知晓微服务的发布结果。

    为了实现上述目的,本发明实施例采用的技术方案如下:

    第一方面,本发明提供一种微服务状态检测方法,所述方法包括:

    在与已执行微服务发布操作的kubernetes集群连接后,获取所述微服务对应的所有容器组的标识信息;

    根据每个所述容器组的标识信息,获取每个所述容器组中的所有容器的标识信息;

    根据每个所述容器的标识信息,获取每个所述容器的版本信息、运行状态信息和重启次数;

    根据每个所述容器的版本信息、运行状态信息和重启次数输出所述微服务的发布状态。

    在可选的实施方式中,所述根据每个所述容器的版本信息、运行状态信息和重启次数输出所述微服务的发布状态的步骤包括:

    若每个所述容器的版本信息均与目标更新版本匹配、每个所述容器的运行状态信息表征所述容器更新成功且每个所述容器的重启次数均为设定值,则输出所述微服务的发布状态正常;

    若存在至少一个容器的版本信息与所述目标更新版本不匹配,或者存在至少一个容器的运行状态信息表征所述容器未更新成功,或者存在至少一个容器的重启次数不为所述设定值,则输出所述微服务的发布状态异常。

    在可选的实施方式中,所述根据每个所述容器的版本信息、运行状态信息和重启次数输出所述微服务的发布状态的步骤包括:

    若每个所述容器的版本信息均与目标更新版本匹配、每个所述容器的运行状态信息表征所述容器更新成功且每个所述容器的重启次数均为设定值,则验证所述微服务对应的接口是否正常;

    若每个所述容器的版本信息均与目标更新版本匹配、每个所述容器的运行状态信息表征所述容器更新成功、每个所述容器的重启次数均为设定值且所述微服务对应的接口正常,则输出所述微服务的发布状态正常;

    若存在至少一个容器的版本信息与所述目标更新版本不匹配,或者存在至少一个容器的运行状态信息表征所述容器未更新成功,或者存在至少一个容器的重启次数不为所述设定值,或者所述微服务对应的接口异常,则输出所述微服务的发布状态异常。

    在可选的实施方式中,每个所述容器的运行状态信息包括第一状态字段、第二状态字段和第三状态字段,若所述第一状态字段的值表征所述容器已完成初始化、所述第二状态字段的值表征所述容器能够提供服务且所述第三状态字段的值表征所述容器已被调度,则判定所述容器更新成功。

    在可选的实施方式中,所述获取所述微服务对应的所有容器组的标识信息的步骤包括:

    获取所述微服务对应的配置信息,所述配置信息中包括所述微服务对应的所有容器组的标识信息。

    第二方面,本发明提供一种微服务状态检测装置,所述装置包括:

    容器组确定模块,用于在与已执行微服务发布操作的kubernetes集群连接后,获取所述微服务对应的所有容器组的标识信息;

    容器确定模块,用于根据每个所述容器组的标识信息,获取每个所述容器组中的所有容器的标识信息;

    容器信息获取模块,用于根据每个所述容器的标识信息,获取每个所述容器的版本信息、运行状态信息和重启次数;

    状态检测模块,用于根据每个所述容器的版本信息、运行状态信息和重启次数输出所述微服务的发布状态。

    在可选的实施方式中,所述状态检测模块用于若每个所述容器的版本信息均与目标更新版本匹配、每个所述容器的运行状态信息表征所述容器更新成功且每个所述容器的重启次数均为设定值,则输出所述微服务的发布状态正常;若存在至少一个容器的版本信息与所述目标更新版本不匹配,或者存在至少一个容器的运行状态信息表征所述容器未更新成功,或者存在至少一个容器的重启次数不为所述设定值,则输出所述微服务的发布状态异常。

    在可选的实施方式中,所述状态检测模块用于若每个所述容器的版本信息均与目标更新版本匹配、每个所述容器的运行状态信息表征所述容器更新成功且每个所述容器的重启次数均为设定值,则验证所述微服务对应的接口是否正常;若每个所述容器的版本信息均与目标更新版本匹配、每个所述容器的运行状态信息表征所述容器更新成功、每个所述容器的重启次数均为设定值且所述微服务对应的接口正常,则输出所述微服务的发布状态正常;若存在至少一个容器的版本信息与所述目标更新版本不匹配,或者存在至少一个容器的运行状态信息表征所述容器未更新成功,或者存在至少一个容器的重启次数不为所述设定值,或者所述微服务对应的接口异常,则输出所述微服务的发布状态异常。

    第三方面,本发明提供一种电子设备,包括处理器和存储器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现前述实施方式任一项所述的方法。

    第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述实施方式任一项所述的方法。

    本发明实施例提供的微服务状态检测方法、装置、电子设备和存储介质,通过在与已执行微服务发布操作的kubernetes集群连接后,获取微服务对应的所有容器组的标识信息,根据每个容器组的标识信息获取每个容器组中的所有容器的标识信息,根据每个容器的标识信息获取每个容器的版本信息、运行状态信息和重启次数,根据每个容器的版本信息、运行状态信息和重启次数输出微服务的发布状态。由于是在kubernetes集群执行微服务发布操作之后,从容器的版本信息、运行状态信息和重启次数等多个维度对微服务状态进行检测,故能够快速并准确地反馈微服务的发布状态,使发布者及时知晓微服务的发布结果,为流程任务一体化的持续发布系统提供精准有效的发布确认机制。

    为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

    附图说明

    为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

    图1示出了适用于本发明实施例的一种应用环境示意图;

    图2示出了本发明实施例提供的电子设备的一种方框示意图;

    图3示出了本发明实施例提供的微服务状态检测方法的一种流程示意图;

    图4示出了本发明实施例提供的微服务状态检测装置的一种功能模块图。

    图标:100-电子设备;200-网络;300-kubernetes集群;600-微服务状态检测装置;101-客户端;110-存储器;120-处理器;130-通信模块;610-容器组确定模块;620-容器确定模块;630-容器信息获取模块;640-状态检测模块。

    具体实施方式

    下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

    因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

    需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

    在实现本发明实施例的技术方案的过程中,经发明人研究发现,在k8s集群执行微服务发布操作之后,无法快速准确地向发布者反馈微服务的发布状态,故常常出现一个微服务滚动发布之后发布者迟迟无法感知发布结果的情况。虽然使用原生的k8sshell及api(applicationprograminterface,应用程序编程接口)提供的命令可以查询微服务对应的deployment(配置)及pod(容器组)的运行状态,但一些场景下,当查询到的pod的运行状态为running(存活)的时候,有可能微服务内部程序正处于不断崩溃重启的循环之中,故通过常规的k8sshell或api提供的命令并不能对微服务发布成功与否进行有效判断,即现有技术缺乏一个能够准确检测微服务发布状态的机制。

    基于对上述缺陷的研究,本发明实施例提出了微服务状态检测方法、装置、电子设备和存储介质,其在执行微服务发布操作之后,从容器的版本信息、运行状态信息和重启次数等多个维度对微服务状态进行检测,从而快速并准确地反馈微服务的发布状态,使发布者及时知晓微服务的发布结果。下面将结合附图具体描述本发明中的各实施例。

    请参照图1,为适用于本发明实施例的一种应用环境示意图。电子设备100可以通过网络200与kubernetes集群300进行通信。kubernetes集群300中可以包括多个节点,微服务运行于各节点上;电子设备100中可安装一客户端101,利用该客户端101与kubernetes集群300中的任一个节点通信,实现对kubernetes集群300中资源对象的访问。其中,电子设备100包括但不限于个人计算机、笔记本电脑、智能手机、平板电脑等。

    请参照图2,是本发明实施例提供的电子设备100的一种方框示意图。电子设备100包括存储器110、处理器120及通信模块130。存储器110、处理器120以及通信模块130各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。

    其中,存储器110用于存储程序或者数据。存储器110可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。

    处理器120用于读/写存储器110中存储的数据或程序,并执行相应地功能。例如,处理器120执行存储器110中存储的计算机程序时,可以实现本发明实施例揭示的微服务状态检测方法。

    通信模块130用于通过网络200建立电子设备100与其它通信终端(如kubernetes集群300中的节点)之间的通信连接,并用于通过网络200收发数据。

    应当理解的是,图2所示的结构仅为电子设备100的结构示意图,电子设备100还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。图2中所示的各组件可以采用硬件、软件或其组合实现。

    本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器120执行时可以实现本发明实施例揭示的微服务状态检测方法。

    请参照图3,为本发明实施例提供的微服务状态检测方法的一种流程示意图。需要说明的是,本发明实施例提供的微服务状态检测方法并不以图3以及以下的具体顺序为限制,应当理解,在其他实施例中,本发明实施例提供的微服务状态检测方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。该微服务状态检测方法可以应用在图1所示的电子设备100中,下面将对图3所示的具体流程进行详细阐述。

    步骤s301,在与已执行微服务发布操作的kubernetes集群连接后,获取微服务对应的所有容器组的标识信息。

    在本实施例中,电子设备100在kubernetes集群300执行微服务发布操作后,可以通过客户端101连接到该kubernetes集群300,并通过该客户端101获取该微服务对应的所有容器组(pod)的标识信息。其中,容器组可以理解为一组容器的集合,一个容器组可以包括一个或者多个容器。该客户端101可以为client-go。

    在本实施例中,该容器组的标识信息可以为容器组的名称等用于唯一标识该容器组的信息,通过获取微服务对应的所有容器组的标识信息,可以确定出该微服务对应哪些pod。例如,该微服务对应三个容器组,该三个容器组的名称分别为pod1、pod2、pod3。

    步骤s302,根据每个容器组的标识信息,获取每个容器组中的所有容器的标识信息。

    在本实施例中,电子设备100在通过客户端101获取所有容器组的标识信息后,遍历每个容器组的标识信息,并利用客户端101再访问kubernetes集群300,以获取每个容器组中的所有容器的标识信息,从而确定每个容器组包括哪些容器。其中,该容器的标识信息可以为容器的名称等用于唯一标识该容器的信息。例如,容器组pod1中包括两个容器,该两个容器的名称分别为docker1、docker2;容器组pod2中包括两个容器,该两个容器的名称分别为docker3、docker4;容器组pod3中包括两个容器,该两个容器的名称分别为docker5、docker6。

    步骤s303,根据每个容器的标识信息,获取每个容器的版本信息、运行状态信息和重启次数。

    在本实施例中,电子设备100在通过客户端101获取每个容器组中的所有容器的标识信息后,遍历每个容器的标识信息,并利用客户端101再访问kubernetes集群300,以获取每个容器对应的版本信息、运行状态信息和重启次数。

    步骤s304,根据每个容器的版本信息、运行状态信息和重启次数输出微服务的发布状态。

    在本实施例中,电子设备100针对获取的每个容器的版本信息、运行状态信息和重启次数进行综合判断,确定出微服务的发布状态,从而给发布者反馈一个直观且准确的发布结果。

    本发明实施例提供的微服务状态检测方法,通过在与已执行微服务发布操作的kubernetes集群300连接后,获取微服务对应的所有容器组的标识信息,根据每个容器组的标识信息获取每个容器组中的所有容器的标识信息,根据每个容器的标识信息获取每个容器的版本信息、运行状态信息和重启次数,根据每个容器的版本信息、运行状态信息和重启次数输出微服务的发布状态。由于是在kubernetes集群300执行微服务发布操作之后,从容器的版本信息、运行状态信息和重启次数等多个维度对微服务状态进行检测,故能够快速并准确地反馈微服务的发布状态,使发布者及时知晓微服务的发布结果,为流程任务一体化的持续发布系统提供精准有效的发布确认机制。

    可选地,上述的步骤s301可以包括:获取微服务对应的配置信息,配置信息中包括微服务对应的所有容器组的标识信息。

    在本实施例中,配置(deployment)信息中预先定义了微服务对应的所有容器组的内容,电子设备100获取该微服务的deployment信息后,通过该deployment信息可以获取微服务对应的所有容器组的标识信息。

    可选地,在一种实施方式中,上述的步骤s304可以包括:若每个容器的版本信息均与目标更新版本匹配、每个容器的运行状态信息表征容器更新成功且每个容器的重启次数均为设定值,则输出微服务的发布状态正常;若存在至少一个容器的版本信息与目标更新版本不匹配,或者存在至少一个容器的运行状态信息表征容器未更新成功,或者存在至少一个容器的重启次数不为设定值,则输出微服务的发布状态异常。

    在本实施例中,该目标更新版本可以理解为新发布的微服务的版本,例如版本v3;当容器的版本信息与目标更新版本不匹配时,表明版本信息未完全更新,该容器发布不成功或发布未完成。该设定值可以为0,当容器的重启次数不为0时,表明该容器还在重启中或者发布未完成。

    在本实施例中,每个容器的运行状态信息包括第一状态字段、第二状态字段和第三状态字段,若第一状态字段的值表征容器已完成初始化、第二状态字段的值表征容器能够提供服务且第三状态字段的值表征容器已被调度,则判定容器更新成功。

    例如,设定第一状态字段为initialized,当某个容器已经完成初始化,则initialized的值会被置为true,否则会被置为false;设定第二状态字段为ready,当某个容器已经可以提供服务,则ready的值会被置为true,否则会被置为false;设定第三状态字段为podscheduled,当某个容器已被调度成功,则podscheduled的值会被置为true,否则会被置为false。因此,对于每个容器的运行状态信息,只有initialized、ready和podscheduled这三个字段的值均为true的情况下,该运行状态信息才表征该容器更新成功;如果不满足initialized、ready和podscheduled这三个字段的值均为true的条件,则表明该容器还在重启中或者发布未完成。

    下面,以微服务对应两个容器组(即pod1和pod2),容器组pod1包括两个容器(docker1和docker2),容器组pod2包括两个容器(docker3和docker4)为例对检测过程进行详细说明。电子设备100从容器组pod1开始,首先获取容器组pod1中的容器docker1的版本信息、运行状态信息和重启次数,当该版本信息与目标更新版本匹配、运行状态信息中的initialized、ready和podscheduled这三个字段的值均为true且重启次数为0,则继续获取容器组pod1中的容器docker2的版本信息、运行状态信息和重启次数,当该版本信息与目标更新版本匹配、运行状态信息中的initialized、ready和podscheduled这三个字段的值均为true且重启次数为0,则继续容器组pod2中的容器docker3的版本信息、运行状态信息和重启次数,当该版本信息与目标更新版本匹配、运行状态信息中的initialized、ready和podscheduled这三个字段的值均为true且重启次数为0,则继续获取容器组pod2中的容器docker4的版本信息、运行状态信息和重启次数,当该版本信息与目标更新版本匹配、运行状态信息中的initialized、ready和podscheduled这三个字段的值均为true且重启次数为0,则输出微服务的发布状态正常,即微服务对应的所有容器的版本信息、运行状态信息和重启次数都符合对应条件的情况下,才会判定该微服务发布成功(微服务更新成功)。相应的,当检测过程中有任何一个容器的版本信息或者运行状态信息或者重启次数不符合对应条件的情况下,将会判定该微服务发布不成功(微服务更新失败),并输出微服务的发布状态异常。

    需要说明的是,在实际应用中,电子设备100在根据每个容器的版本信息、运行状态信息和重启次数输出微服务的发布状态的过程中,对于每个容器的版本信息、运行状态信息和重启次数的检测先后顺序,本实施例可以不进行限制。

    本发明实施例提供的微服务状态检测方法,通过检测微服务对应的所有容器的版本信息是否与目标更新版本匹配,检测所有容器的运行状态信息是否都表征容器更新成功,以及检测所有容器的重启次数是否都为设定值,实现了从容器的版本信息、运行状态信息和重启次数等多个维度对微服务状态进行有效判断,故能够快速并准确地反馈微服务的发布状态,使发布者及时知晓微服务的发布结果。

    可选地,在实际应用中,为了进一步提高微服务的发布状态的检测准确性,可以在微服务对应的所有容器的版本信息、运行状态信息和重启次数都符合对应条件的情况下,进一步验证该微服务的接口调用情况,进而基于容器和微服务的接口的检测结果判定微服务的发布状态。

    基于此,本发明实施例提供了另一种实施方式,即上述的步骤s304可以包括:若每个容器的版本信息均与目标更新版本匹配、每个容器的运行状态信息表征容器更新成功且每个容器的重启次数均为设定值,则验证微服务对应的接口是否正常;若每个容器的版本信息均与目标更新版本匹配、每个容器的运行状态信息表征容器更新成功、每个容器的重启次数均为设定值且微服务对应的接口正常,则输出微服务的发布状态正常;若存在至少一个容器的版本信息与目标更新版本不匹配,或者存在至少一个容器的运行状态信息表征容器未更新成功,或者存在至少一个容器的重启次数不为设定值,或者微服务对应的接口异常,则输出微服务的发布状态异常。

    其中,微服务中对应的所有容器的版本信息、运行状态信息和重启次数的检测过程与前述实施方式一致,此处不再赘述。与前述实施方式的不同之处在于,在微服务对应的所有容器的版本信息、运行状态信息和重启次数都符合对应条件的情况下,不是直接判定该微服务的发布状态正常,而是进一步验证微服务对应的接口是否正常,如果接口是正常的,说明程序已经能够正常提供服务,此时输出微服务的发布状态正常,如果接口是异常的,说明微服务发布不成功,此时输出微服务的发布状态异常。

    本发明实施例提供的微服务状态检测方法,通过检测微服务对应的所有容器的版本信息是否与目标更新版本匹配,检测所有容器的运行状态信息是否都表征容器更新成功,检测所有容器的重启次数是否都为设定值,以及检测微服务对应的接口是否正常,实现了从容器的版本信息、运行状态信息和重启次数,以及微服务的接口调用情况等多个维度对微服务状态进行有效判断,进一步提高了微服务的发布状态的检测准确性。

    为了执行上述实施例及各个可能的方式中的相应步骤,下面给出一种微服务状态检测装置的实现方式。请参阅图4,图4为本发明实施例提供的一种微服务状态检测装置600的功能模块图。需要说明的是,本实施例所提供的微服务状态检测装置600,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。该微服务状态检测装置600包括容器组确定模块610、容器确定模块620、容器信息获取模块630和状态检测模块640。

    可选地,上述模块可以软件或固件(firmware)的形式存储于图2所示的存储器110中或固化于该电子设备100的操作系统(operatingsystem,os)中,并可由图2中的处理器120执行。同时,执行上述模块所需的数据、程序的代码等可以存储在存储器110中。

    该容器组确定模块610,用于在与已执行微服务发布操作的kubernetes集群300连接后,获取微服务对应的所有容器组的标识信息。

    其中,该容器组确定模块610具体用于获取微服务对应的配置信息,配置信息中包括微服务对应的所有容器组的标识信息。

    可以理解,该容器组确定模块610可以执行上述步骤s301。

    该容器确定模块620,用于根据每个容器组的标识信息,获取每个容器组中的所有容器的标识信息。

    可以理解,该容器确定模块620可以执行上述步骤s302。

    该容器信息获取模块630,用于根据每个容器的标识信息,获取每个容器的版本信息、运行状态信息和重启次数。

    可以理解,该容器信息获取模块630可以执行上述步骤s303。

    该状态检测模块640,用于根据每个容器的版本信息、运行状态信息和重启次数输出微服务的发布状态。

    可以理解,该状态检测模块640可以执行上述步骤s304。

    可选地,在一种实施方式中,该状态检测模块640具体用于若每个容器的版本信息均与目标更新版本匹配、每个容器的运行状态信息表征容器更新成功且每个容器的重启次数均为设定值,则输出微服务的发布状态正常;若存在至少一个容器的版本信息与目标更新版本不匹配,或者存在至少一个容器的运行状态信息表征容器未更新成功,或者存在至少一个容器的重启次数不为设定值,则输出微服务的发布状态异常。

    可选地,在另一种实施方式中,该状态检测模块640用于若每个容器的版本信息均与目标更新版本匹配、每个容器的运行状态信息表征容器更新成功且每个容器的重启次数均为设定值,则验证微服务对应的接口是否正常;若每个容器的版本信息均与目标更新版本匹配、每个容器的运行状态信息表征容器更新成功、每个容器的重启次数均为设定值且微服务对应的接口正常,则输出微服务的发布状态正常;若存在至少一个容器的版本信息与目标更新版本不匹配,或者存在至少一个容器的运行状态信息表征容器未更新成功,或者存在至少一个容器的重启次数不为设定值,或者微服务对应的接口异常,则输出微服务的发布状态异常。

    其中,每个容器的运行状态信息包括第一状态字段、第二状态字段和第三状态字段,该状态检测模块640用于若第一状态字段的值表征容器已完成初始化、第二状态字段的值表征容器能够提供服务且第三状态字段的值表征容器已被调度,则判定容器更新成功。

    本发明实施例提供的微服务状态检测装置600,通过容器组确定模块610在与已执行微服务发布操作的kubernetes集群300连接后,获取微服务对应的所有容器组的标识信息,通过容器确定模块620根据每个容器组的标识信息,获取每个容器组中的所有容器的标识信息,通过容器信息获取模块630根据每个容器的标识信息,获取每个容器的版本信息、运行状态信息和重启次数,通过状态检测模块640根据每个容器的版本信息、运行状态信息和重启次数输出微服务的发布状态。由于是在kubernetes集群300执行微服务发布操作之后,从容器的版本信息、运行状态信息和重启次数等多个维度对微服务状态进行检测,故能够快速并准确地反馈微服务的发布状态,使发布者及时知晓微服务的发布结果,为流程任务一体化的持续发布系统提供精准有效的发布确认机制。

    在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

    另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

    所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

    以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。


    技术特征:

    1.一种微服务状态检测方法,其特征在于,所述方法包括:

    在与已执行微服务发布操作的kubernetes集群连接后,获取所述微服务对应的所有容器组的标识信息;

    根据每个所述容器组的标识信息,获取每个所述容器组中的所有容器的标识信息;

    根据每个所述容器的标识信息,获取每个所述容器的版本信息、运行状态信息和重启次数;

    根据每个所述容器的版本信息、运行状态信息和重启次数输出所述微服务的发布状态。

    2.根据权利要求1所述的方法,其特征在于,所述根据每个所述容器的版本信息、运行状态信息和重启次数输出所述微服务的发布状态的步骤包括:

    若每个所述容器的版本信息均与目标更新版本匹配、每个所述容器的运行状态信息表征所述容器更新成功且每个所述容器的重启次数均为设定值,则输出所述微服务的发布状态正常;

    若存在至少一个容器的版本信息与所述目标更新版本不匹配,或者存在至少一个容器的运行状态信息表征所述容器未更新成功,或者存在至少一个容器的重启次数不为所述设定值,则输出所述微服务的发布状态异常。

    3.根据权利要求1所述的方法,其特征在于,所述根据每个所述容器的版本信息、运行状态信息和重启次数输出所述微服务的发布状态的步骤包括:

    若每个所述容器的版本信息均与目标更新版本匹配、每个所述容器的运行状态信息表征所述容器更新成功且每个所述容器的重启次数均为设定值,则验证所述微服务对应的接口是否正常;

    若每个所述容器的版本信息均与目标更新版本匹配、每个所述容器的运行状态信息表征所述容器更新成功、每个所述容器的重启次数均为设定值且所述微服务对应的接口正常,则输出所述微服务的发布状态正常;

    若存在至少一个容器的版本信息与所述目标更新版本不匹配,或者存在至少一个容器的运行状态信息表征所述容器未更新成功,或者存在至少一个容器的重启次数不为所述设定值,或者所述微服务对应的接口异常,则输出所述微服务的发布状态异常。

    4.根据权利要求2或3所述的方法,其特征在于,每个所述容器的运行状态信息包括第一状态字段、第二状态字段和第三状态字段,若所述第一状态字段的值表征所述容器已完成初始化、所述第二状态字段的值表征所述容器能够提供服务且所述第三状态字段的值表征所述容器已被调度,则判定所述容器更新成功。

    5.根据权利要求1-3任一项所述的方法,其特征在于,所述获取所述微服务对应的所有容器组的标识信息的步骤包括:

    获取所述微服务对应的配置信息,所述配置信息中包括所述微服务对应的所有容器组的标识信息。

    6.一种微服务状态检测装置,其特征在于,所述装置包括:

    容器组确定模块,用于在与已执行微服务发布操作的kubernetes集群连接后,获取所述微服务对应的所有容器组的标识信息;

    容器确定模块,用于根据每个所述容器组的标识信息,获取每个所述容器组中的所有容器的标识信息;

    容器信息获取模块,用于根据每个所述容器的标识信息,获取每个所述容器的版本信息、运行状态信息和重启次数;

    状态检测模块,用于根据每个所述容器的版本信息、运行状态信息和重启次数输出所述微服务的发布状态。

    7.根据权利要求6所述的装置,其特征在于,所述状态检测模块用于若每个所述容器的版本信息均与目标更新版本匹配、每个所述容器的运行状态信息表征所述容器更新成功且每个所述容器的重启次数均为设定值,则输出所述微服务的发布状态正常;若存在至少一个容器的版本信息与所述目标更新版本不匹配,或者存在至少一个容器的运行状态信息表征所述容器未更新成功,或者存在至少一个容器的重启次数不为所述设定值,则输出所述微服务的发布状态异常。

    8.根据权利要求6所述的装置,其特征在于,所述状态检测模块用于若每个所述容器的版本信息均与目标更新版本匹配、每个所述容器的运行状态信息表征所述容器更新成功且每个所述容器的重启次数均为设定值,则验证所述微服务对应的接口是否正常;若每个所述容器的版本信息均与目标更新版本匹配、每个所述容器的运行状态信息表征所述容器更新成功、每个所述容器的重启次数均为设定值且所述微服务对应的接口正常,则输出所述微服务的发布状态正常;若存在至少一个容器的版本信息与所述目标更新版本不匹配,或者存在至少一个容器的运行状态信息表征所述容器未更新成功,或者存在至少一个容器的重启次数不为所述设定值,或者所述微服务对应的接口异常,则输出所述微服务的发布状态异常。

    9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现权利要求1-5任一项所述的方法。

    10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-5任一项所述的方法。

    技术总结
    本发明实施例提出一种微服务状态检测方法、装置、电子设备和存储介质,涉及计算机软件技术领域。在与已执行微服务发布操作的Kubernetes集群连接后,获取微服务对应的所有容器组的标识信息,根据每个容器组的标识信息获取每个容器组中的所有容器的标识信息,根据每个容器的标识信息获取每个容器的版本信息、运行状态信息和重启次数,根据每个容器的版本信息、运行状态信息和重启次数输出微服务的发布状态。由于是在Kubernetes集群执行微服务发布操作之后,从容器的版本信息、运行状态信息和重启次数等多个维度对微服务状态进行检测,故能够快速并准确地反馈微服务的发布状态,使发布者及时知晓微服务的发布结果。

    技术研发人员:蓝小辉;高斌;陈林;杨阳
    受保护的技术使用者:成都新希望金融信息有限公司
    技术研发日:2020.11.27
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-23068.html

    最新回复(0)