应用程序的健康检查方法及健康检查系统技术方案

技术编号:15103922 阅读:52 留言:0更新日期:2017-04-08 14:21
本发明专利技术提供了一种应用程序的健康检查方法和一种应用程序的健康检查系统,其中,所述应用程序的健康检查方法包括:获取CF平台中的与DEA组件关联的应用程序列表;判断所述应用程序列表中的应用程序是否处于运行状态;当判定所述应用程序处于运行状态时,通过所述DEA组件访问所述应用程序的健康检查接口以启动对所述应用程序的当前健康检查,并生成健康检查结果;将所述健康检查结果反馈至所述DEA组件,以供所述DEA组件根据所述健康检查结果对所述应用程序执行相应操作。该技术方案,可以有效地实现应用程序健康检查的负载均衡,并缩短检测周期、简化健康检查交互过程以及降低运维工作量,同时有效地避免对应用程序健康状态的误判,从而提升用户体验。

【技术实现步骤摘要】

本专利技术涉及计算机
,具体而言,涉及一种应用程序的健康检查方法和一种应用程序的健康检查系统。
技术介绍
目前,CloudFoundry(CF,云平台)提供了Link(连接)机制对App(Application,应用程序)进程进行监控,当进程退出,则Link中断,此时CF的DEA(DropletExecutionAgent,App的运行环境)组件发送crashed(崩溃)消息,CF平台的另一个组件HM(HealthManager,健康管理)负责将该进程重启。然而上述机制只是进程级的监控,当进程没有退出,但应用程序本身出现异常时,DEA无法感知,也就无法及时进行处理,影响了用户体验。而针对上述问题,X3运行平台(eXtraction+eXtension+eXtreme,基于CloudFoundry平台构建,并对CloudFoundry进行了大量改造而实现的,负责整个平台的底层计算资源的管理)提供了一种应用级健康检查机制,具体地,X3运行平台上的每个应用程序都提供了健康检查接口,HM组件周期性从xif(X3Interface,X3接口)组件中获取虚机状态,遍历所有处于running(运行)状态的虚机接口,获取应用程序本身的状态信息,进而根据返回结果,判断虚机是否健康。比如:如果应用程序返回的状态码为200,则表明应用程序本身是健康的;如果返回的状态码为40X或无法访问,则报警,但不处理;如果返回的状态码为50X,则判断应用程序本身出现错误,重启虚机。该相关技术,虽然能够及时发现应用的异常并处理,当仍存在以下不足之处:(1)检查时对DEA组件的压力不均衡。HM组件按xif组件返回的虚机记录发送请求,xif组件并没有记录某个虚机其属于哪一个DEA组件进行组织,因此HM组件发送请求时无法基于DEA组件平均分配请求,存在同时将大量请求发往同一个DEA组件的风险。当接口调用消耗DEA组件资源较多时,存在一定的风险。(2)遍历时间长,实时性不够。为了避免压力多大影响DEA组件的正常运行,HM组件通常将所有处于running状态的虚机分成很多组,每次只对一组虚机进行检查,检查周期与处于running状态的虚机总数成正比。虚机数据越来越多,遍历时间也会越来越长,降低了实时性。(3)交互过程复杂。在整个过程中,组件HM、xif和DEA都要参与,其中一个组件失效,则无法执行对应用程序的健康检查。(4)数据有延迟,可能造成误判。HM组件从xif组件取到某个虚机的数据,到该虚机的接口调用成功,有一定的时间间隔,如果该段时间虚机状态发生变化,则HM组件可能造成误判。例如,HM组件获取虚机信息时,虚机状态为running,在遍历过程中,虚机状态变为suspended(暂停),则HM组件检查到该虚机时,判断虚机无法访问,触发错误报警。综上可知,面临的主要问题包括:(1)健康检查接口响应时间长,2s左右,其风险在于:(a)导致主线程长期阻塞,Heartbeat(虚机心跳消息)中断,而heartbeat中断的后果是HM组件判断虚机丢失,在其他的DEA组件上重启虚机;(b)所有虚机信息存储在instance_registry(存储DEA组件中的所有虚机信息)中,对该数组遍历期间,其他线程无法访问,造成DEA工作异常。(2)处理请求时CPU利用率高,举例来说,对一个DEA组件上10个处于running状态的App同时做健康检查时的CPU(CentralProcessingUnit,中央处理器)利用率,平均一个App的CPU利用率有30%左右,持续时间2到4秒,而处于running状态的App数量越多,健康检查操作所占用的CPU负载越高,可能会影响到其他操作,比如,整体CPU利用率可以按处于running状态的App数量乘以30%来算,当App数量上线达到40时,CPU利用率达到1200%,远高于平均值。因此,如何实现应用程序健康检查的负载均衡,并缩短检测周期、简化健康检查交互过程以及降低运维工作量,同时有效地避免对应用程序健康状态的误判,从而提升用户体验成为亟待解决的技术问题。
技术实现思路
本专利技术正是基于上述技术问题,提出了一种新的技术方案,可以有效地实现应用程序健康检查的负载均衡,并缩短检测周期、简化健康检查交互过程以及降低运维工作量,同时有效地避免对应用程序健康状态的误判,从而提升用户体验。有鉴于此,本专利技术的第一方面,提出了一种应用程序的健康检查方法,包括:获取CF平台中的与DEA组件关联的应用程序列表;判断所述应用程序列表中的应用程序是否处于运行状态;当判定所述应用程序处于运行状态时,通过所述DEA组件访问所述应用程序的健康检查接口以启动对所述应用程序的当前健康检查,并生成健康检查结果;将所述健康检查结果反馈至所述DEA组件,以供所述DEA组件根据所述健康检查结果对所述应用程序执行相应操作。在该技术方案中,当对CF平台的应用程序进行健康状态检查时,首先获取CF平台中的不同的DEA组件的关联的应用程序列表,遍历该应用程序列表中的每个应用程序以确定其状态,对于处于运行状态的应用程序,通过CF平台的DEA组件访问其健康检查接口从而启动对该处于运行状态的应用程序的健康检查,并由DEA组件根据健康检查结果进行相应的处理,如此,通过CF平台的DEA组件发起对应用程序的健康检查,可以有效地实现应用程序健康检查的负载均衡,并缩短检测周期、简化健康检查交互过程以及降低运维工作量,同时有效地避免对应用程序健康状态的误判,从而提升用户体验。在上述技术方案中,优选地,所述DEA组件通过调用转换层访问所述健康检查接口以及获取所述健康检查结果。在该技术方案中,当通过CF平台的DEA组件访问处于运行状态的应用程序的健康检查接口时,具体地,在DEA组件和处于运行状态的应用程序的健康检查接口之间添加一个可在线更新的转换层,将具体的处理逻辑写在该转换层中,以供DEA组件通过该转换层访问处于运行状态的应用程序的健康检查接口并获取健康检查结果,优选地可以通过Shell(壳,是指“提供使用者使用界面”的软件(命令解析器))脚本实现该可在线更新的转换层的工作,如此,可以有效地避免由于将处理逻辑写在DEA组件中,需要在每次应用程序的健康检查接口更新或者判断应用程序状态的逻辑更新时修改DEA代码并重启DEA组件,从而提高服务重量,进一步提升用户体验。在上述任一技本文档来自技高网
...

