一种分布式系统故障根源的诊断方法与流程

文档序号:18464093发布日期:2019-08-17 02:17阅读:695来源:国知局
一种分布式系统故障根源的诊断方法与流程

本发明计算机科学软件信息技术领域,具体涉及一种分布式系统故障根源的诊断方法。



背景技术:

分布式系统是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。而分布式系统的故障会发生在各种模块上。

针对分布式系统,人工诊断故障根源的时候,运维工程师往往是根据脑子里的模块调用关系图来排查系统。很多时候,故障都是因为在最上游的前端模块上看到了很多失败的请求发现的。这时,运维工程师就会沿着a往下查。因为a调用了b模块,所以需要查看b的指标,如果有指标异常那么就怀疑是b导致了故障。然后再检查b的直接下游模块c,以此类推。在这个过程中,运维工程师的怀疑通过模块的调用关系不断往下传递,直到传不下去为止。

人工诊断方式,要求运维工程师有业务专业知识,能识别业务异常,同时人工诊断方式不能满足快速定位、解决问题的运维场景。



技术实现要素:

针对现有技术中的缺陷,本发明提供一种分布式系统故障根源的诊断方法,降低运维人员对业务专业知识的依赖,解决人工定位问题难、定位问题慢的问题。

为了解决上述技术问题,本发明采用了如下的技术方案:

一种分布式系统故障根源的诊断方法,其特征在于,包括以下步骤:

构建所述分布式系统的调用图;

基于所述调用图,查找所述故障根源。

可选地,所述构建所述分布式系统的调用图包括:

将所述分布式系统中各模块间的调用关系构建成调用图。

可选地,将所述调用图存储于数据库中。

可选地,所述数据库为图数据库。

可选地,所述基于所述调用图,查找所述故障根源包括:

将分布式系统的异常标注在所述调用图的图节点上,形成异常传播图。

可选地,所述基于所述调用图,查找所述故障根源还包括:

在所述异常传播图中查找故障根源。

可选地,所述方法还包括:

将所述故障根源展示在界面上。

可选地,基于随机游走算法查找所述故障根源。

可选地,将所述故障根源展示在界面上包括局部故障根源展示。

可选地,将所述故障根源展示在界面上包括全局故障根源展示。

可选地,所述局部故障根源展示的具体方法为:输入异常模块的模块名,对所述异常模块的下游模块进行故障查询并展示。

可选地,所述全局故障根源展示的具体方法为:对所有异常模块的下游模块进行故障查询并展示。

这样,用户可以在前端界面看到所有异常模块的故障根源。

本发明的有益效果体现在:本发明通过自动化构建异常传播图,通过随机游走算法模拟人工寻找异常根源的过程,降低了人为误差,降低了运维排查故障的时间,提高故障解决的效率,提高了线上整体运维质量。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。

图1为本发明某一实施例所述一种分布式系统故障根源的诊断方法的方法流程图;

图2为本发明另一实施例所述一种分布式系统故障根源的诊断方法的方法流程图;

图3为调用图的示例图。

具体实施方式

下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。

需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。

如图1所示,一种分布式系统故障根源的诊断方法,包括以下步骤:

一种分布式系统故障根源的诊断方法,其特征在于,包括以下步骤:

构建所述分布式系统的调用图;

基于所述调用图,查找所述故障根源。

可选地,所述构建所述分布式系统的调用图包括:

将所述分布式系统中各模块间的调用关系构建成调用图。

可选地,将所述调用图存储于数据库中。

可选地,所述数据库为图数据库。

可选地,所述基于所述调用图,查找所述故障根源包括:

将分布式系统的异常标注在所述调用图的图节点上,形成异常传播图。

可选地,所述基于所述调用图,查找所述故障根源还包括:

在所述异常传播图中查找故障根源。

可选地,所述方法还包括:

将所述故障根源展示在界面上。

可选地,基于随机游走算法查找所述故障根源。

可选地,将所述故障根源展示在界面上包括局部故障根源展示。

可选地,将所述故障根源展示在界面上包括全局故障根源展示。

可选地,所述局部故障根源展示的具体方法为:输入异常模块的模块名,对所述异常模块的下游模块进行故障查询并展示。

可选地,所述全局故障根源展示的具体方法为:对所有异常模块的下游模块进行故障查询并展示。

如图2所示,一种分布式系统故障根源的诊断方法,包括以下步骤:

s1、将分布式系统模块间的调用关系构建成调用图并存储于数据库中。

本实施例中,数据库为图数据库。对分布式远程过程调用框架进行改造,上传调用关系到消息队列,然后通过消费消息,获得系统的模块间的调用关系,以系统模块为顶点,关系为有向边,形成一张有向图,通过图数据进行存储。这里的模块就是系统工程。

图3是调用图的示例图,每个点就是一个模块,模块之间的有向箭头就是模块之间的调用关系。有箭头的点是被调用的模块。

s2、将分布式系统的异常标注在调用图的图节点上,形成异常传播图。

然后针对每个模块是否发生报警,给模块顶点增加“是/否”属性,从而形成一张异常传播图。有异常为“是”,没有异常为“否”。

s3、在异常传播图中找寻故障根源。

本实施例中,针对异常传播图,模拟人工寻找根源的过程,找寻故障根源的算法为随机游走算法。具体为:模拟n个人,每个人在异常传播图的任意异常模块顶点,然后各自往下查找异常模块,直到不能继续往下为止,然后对所有经过的顶点进行计数,只要模拟的人走过一次,就计数加1,最终给出走过次数最多的排名列表,它们即认为是可能的故障根源。

例如:从一个异常节点,往下查询异常模块的过程:

定义a为上游异常模块,b、c、d为下游异常模块,定义b、c、d的报错次数为它们的异常程度,报错越多,异常程度越大。

s4、将故障根源展示在界面上。

本实施例中,展示方法包括局部故障根源展示和全局故障根源展示。具体为:

运维工程师通过前端界面查看故障根源,分为局部故障根源和全局故障根源,局部故障根源需要输入特定的模块名,对该模块的异常进行故障定位,即模拟的人只在该模块相关的异常路径进行游走;全局故障根源,对系统当前整体的故障进行定位,即模拟的人在所有的异常路径进行游走。

即,当系统出现故障,通过步骤s1-s3找到故障,通过步骤s4展示故障根源,展示故障根源的方法分为展示全局故障根源和展示局部故障根源。展示全局故障根源即展示标记为有故障的应用,此时,所有标记为有故障的应用按照随机游走算法查找故障源并展示出来;展示局部故障即可搜索某个应用,点某个应用后就会通过随机游走查找这个应用的故障根源。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1