Page 65 - 《软件学报》2021年第5期
P. 65
李杉杉 等:一种优化的数据流驱动的微服务化拆分方法 1289
系统业务需求的了解所确定的数据库中心表.
效率方面,优化前的 DFD 方法中,通过手动构建数据流图的方式来分析用于微服务化拆分的数据流信息,
包括业务操作之间和业务操作与数据存储之间的交互信息.数据流图的手动构建与分析耗时较长,本文探究了
一种自动化的数据流信息收集与分析方法,将有助于大幅度提升 DFD 方法的应用效率.
现有研究中,动态链路追踪技术 [18] 和静态源码分析技术 [16,17] 等都可以帮助实现本文所需要的数据流信息
的自动收集,从而达到效率优化的目的.动态链路追踪本身是为故障定位而提出的一种系统行为特征的动态分
析技术,为了锁定故障根源,需要获取业务操作的执行链路信息,包括操作与操作、操作与数据库之间的交互信
息 [18] ,而这些信息正是应用 DFD 方法进行拆分所需要分析的;类似地,静态分析技术可以帮助获得软件系统源
码的静态结构特征,包括类、方法之间的静态关联关系.前文已经提到单一视角下的数据分析无法全面获取系
统的实际特征的问题,有鉴于此,本文采用动静态分析相结合的方式来帮助从遗留系统中更加客观高效地收集
数据流信息(业务操作之间和业务操作与数据存储之间的交互信息),旨在保证数据分析全面性的基础上,解决
DFD 方法中人工的数据流图构建与分析效率不高的问题.
灵活性方面,本文依据自动化收集的数据流信息生成带权图,继而选用成熟的图聚类算法来优化 DFD 方法
中基于自定义规则、不支持调整的微服务化拆分,基于 Kruskal 的最小生成树聚类算法支持通过参数的设置来
定制服务的拆分方案,可以在保证所拆分微服务合理性的基础上,大幅度提升微服务化拆分的灵活性.此外,可
以通过实现原型工具的方式来支持从数据收集分析、服务拆分到候选微服务评估以及候选微服务再调整的整
个全自动过程,帮助进一步提高微服务化拆分的效率和灵活性.
2.2 整体流程
本文针对前面讨论的现有数据流驱动的微服务化拆分方法 DFD 的缺陷问题进行改进,提出了更加优化的
微服务化拆分方法 DFD-A.改进后的 DFD-A 方法包括 3 个阶段,即基于动静态分析技术相结合的数据流信息收
集、基于最小生成树的业务微服务化拆分和基于 K-means 的数据存储拆分.方法的整体流程如图 3 所示.
Fig.3 Process of the optimized microservices-oriented decomposition method driven by dataflow
图 3 优化的数据流驱动的微服务化拆分方法过程
具体来讲,首先通过动态链路追踪技术与静态字节码解析技术相结合的方式来更准确高效地收集能客观
反映内聚耦合程度的动静态数据交互信息(包括操作与操作、操作与数据存储之间的交互).在此基础上构建带