Page 73 - 《软件学报》2021年第5期
P. 73
李杉杉 等:一种优化的数据流驱动的微服务化拆分方法 1297
Table 6 Evaluation of the decomposition results of the Level 1 dataflow diagram
of the case Jpetstore using the DFD method (n=4)
表 6 Jpetstore 案例应用 DFD 方法对第 1 层的数据流图拆分方案的评估结果(n=4)
微服务 Ce Ca I RC
ProductService 1 7 0.125 1.444 4
AccountService 3 3 0.4 2.2
OrderService 6 1 0.857 1 2.166 6
CartService 3 2 0.6 1.714
系统(Cv) − − 0.541 1 0.168 4
系统(Avg) − − 0.495 5 1.881 3
Table 7 Evaluation of the decomposition results of the case Jpetstore using the DFD-A method
表 7 Jpetstore 案例应用 DFD-A 方法拆分方案的评估结果
微服务 Ce Ca I RC
ProductService 1 7 0.125 1.444 4
AccountService 2 3 0.5 (−) 2.0 (−)
OrderService 5 3 0.555 5 (+) 2.153 8 (−)
CartService 3 2 0.6 1.714 2
系统(Cv) − − 0.422 (+) 0.148 7 (+)
系统(Avg) − − 0.445 1 (+) 1.828 1 (−)
“+”:指标效果较优;“−”:指标效果较劣
通过对比表 6 和表 7 可以发现,本文提出的优化方法 DFD-A 以及原有的 DFD 方法都将 Jpetstore 案例划分
为了 4 个微服务,分别是 Product 服务、Order 服务、Account 服务和 Cart 服务.其中:Product 和 Cart 这两个服务
在划分结果上是一致的,且 CE,CA,I,RC 指标上表现相同;两个方法得到的结果差异主要是 Account 服务和 Cart
服务,从个体服务层面来看,DFD-A 方法仅在 Order 服务的稳定性上优于 DFD 方法.但是比较每个服务的在稳定
性和内聚性上的数值可以发现:DFD-A 方法中表现稍劣于 DFD 方法的指标,即 Account 服务的 I(差值 0.1)、
Account 服务的 RC(差值 0.2)和 Order 服务的 RC(差值 0.01).而 DFD-A 方法中优于 DFD 方法的指标是 Order
服务的 I,其与 DFD 中 Order 服务的不稳定性差值为 0.3.从拆分后整体系统的指标来看,DFD-A 方法则在 3 个指
标上表现出优势:首先,各个服务之间的稳定性和内聚性差异变得更小;其次,在稳定性的均值上,表现得比 DFD
方法更低,表明 DFD-A 拆分后整体系统的稳定性更优.整体来讲,指标结果对比与分析说明了本文所提出的优
化的数据流驱动的微服务化拆分方法 DFD-A 的有效性.
Table 8 Evaluation of the nine decomposition results of Jpetstore using the DFD-A method (system level)
表 8 DFD-A 方法 9 种拆分方案的系统层级指标计算结果
方法 方案 I_Cv RC_Cv I_Avg RC_Avg 排名总和
DFD 方案 0-DFD 0.541 1 (9) 0.168 4 (5) 0.495 5 (7) 1.881 3 (2) 23
方案 1(动) 0.340 7 (4) 0.098 (2) 0.381 4 (2) 1.815 8 (4) 12
DFD-A (n=3) 方案 2(静) 0.323 7 (3) 0.627 7 (8) 0.627 7 (10) 1.316 (8) 29
方案 3(动+静) 0.229 2 (1) 0.076 1 (1) 0.477 7 (5) 1.919 9 (1) 8
方案 4(动) 0.613 4 (10) 0.128 3 (2) 0.381 2 (1) 1.763 3 (5) 18
DFD-A (n=4) 方案 5(静) 0.318 8 (2) 0.660 6 (9) 0.495 8 (8) 1.147 4 (9) 28
方案 6(动+静) 0.422 (5) 0.148 7 (4) 0.445 1 (3) 1.828 1 (3) 15
方案 7(动) 0.452 2 (8) 0.302 4 (7) 0.49 (6) 1.495 2 (7) 28
DFD-A (n=5) 方案 8(静) 0.422 5 (6) 0.681 2 (10) 0.447 7 (4) 1.092 4 (10) 30
方案 9(动+静) 0.433 8 (7) 0.285 9 (6) 0.505 (9) 1.559 5 (6) 28
2) 灵活性
为了展示 DFD-A 方法的灵活性,同时进一步说明 DFD-A 方法采用动静态分析相结合的方式来支持拆分的
有效性,本文在预期微服务个数 n 为 3,4,5 的设置条件下,分别实现了 3 种类型的数据收集:动态数据、静态数据、
动态+静态数据(本文方法),并使用所开发的工具原型完成分析与微服务化拆分,得到了 9 个不同条件下的候选