Page 107 - 《软件学报》2021年第5期
P. 107

晋武侠  等:基于多源特征空间的微服务可维护性评估                                                       1331


                    (2)  获取源代码、修订历史、运行轨迹.
                               [7]
                    利用 Jin 等人 提供的功能测试案例驱动 JPetStore 运行,并使用 Kieker(http://kieker-monitoring.net/)工具监
                 控获取执行轨迹.源代码和修订历史由原始的系统提供.基于原始系统的源代码、运行轨迹、修订历史,使用本
                 文第 1 节提出的方法得出软件系统的多源特征空间.
                 3.3.2    Train-Ticket 数据收集
                    (1)  获取微服务的 E ser 、I、O.
                    使用 SCIToool Understand(https://scitools.com/)工具分析 Train-Ticket 的源代码,统计出每个微服务的实体
                 E ser 、接口 I 和操作 O,获取方法遵循本文第 2 节描述的微服务定义,该定义与文献[6]中的定义相同.表 3 展示了
                 Train-Ticket 微服务包含的实体数、接口数、操作数.可以观察到:构成 Tran-Ticket 的微服务规模比较微小,与微
                 服务的设计理念一致.
                                      Table 3    Statistics of microserivices in Train-Ticket system
                                             表 3  Train-Ticket 系统的微服务统计
                                         微服务名称           实体数|E ser|   接口数|I|   操作数|O|
                                    ts-admin-basic-info-service  10    1         21
                                      ts-admin-order-service  8        1         5
                                      ts-admin-route-service  7        1         4
                                      ts-admin-travel-service  12      1         5
                                      ts-admin-user-service  10        1         5
                                       ts-assurance-service  11        1         9
                                        ts-auth-service     20         2         6
                                        ts-basic-service    14         1         3
                                        ts-cancel-service   17         1         3
                                      ts-notification-service  10      1         5
                                        ts-config-service    8         1         6
                                     ts-consign-price-service  8       1         5
                                       ts-consign-service   10         1         6
                                       ts-contacts-service   9         1         8
                                       ts-execute-service    8         1         3
                                       ts-food-map-service  12         2         7
                                        ts-food-service     12         1         7
                                     ts-inside-payment-service  22     1         9
                                    ts-verification-code-service  6    1         2
                                      ts-order-other-service  18       1         16
                                        ts-order-service    18         1         16
                                       ts-payment-service   10         1         4
                                     ts-preserve-other-service  30     1         2
                                       ts-preserve-service  31         1         2
                                        ts-price-service     9         1         6
                                       ts-rebook-service    21         1         3
                                      ts-route-plan-service  15        1         4
                                        ts-route-service     9         1         6
                                        ts-seat-service     12         1         3
                                       ts-security-service  12         1         6
                                       ts-station-service    8         1         9
                                       ts-ticketinfo-service  11       1         3
                                        ts-train-service     8         1         6
                                       ts-travel2-service   23         1         12
                                      ts-travel-plan-service  17       1         5
                                        ts-travel-service   23         1         12
                                        ts-user-service     11         1         7
                    (2)  获取源代码、修订历史、运行轨迹.
                    Train-Ticket 项目提供了源代码和修订历史.实验部署好系统,按照系统维护者所共享的测试场景,人工操作
                 用户界面,Train-Ticket 系统集成了 Jaeger(https://www.jaegertracing.io/)监控,从而可以获取运行轨迹.
                 3.3.3    数据总结
                    JPetStore 和 Train-Ticket 上收集到的数据汇总结果见表 4.JPetStore 有两种拆分方案:拆分方案 A 形成 4 个
                 候选服务,拆分方案 B 形成 3 个微服务.从原始的单体 JPetStore 共收集到 47 条运行轨迹,每条运行轨迹对应一
   102   103   104   105   106   107   108   109   110   111   112