当前位置: 首页 > 专利查询>武汉大学专利>正文

一种面向云原生系统的微服务根因定位方法技术方案

技术编号:28986998 阅读:21 留言:0更新日期:2021-06-23 09:38
本发明专利技术公开了一种面向云原生系统的微服务根因定位方法,包括以下步骤:步骤S1:收集微服务系统的系统性能指标和SLO指标并存入时序数据库作为基础数据;步骤S2:采用DTW方法计算任意两个微服务在相应时间序列上的相似度,并对相似度集合进行聚类判断微服务系统是否出现异常;步骤S3:通过收集到的SLO指标中的HTTP请求和TCP请求建立服务依赖图SDG;步骤S4:结合服务请求链路调整各微服务节点的异常权重;步骤S5:采用PPR算法结合全局的服务依赖图SDG信息对异常节点进行定位。本发明专利技术的有益效果是:1)微服务系统出现的异常能够快速准确地检测,具有很好的实用性;2)通过结合服务请求,请求链路信息和服务依赖图信息,可以准确定位出现异常的具体微服务。

【技术实现步骤摘要】
一种面向云原生系统的微服务根因定位方法
本专利技术涉及服务计算
,尤其涉及一种面向云原生系统的微服务根因定位方法。
技术介绍
随着云计算、物联网、服务计算等技术的快速发展,用户对软件系统的需求越来越多样化,需求变化也越来越频繁,软件系统需要在稳定的服务集成和灵活的需求适应之间取得平衡。在传统的系统或服务中,如果出现异常,通常会通过日志和事件跟踪来监控。然后通过ELK工具定位和分析性能问题。随着业务越来越复杂,传统的日志监控等方法无法达到跟踪和故障诊断的需求,具有独立流程和部署能力的微服务技术得到了越来越多企业的青睐。微服务架构将单个应用开发为一套小业务组合的微服务系统,这些微服务可以独立部署,相互之间松散耦合。使用微服务架构的同时也带来一些问题:一旦某个微服务出现异常,由于微服务之间的协作复杂度较高,出现异常的微服务会不同程度地牵连到与其协作的所有微服务,导致其响应时间延迟、甚至停止服务。一般来说,微服务系统的根因定位首先要缩小故障范围,然后在复杂的微服务网络中梳理出之前的依赖关系,最后结合服务依赖信息,在短时间内准确定位出现异常的根源微服务。目前,微服务根因定位问题的挑战有:1)可扩展性:微服务系统的一个重要特点是可扩展性,一个微服务可能有很多副本,因而复杂化服务依赖网络,导致定位异常的难度加大。2)监控指标多:服务之间的通信量大且频繁,造成监控指标数量繁多。如Uber和OpenStack拥有500,000,000个指标,17608个指标。要从这些指标中准确定位性能问题,是一个很有挑战性的问题。3)高度动态的运行时环境:由于微服务系统的灵活扩展性,无论是创建还是删除微服务的副本,服务的IP都会动态变化。4)数据一致性:在大多数情况下,一个微服务维护独立的数据库。系统出现异常需要快速修复以保持数据的一致性,防止出现更大范围的异常。5)分布式部署:硬件和网络分布在不同的服务器和区域,增加了网络和定位的复杂性。面向云原生系统的微服务根因定位旨在利用调用链关系数据以及监控指标,在故障发生后进行故障定位,确定故障的类型以及具体的节点。虽然已有大量的微服务根因定位方法,这些方法基于度量和监控来诊断异常,同时结合服务依赖图比较每个服务的响应时间序列和前端微服务响应时间序列的相似性来对微服务节点进行故障排序。但是在定位过程中未考虑请求链路信息:在微服务系统中,一个服务请求从前端节点到目标节点,有明确的服务请求链路,如果目标节点出现异常,那么链路上的所有节点都会受到影响。本专利技术结合服务请求链路和服务依赖图提出一种面向云原生系统的微服务根因定位方法。
技术实现思路
本专利技术要解决的技术问题在于针对现有技术中的缺陷,提供一种面向云原生系统的微服务根因定位方法,能够准确地定位微服务系统中的异常微服务,并具有很好的实用性。本专利技术解决其技术问题所采用的技术方案是:本专利技术提供一种面向云原生系统的微服务根因定位方法,该方法包括以下步骤:步骤S1:收集微服务系统的系统性能指标和SLO指标并存入时序数据库作为基础数据,所述SLO指标表示ServiceLevelObjective指标;步骤S2:采用DTW方法计算任意两个微服务在相应时间序列上的相似度,并对相似度集合进行聚类判断微服务系统是否出现异常,所述DTW方法表示DynamicTimeWrapping方法;步骤S3:通过收集到的SLO指标中的HTTP请求和TCP请求建立服务依赖图SDG;步骤S4:结合服务请求链路调整各微服务节点的异常权重;步骤S5:采用PPR算法结合全局的服务依赖图SDG信息对异常节点进行定位,所述PPR算法表示PersonalizedPageRank算法。进一步地,本专利技术的步骤S1具体包括:步骤S1.1:收集微服务系统的系统性能指标,包括:微服务所在的物理机及docker容器的CPU利用率、内存利用率、网络交换速率;步骤S1.2:收集微服务系统的SLO指标,即在应用层面的指标,包括:HTTP请求总数、请求入站时间、请求出站时间、TCP请求;步骤S1.3:从微服务系统开始运行的时刻开始,每经过时间间隔interval将步骤S1.1和步骤S1.2收集到的各项指标存入时序数据库InfluxDB。进一步地,本专利技术的步骤S2具体包括:步骤S2.1:抽取时序数据库中所有微服务当前时刻时间窗口time_window的SLO指标中的请求入站时间序列rt_inbound和请求出站时间序列rt_outbound;其中请求入站时间inbound表示客户端微服务发送请求到服务端微服务收到请求的时间,请求出站时间outbound表示服务端微服务发送数据到客户端微服务收到数据的时间;步骤S2.2:对于每个微服务,计算该微服务在当前时间窗口的响应时间序列计为rt,rt=rt_inbound+rt_outbound;每经过时间间隔interval收集一次数据,在当前时间窗口time_window共有n=Ceiling(timw_window/interval)个inbound和outbound数据,其中Ceiling函数表示向上取整,即rt={rt_1,rt_2,…,rt_n};步骤S2.3:利用动态时间规整方法,即DTW方法,计算微服务系统中任意两个微服务在响应时间序列上的相似度;步骤S2.4:判断微服务系统是否出现异常。进一步地,本专利技术的步骤S2.3具体包括:利用DTW方法计算任意两个微服务在响应时间序列上的相似度方法如下:首先从时序数据库InfluxDB抽取两个微服务ms1和ms2在当前时间窗口下的响应时间序列ms1_rt和ms2_rt;然后将ms1_rt和ms2_rt作为动态时间规整DTW的输入,计算两个时间序列的距离d1;相同的步骤计算微服务系统中任意两个微服务在响应时间序列上的距离得到集合D={d1,d2,…,dn};最后对D进行归一化处理,得到微服务系统中任意两个微服务在响应时间序列上的相似度集合Sim={sim1,sim2,…,simn}。进一步地,本专利技术的步骤S2.4具体包括:判断微服务系统是否出现异常的具体方法是:使用K-Means聚类算法对步骤S2.3中得到的相似度集合做聚类处理;如最终聚类结果出现多个类别,即出现异常;如最终聚类结果仅一个类别,即未出现异常。进一步地,本专利技术的步骤S3具体包括:步骤S3:对于每一次服务请求根据步骤S1.2收集到的HTTP请求和TCP请求构建服务依赖图SDG;构建服务依赖图SDG的具体方法是:根据步骤S1.2中收集到的HTTP请求信息,从前端微服务frontend发出的HTTP请求和TCP请求经过微服务集合M={m1,m2,…,mk},对于微服务集合M中的每一个元素m,添加一条方向从前端微服务frontend到m的边E(frontend,m)至服务依赖图SDG,如果HTTP请求和TCP请求重复则对重复节点进行合并;对于微服务集合M={m1,m2,…,mk}中的每个微服务m本文档来自技高网
...

