System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及云原生架构挖掘和异味检测,具体指一种基于规则驱动的云原生架构挖掘与异味检测方法。
技术介绍
1、云原生是一种构建和运行应用程序的方法,即应用在云上构建,且充分利用云资源的优势运行。随着docker和kubernetes等容器化技术的发展,各种服务和资源通过容器的形式组织了起来,为应用提供了灵活高效、稳定可靠的开发、部署和运行环境,解决了微服务架构应用难以部署和管理的缺陷,因此,云原生架构逐渐代替微服务架构,成为开发人员构建应用的首要选择。然而,在进行云原生架构设计时,开发人员未遵循设计原则,提出了一些不良的架构决策,这些架构决策可能会对系统质量产生负面影响,产生架构异味。这些架构异味不仅会破坏架构的完整性,造成架构的腐化,而且可能在整个开发周期中引发源源不断的问题,甚至导致后续开发失败。
2、现有的研究中,云原生架构挖掘和异味检测主要存在以下问题。首先,在数据源方面,大部分研究只考虑了系统的静态信息或者动态运行时信息,只有少数研究综合考虑了静态信息和动态信息,且针对云原生系统的研究更是极少。其次,绝大多数研究未给出规范的云原生架构定义,有些研究给出了云原生架构的元模型定义,但是给出的元模型定义不够全面,尤其是缺乏对配置等信息的定义,且忽略了对于架构中各节点重要性的讨论。再次,大多数研究的异味选择较为片面,仅考虑依赖或者仅考虑服务层面相关异味,缺乏针对云原生架构完整性的异味检测研究。
技术实现思路
1、为了解决现有研究云原生架构定义不完整,输入源不全面、异味
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所述的一种基于规则驱动的云原生架构挖掘与异味检测方法,其特征在于,所述
...【技术特征摘要】
1.一种基于规则驱动的云原生架构挖掘与异味检测方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的一种基于规则驱动的云原生架构挖掘与异味检测方法,其特征在于,所述步骤s1中,kubernetes部署文件提取方法为:正则匹配缀为.yaml和.yml的文件,调用链数据收集方式为:部署skywalking监控服务,调用graphql接口获取数据。
3.根据权利要求1所述的一种基于规则驱动的云原生架构挖掘与异味检测方法,其特征在于,所述步骤s3中具体方法为:
4.根据权利要求3所述的一种...
【专利技术属性】
技术研发人员:王思轩,程淑涵,俞东进,金宝清,陈信,梁雄杰,
申请(专利权)人:杭州电子科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。