System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于规则驱动的云原生架构挖掘与异味检测方法技术_技高网

一种基于规则驱动的云原生架构挖掘与异味检测方法技术

技术编号:40712935 阅读:4 留言:0更新日期:2024-03-22 11:15
本发明专利技术公开了一种基于规则驱动的云原生架构挖掘与异味检测方法,包括如下步骤:S1、从静态和动态两方面出发,获取目标云原生系统源代码及其运行时的调用链数据;S2、构建服务调用图;S3、提出完整的云原生架构元模型定义,基于此定义挖掘系统云原生架构,并对架构进行可视化;S4、利用定义的异味检测规则,对四种典型的云原生架构异味,即共享数据库、无API网关、手动配置、以及不稳定的交互进行架构异味检测;S5、结合目标云原生系统和专家意见对系统进行架构重构,消除云原生架构异味。该方法可以对云原生系统的架构进行结构化的分析和展示,对架构中各节点的重要程度进行评估,并显著提高典型的云原生架构异味的检测准确率。

【技术实现步骤摘要】

本专利技术涉及云原生架构挖掘和异味检测,具体指一种基于规则驱动的云原生架构挖掘与异味检测方法


技术介绍

1、云原生是一种构建和运行应用程序的方法,即应用在云上构建,且充分利用云资源的优势运行。随着docker和kubernetes等容器化技术的发展,各种服务和资源通过容器的形式组织了起来,为应用提供了灵活高效、稳定可靠的开发、部署和运行环境,解决了微服务架构应用难以部署和管理的缺陷,因此,云原生架构逐渐代替微服务架构,成为开发人员构建应用的首要选择。然而,在进行云原生架构设计时,开发人员未遵循设计原则,提出了一些不良的架构决策,这些架构决策可能会对系统质量产生负面影响,产生架构异味。这些架构异味不仅会破坏架构的完整性,造成架构的腐化,而且可能在整个开发周期中引发源源不断的问题,甚至导致后续开发失败。

2、现有的研究中,云原生架构挖掘和异味检测主要存在以下问题。首先,在数据源方面,大部分研究只考虑了系统的静态信息或者动态运行时信息,只有少数研究综合考虑了静态信息和动态信息,且针对云原生系统的研究更是极少。其次,绝大多数研究未给出规范的云原生架构定义,有些研究给出了云原生架构的元模型定义,但是给出的元模型定义不够全面,尤其是缺乏对配置等信息的定义,且忽略了对于架构中各节点重要性的讨论。再次,大多数研究的异味选择较为片面,仅考虑依赖或者仅考虑服务层面相关异味,缺乏针对云原生架构完整性的异味检测研究。


技术实现思路

1、为了解决现有研究云原生架构定义不完整,输入源不全面、异味检测不深入的问题,本专利技术提出了一种基于规则驱动的云原生架构挖掘与异味检测方法。该方法同时考虑云原生系统静态信息和动态运行时信息,依照元模型定义,构建符合规范的系统架构,并且利用定义的检测规则,对四种典型的云原生架构异味,即共享数据库、无api网关、手动配置和不稳定的服务交互进行检测。该方法对云原生系统的架构进行了结构化的分析和展示,并显著提高了典型的云原生架构异味检测的准确率。

2、为了解决上述技术问题,本专利技术的技术方案为:

3、一种基于规则驱动的云原生架构挖掘与异味检测方法,包括如下步骤:

4、s1.从静态和动态两方面出发,获取目标云原生系统源代码及其运行时的调用链数据,具体包括以下子步骤:

5、s11.从云原生系统在线地址获取源代码,以正则匹配的方式,从系统中提取kubernetes部署文件;

6、s12.部署云原生项目以及监控服务,收集运行时调用链数据,并保存为json文件。

7、s2.提取云原生架构相关信息,构建服务调用图,具体包括以下子步骤:

8、s21.根据kubernetes部署规范,云原生系统每个服务应有一个deployment类型部署文件用于资源部署,一个service类型部署文件用于提供访问入口。利用kubernetes的标签选择器机制,从s1中提取的kubernetes部署文件对deployment类型的部署文件和service类型的部署文件进行匹配;

9、s22.对于系统中任意一个节点ni(i∈[1,n]),利用正则匹配,从匹配后的部署文件提取元数据名称作为节点ni的全局唯一标识namei;

10、对于系统中任意一个节点ni(i∈[1,n]),利用正则匹配,从匹配后的部署文件提取镜像名称(image)、监控信息(mi)、部署类型(dtype),存入字典:

11、deployi={imagei,mii,dtypei}(i∈[1,n])

