Page 161 - 《软件学报》2020年第11期
P. 161
丁丹 等:场景驱动且自底向上的单体系统微服务拆分方法 3477
间,这个总时间小于等于数据表、类和方法拆分时间的总和.最终的平均时间统计使用截尾平均数,即去掉一个
最长时间和一个最短时间后的 3 组数据的平均值,这样做的目的是降低极端值对结果的影响.
Table 6 Time records of manual decomposition (min)
表 6 人工拆分时间记录 (分)
项目名称 实验参与者 数据表拆分时间 类划分时间 方法划分时间 总分析时间
A 41 19 33 93
B 85 120 250 455
C 42 6 13 61
Spring JPetStore
D 45 20 20 65
E 90 195 645 930
截尾平均 57.3 53 101 204.3
A 49 38 55 142
B 150 100 300 550
C 68 14 22 104
zb-blog
D 57 35 35 92
E 110 220 755 1 085
截尾平均 78.3 57.7 130 265.3
A 44 34 43 121
B 60 150 240 450
C 72 20 48 140
Exam++
D 65 20 20 85
E 245 430 1410 2 085
截尾平均 65.7 68 110.3 237
A 67 52 82 201
B 120 80 240 440
C 91 53 103 247
JeeSite
D 80 40 40 120
E 190 320 1095 1 605
截尾平均 97 61.7 141.7 296
为了与人工拆分时间相对比,表 7 给出了使用 MSDecomposer 进行拆分的时间记录.其中,Kieker 配置时间
是指在实验系统中配置改造后的 Kieker 监控工具,并成功启动实验系统所经历的时间;场景整理时间是指分析
系统功能,并得到所有场景级别的用例和对应权重的时间;数据收集时间是指运行所有测试用例、获取监控日
志的时间;工具使用时间就是使用 MSDecomposer 从数据处理、运行拆分算法到生成最终拆分方案的时间.由
于这些操作是顺序发生的,所以总耗时就是前面 4 项操作耗时的总和.
Table 7 Time records of MSDecomposer Tool (min)
表 7 MSDecomposer 工具拆分时间记录 (分)
项目名称 Kieker 配置 场景整理 数据收集 工具使用 总耗时
Spring JPetStore 40 30 20 3 93
zb-blog 50 40 30 5 125
Exam++ 30 60 30 5 125
JeeSite 60 70 40 8 178
对比表 6 和表 7 的数据可知,人工拆分的平均总耗时都是大于工具拆分的总耗时的.这表明 MSDecomposer
的确能够加速整个拆分决策的过程.工具加速的主要环节在于给定数据表拆分方案的前提下,自底向上搜索获
取类和方法的拆分方案.同时,工具存在着很大的优化空间,其中,Kieker 的配置步骤根据项目结构、使用技术的
不同而不同,初始时需要耗费一定时间摸索配置,如果之后遇到类似的框架技术可以运用之前的经验减少配置
时间.除此之外,目前的数据收集是手动输入场景信息、点击按钮来区分不同场景的测试用例,以后可以考虑自
动化实现——导入场景信息与测试用例的映射文件、测试用例执行前后在回调函数内部调用相应接口自动实
现场景切换.
值得注意的是,5 位实验参与者对于同一系统经过人工分析得出的数据划分方案并不是完全相同的,差异
主要集中在拆分粒度上.以实验系统 JeeSite 为例,5 位实验参与者给出的数据表拆分方案对应的服务数量最少