【技术保护点】
1.一种面向云原生系统的微服务根因定位方法,其特征在于,该方法包括以下步骤:/n步骤S1:收集微服务系统的系统性能指标和SLO指标并存入时序数据库作为基础数据,所述SLO指标表示Service Level Objective指标;/n步骤S2:采用DTW方法计算任意两个微服务在相应时间序列上的相似度,并对相似度集合进行聚类判断微服务系统是否出现异常,所述DTW方法表示Dynamic Time Wrapping方法;/n步骤S3:通过收集到的SLO指标中的HTTP请求和TCP请求建立服务依赖图SDG;/n步骤S4:结合服务请求链路调整各微服务节点的异常权重;/n步骤S5:采用PPR算法结合全局的服务依赖图SDG信息对异常节点进行定位,所述PPR算法表示Personalized PageRank算法。/n

【技术特征摘要】
1.一种面向云原生系统的微服务根因定位方法,其特征在于,该方法包括以下步骤:
步骤S1:收集微服务系统的系统性能指标和SLO指标并存入时序数据库作为基础数据,所述SLO指标表示ServiceLevelObjective指标;
步骤S2:采用DTW方法计算任意两个微服务在相应时间序列上的相似度,并对相似度集合进行聚类判断微服务系统是否出现异常,所述DTW方法表示DynamicTimeWrapping方法;
步骤S3:通过收集到的SLO指标中的HTTP请求和TCP请求建立服务依赖图SDG;
步骤S4:结合服务请求链路调整各微服务节点的异常权重;
步骤S5:采用PPR算法结合全局的服务依赖图SDG信息对异常节点进行定位,所述PPR算法表示PersonalizedPageRank算法。