12、对于系统中任意一个节点ni(i∈[1,n]),利用正则匹配,从匹配后的部署文件提取配置信息(ci)、数据来源信息(dsi),利用xml解析模块elementtree,从系统源代码提取依赖信息(deps),存入字典:

13、envi={cii,dsii,depsi}(i∈[1,n])

14、对于系统中任意一个节点ni(i∈[1,n]),利用ast树解析,从系统源代码提取导入信息(imps)、注解信息(anns)、方法名(meths),存入字典:

15、codei={impsi,annsi,methsi}(i∈[1,n])

16、s23.将s22中提取出来的节点ni(i∈[1,n])信息的组合起来,存入字典ni={namei,deployi,envi,codei}(i∈[1,n]);

17、s24.在调用链中,span串联了一条完整的调用链数据。根据父子span的对应关系,从s1中提取的调用链数据中获取调用关系(spani→spanj)(spani是spanj的父span),依据s22中提取的节点监控信息mi与span名称的映射关系f→(ni.deploy.mi,span.spanname),将span和节点对应起来,从而获得节点ni,nj(i∈[1,n])的调用关系,存入字典ei,j={(ni→nj)}(i,j∈[1,n]);

18、s25.根据s23和s24的结果,构建服务调用图g={ni,ei,j}(i,j∈[1,n])。

19、s3.提出完整的云原生架构元模型定义,基于此定义挖掘系统云原生架构,并对架构进行可视化,具体包括以下子步骤:

20、s31.完整的云原生架构元模型定义如下:一个云原生架构系统(cloud-nativesystem,简称cs),由节点(node)和交互关系(relationship,简)组成,即cs={n,r}。其中节点按类型分为服务(service)、中间件(middleware)和存储(storage),即type={service,middleware,storage}。中间件的具体实例有网关、服务注册发现、配置中心,即instance={api gateway,service discovery,configuration server}。存储的具体实例有数据库。交互关系由容错(fault tolerance)和动态发现(dynamic discovery)组成,即r={faulttolerance,dynamicdiscovery};

21、s32.对于服务调用图g中任意一个节点ni(i∈[1,n]),根据typei=ftype(ni.deploy.image,ni.deploy.dtype,ni.env.dsi)判断节点类型,存入系统架构cs.n={(ni,typei)|i=1,2,3...,n};

22、s33.对于服务调用图g中的任意一条调用边ei,j(i,j∈[1,n]),根据ri=frelationship(ni.env.deps,ni.code)判断调用携带的交互关系,存入系统架构cs.r={(ei,j,ri)|i=1,2,...,n};

23、s34.利用pagerank算法,计算系统架构cs={n,r}中各节点的重要程度。计算公式为其中pr(a)i+1表示当前节点a第本文档来自技高网...

【技术保护点】

1.一种基于规则驱动的云原生架构挖掘与异味检测方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的一种基于规则驱动的云原生架构挖掘与异味检测方法,其特征在于,所述步骤S1中,Kubernetes部署文件提取方法为:正则匹配缀为.yaml和.yml的文件,调用链数据收集方式为:部署Skywalking监控服务,调用graphql接口获取数据。

3.根据权利要求1所述的一种基于规则驱动的云原生架构挖掘与异味检测方法,其特征在于,所述步骤S3中具体方法为:

4.根据权利要求3所述的一种基于规则驱动的云原生架构挖掘与异味检测方法,其特征在于,所述步骤3-4中,宠物医院系统架构中各节点的重要程度的计算方法为:

5.根据权利要求1所述的一种基于规则驱动的云原生架构挖掘与异味检测方法,其特征在于,所述步骤S4具体方法为:

6.根据权利要求1所述的一种基于规则驱动的云原生架构挖掘与异味检测方法,其特征在于,所述步骤S5具体方法为:

7.根据权利要求6所述的一种基于规则驱动的云原生架构挖掘与异味检测方法,其特征在于,所述步骤S5-4中,添加的容错策略包括断路器设置和超时设置。

...

【技术特征摘要】

1.一种基于规则驱动的云原生架构挖掘与异味检测方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的一种基于规则驱动的云原生架构挖掘与异味检测方法,其特征在于,所述步骤s1中,kubernetes部署文件提取方法为:正则匹配缀为.yaml和.yml的文件,调用链数据收集方式为:部署skywalking监控服务,调用graphql接口获取数据。

3.根据权利要求1所述的一种基于规则驱动的云原生架构挖掘与异味检测方法,其特征在于,所述步骤s3中具体方法为:

4.根据权利要求3所述的一种...

【专利技术属性】
技术研发人员:王思轩程淑涵俞东进金宝清陈信梁雄杰
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:

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

1