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 条运行轨迹,每条运行轨迹对应一