[发明专利]一种结合功能指标和非功能指标的自动化微服务识别方法有效
| 申请号: | 202010066666.2 | 申请日: | 2020-01-20 |
| 公开(公告)号: | CN111277650B | 公开(公告)日: | 2021-07-09 |
| 发明(设计)人: | 张煜堃;刘波 | 申请(专利权)人: | 南京航空航天大学 |
| 主分类号: | H04L29/08 | 分类号: | H04L29/08;G06F11/30;G06F11/34;G06N3/12 |
| 代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 颜盈静 |
| 地址: | 210016 江*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 结合 功能 指标 自动化 微服 识别 方法 | ||
本发明公开了一种结合功能指标和非功能指标的自动化微服务识别方法,该方法能够从遗留系统的可执行包中识别出合适并且负载均衡的微服务候选集合。
技术领域
本发明公开了一种结合功能指标和非功能指标的自动化微服务识别方法,属于微服务识别技术领域。
背景技术
软件系统通常需要被一直地维护和修改以适应需求的变换,目前将其中的一类系统划分为单体系统,单体系统通常将系统的所有业务逻辑,包括界面,数据都实现在一个应用程序之中,并且部署在单个进程之中。这类系统在小规模情况下具有开发和部署简易的优势,但随着系统的发展,修改,部署,更新的成本会快速上升,以至于到难以承受。
针对这样的问题,从基于服务架构(SOA)衍生出来的微服务架构逐渐获得了学术界的关注和工业界的落地,微服务架构描述了一种将应用程序构造为一组小型,定义明确,高内聚,低耦合,可独立部署,分布式和自治的服务(即微服务)的特定方式。每个微服务都旨在实现单个业务功能,该业务功能具有一个相对集成的领域模型,其中包括数据,逻辑和行为。它运行在自己的进程中(例如,像Tomcat这样的容器),通过轻量级机制(例如,HTTP的RESTish协议,或RabbitMQ等轻量级的消息总线)相互通信,并且在不影响其他服务的前提下独立地更新和扩展。具有以上特征为基于微服务的应用程序,相对于单体系统,在可维护性,可伸缩性和扩展性更具有优势。
尽管行业中微服务风格的架构的趋势似乎势不可挡,但它仍不是软件系统的主要形式。许多公司已经运行多年的单体系统仍在商业中提供着不可缺少的功能,贡献着举足轻重的价值。尽管旧有系统不断为所有者带来价值,但它们却带来不便,例如,对系统的一小部分进行更改需要重建并重新部署整个整体。目前的一个可行的选项是通过从现有软件工件中提取微服务来重新设计整体应用程序。
从单体遗留系统中识别微服务的方法分为两类:一类是静态识别方法,该方法依赖的是代码的结构,仓库信息,数据库信息或者其他静态信息;另一类是动态识别方法,该方法需要启动目标遗留系统,从而获得系统相关的动态信息。该方法在微服务识别问题上相对于静态方法的研究要少得多,而且现存的动态方法差异较大。
以下为代表静态方法的典型工作示例:
Mazlami【Extraction of Microservices from Monolithic SoftwareArchitectures】的工作将目标遗留系统的Git代码仓库作为方法的输入,仓库涵盖了代码文件,版本历史以及代码提交者等信息。这份工作将整个Git仓库抽象为一个三元组(CM,HM,DM),CM是当前版本的代码文件集合,Hm是修改历史,DM是开发者的共享者集合。HM被定义一个有序事件序列(h1,h2,...hn),每一个事件h又可以被表示为另一个三元组h=(E,t,d),E为这个事件所涉及修改,删除,增加的文件集合,t为事件戳,d为贡献者。然后将每一个代码文件作为一个图中节点,节点和节点之间的带权关系通过分析三元组的信息,从逻辑,语义和贡献者三个角度计算而得。最后在图上应用一个图划分算法,可以得到服务识别结果。其中当两个类在同一次提交中被修改时,两个类之间具有逻辑关系;当两个类被抽象成文本后,两者文本之间的相似性将作为语义关系;当两个类由同一个工程师进行修改时,两者在贡献者的角度上就被关联在一起。
以下为动态方法示例:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010066666.2/2.html,转载请声明来源钻瓜专利网。





