Page 110 - 《软件学报》2021年第5期
P. 110
1334 Journal of Software 软件学报 Vol.32, No.5, May 2021
change 值为 15,大于 95%的微服务对;且这对微服务的代码相似度值高达 96.4%.此外,ts-order-service 和 ts-order-
other-service 的 co-change 值为 26,代码相似度为 94%;ts-travel-service 和 ts-travel2-service 的 co-change 为 10,
代码相似度为 85.8%.可见,频繁发生跨服务修改的原因之一是微服务代码存在高度代码克隆:当一个微服务发
生修改时,与之代码相似的微服务需同步更新,从而发生频繁跨服务修改,导致难以独立更新和演化.
Fig.4 Statistical chart of the code similarity between microservice pairs in Train-Ticket system
图 4 Train-Ticket 系统中微服务间源代码相似度统计图
图 5 展示微服务 ts-travel-service、ts-travel2-service、ts-order-service、ts-order-other-service 的 idd 值相对
偏高,意味着它们频繁被其他微服务调用来处理用户请求.ts-admin-basic-info-service 的 odd 值相对偏高,说明此
微服务经常调用其他服务来完成功能.SCN 度量值为 2,即 2 对服务间存在循环依赖,分别是 ts-seat-service 和
ts-travel-service 间、ts-seat-service 和 ts-travel2-service 间.
(a) odd,idd 值的箱线图
(b) odd,idd 值的曲线图
Fig.5 Measurements of odd, idd for microservices in Train-Ticket system
图 5 Train-Ticket 系统中微服务的 odd、idd 度量结果
图 6 展示了 isg 和 icl 度量值的分布和详情.在去冗余后的 40 条代表性的 trace 中,70%的 trace 的 isg 值等
于 2、icl 值等于 1,即系统处理用户请求时常常经由 2 个微服务处理、平均涉及 1 次跨服务调用.但是,ID 为
532ee705767389b、f4f859e39007036、c8d065b0825594d 这 3 条 trace 的 isg 和 icl 值比其他 trace 明显高,说明