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 个不同条件下的候选
   68   69   70   71   72   73   74   75   76   77   78