2.根据权利要求1所述的面向云原生系统的微服务根因定位方法,其特征在于,步骤S1具体包括:
步骤S1.1:收集微服务系统的系统性能指标,包括:微服务所在的物理机及docker容器的CPU利用率、内存利用率、网络交换速率;
步骤S1.2:收集微服务系统的SLO指标,即在应用层面的指标,包括:HTTP请求总数、请求入站时间、请求出站时间、TCP请求;
步骤S1.3:从微服务系统开始运行的时刻开始,每经过时间间隔interval将步骤S1.1和步骤S1.2收集到的各项指标存入时序数据库InfluxDB。


3.根据权利要求1所述的面向云原生系统的微服务根因定位方法,其特征在于,步骤S2具体包括:
步骤S2.1:抽取时序数据库中所有微服务当前时刻时间窗口time_window的SLO指标中的请求入站时间序列rt_inbound和请求出站时间序列rt_outbound;其中请求入站时间inbound表示客户端微服务发送请求到服务端微服务收到请求的时间,请求出站时间outbound表示服务端微服务发送数据到客户端微服务收到数据的时间;
步骤S2.2:对于每个微服务,计算该微服务在当前时间窗口的响应时间序列计为rt,rt=rt_inbound+rt_outbound;每经过时间间隔interval收集一次数据,在当前时间窗口time_window共有n=Ceiling(timw_window/interval)个inbound和outbound数据,其中Ceiling函数表示向上取整,即rt={rt_1,rt_2,…,rt_n};
步骤S2.3:利用动态时间规整方法,即DTW方法,计算微服务系统中任意两个微服务在响应时间序列上的相似度;
步骤S2.4:判断微服务系统是否出现异常。


4.根据权利要求3所述的面向云原生系统的微服务根因定位方法,其特征在于,步骤S2.3具体包括:
利用DTW方法计算任意两个微服务在响应时间序列上的相似度方法如下:首先从时序数据库InfluxDB抽取两个微服务ms1和ms2在当前时间窗口下的响应时间序列ms1_rt和ms2_rt;然后将ms1_rt和ms2_rt作为动态时间规整DTW的输入,计算两个时间序列的距离d1;相同的步骤计算微服务系统中任意两个微服务在响应时间序列上的距离得到集合D={d1,d2,…,dn};最后对D进行归一化处理,得到微服务系统中任意两个微服务在响应时间序列上的相似度集合Sim={sim1,sim2,…,simn}。


5.根据权利要求4所述的面向云原生系统的微服务根因定位方法,其特征在于,步骤S2.4具体包括:
判断微服务系统是否出现异常的具体方法是:使用K-Means聚类算法对步骤S2.3中得到的相似度集合做聚类处理;如最终聚类结果出现多个类别,即出现异常;如最终聚类结果仅一个类别,即未出现异常。


6.根据权利要求2所述的面向云原生系统的微服务根因定位方法,其特征在于,步骤S3具体包括:
步骤S3:对于每一次服务请求根据步骤S1.2收集到的HTTP请求和TCP请求构建服务依赖图SDG;
构建服务依赖图SDG的具体方法是:根据步骤S1.2中收集到的HTTP请求信息,从前端微服务frontend发出的HTTP请求和TCP请求经过微服务集合M={m1,m2,…,mk},对于微服务集合M中的每一个元素m,添加一条方向从前端微服务frontend到m的边E(frontend,m)至服务依赖图SDG,如果HTTP请求和TCP请求重复则对重复节...

【专利技术属性】
技术研发人员:孙世磊张泽锟李兵王健
申请(专利权)人:武汉大学
类型:发明
国别省市:湖北;42

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

1