【技术保护点】
一种应用程序的健康检查方法,其特征在于,包括:获取CF平台中的与DEA组件关联的应用程序列表;判断所述应用程序列表中的应用程序是否处于运行状态;当判定所述应用程序处于运行状态时,通过所述DEA组件访问所述应用程序的健康检查接口以启动对所述应用程序的当前健康检查,并生成健康检查结果;将所述健康检查结果反馈至所述DEA组件,以供所述DEA组件根据所述健康检查结果对所述应用程序执行相应操作。

【技术特征摘要】
1.一种应用程序的健康检查方法,其特征在于,包括:
获取CF平台中的与DEA组件关联的应用程序列表;
判断所述应用程序列表中的应用程序是否处于运行状态;
当判定所述应用程序处于运行状态时,通过所述DEA组件访问所述
应用程序的健康检查接口以启动对所述应用程序的当前健康检查,并生成
健康检查结果;
将所述健康检查结果反馈至所述DEA组件,以供所述DEA组件根据
所述健康检查结果对所述应用程序执行相应操作。
2.根据权利要求1所述的应用程序的健康检查方法,其特征在于,
所述DEA组件通过调用转换层访问所述健康检查接口以及获取所述
健康检查结果。
3.根据权利要求1所述的应用程序的健康检查方法,其特征在于,
在所述DEA组件获取到所述健康检查结果之后以及根据所述健康检查结
果执行相应操作之前,还包括:
再次判断所述应用程序是否处于运行状态;
在判断结果为是时,通过所述DEA组件根据所述健康检查结果对所
述应用程序执行相应操作。
4.根据权利要求1至3中任一项所述应用程序的健康检查方法,其
特征在于,所述健康检查结果包括:正常、有误、致命错误;以及
当所述健康检查结果为正常时,所述DEA组件对所述应用程序不作
处理;
当所述健康检查结果为有误时,所述DEA组件对所述应用程序的错
误提示进行打印操作;
当所述健康检查结果为致命错误时,所述DEA组件对所述应用程序
的错误提示进行打印操作并重新启动所述应用程序。
5.根据权利要求1至3中任一项所述应用程序的健康检查方法,其
特征在于,在所述获取CF平台中的与DEA组件关联的应用程序列表之

\t前,还包括:
判断是否到达进行所述当前健康检查的设定周期,以及所述当前健康
检查的前次健康检查是否结束;
在判定到达所述当前健康检查的所述设定周期且所述前次健康检查已
结束时,获取所述应用程序列表。
6.一种应用程序的健康检查系统,其特征在于,包括:
获取模块,用于获取CF平台中的与DEA组件关联的应用程序列
表;
判...

【专利技术属性】
技术研发人员:李智慧
申请(专利权)人:畅捷通信息技术股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1